この document の方向性。
言語コンセプトですね。
簡単に言えば、この言語を使うと何が嬉しいんだっけ?というやつです。
rustup
rustc
) や language server などを install するときに使うcargo
rustup
は最初の install 時のみ使う。基本的な作業としては cargo
を使うcargo
自体は binarycargo new
)cargo check
)cargo build
)cargo run
)cargo test
)cargo doc
)cargo publish
)cargo install
)rust-lang/rustfmt
という同じ母体のデファクトツールが有る///
や //!
といった通常のコメント (//
) とことなる特殊なコメントを書けるcargo doc
で HTML 形式のドキュメントを自動生成できるcargo test
tests
directory に書くcargo bench
というベンチマーク用のコマンドもあるcargo build
で library や binary を生成するcargo build --target
でクロスコンパイルできる
x86_64-unknown-linux-musl
を target にすれば良い$ rustup target list | pr -w 90 --column=3
aarch64-apple-darwin i586-unknown-linux-musl thumbv6m-none-eabi
aarch64-apple-ios i686-linux-android thumbv7em-none-eabi
aarch64-fuchsia i686-pc-windows-gnu thumbv7em-none-eabihf
aarch64-linux-android i686-pc-windows-msvc thumbv7m-none-eabi
aarch64-pc-windows-msvc i686-unknown-freebsd thumbv7neon-linux-androideabi
aarch64-unknown-linux-gnu i686-unknown-linux-gnu thumbv7neon-unknown-linux-gnu
aarch64-unknown-linux-musl i686-unknown-linux-musl thumbv8m.base-none-eabi
aarch64-unknown-none mips-unknown-linux-gnu thumbv8m.main-none-eabi
aarch64-unknown-none-softfloa mips-unknown-linux-musl thumbv8m.main-none-eabihf
arm-linux-androideabi mips64-unknown-linux-gnuabi64 wasm32-unknown-emscripten
arm-unknown-linux-gnueabi mips64-unknown-linux-muslabi6 wasm32-unknown-unknown
arm-unknown-linux-gnueabihf mips64el-unknown-linux-gnuabi wasm32-wasi
arm-unknown-linux-musleabi mips64el-unknown-linux-muslab x86_64-apple-darwin
arm-unknown-linux-musleabihf mipsel-unknown-linux-gnu x86_64-apple-ios
armebv7r-none-eabi mipsel-unknown-linux-musl x86_64-fortanix-unknown-sgx
armebv7r-none-eabihf nvptx64-nvidia-cuda x86_64-fuchsia
armv5te-unknown-linux-gnueabi powerpc-unknown-linux-gnu x86_64-linux-android
armv5te-unknown-linux-musleab powerpc64-unknown-linux-gnu x86_64-pc-windows-gnu
armv7-linux-androideabi powerpc64le-unknown-linux-gnu x86_64-pc-windows-msvc
armv7-unknown-linux-gnueabi riscv32i-unknown-none-elf x86_64-rumprun-netbsd
armv7-unknown-linux-gnueabihf riscv32imac-unknown-none-elf x86_64-sun-solaris
armv7-unknown-linux-musleabi riscv32imc-unknown-none-elf x86_64-unknown-freebsd
armv7-unknown-linux-musleabih riscv64gc-unknown-linux-gnu x86_64-unknown-illumos
armv7a-none-eabi riscv64gc-unknown-none-elf x86_64-unknown-linux-gnu (ins
armv7r-none-eabi riscv64imac-unknown-none-elf x86_64-unknown-linux-gnux32
armv7r-none-eabihf s390x-unknown-linux-gnu x86_64-unknown-linux-musl
asmjs-unknown-emscripten sparc64-unknown-linux-gnu x86_64-unknown-netbsd
i586-pc-windows-msvc sparcv9-sun-solaris x86_64-unknown-redox
i586-unknown-linux-gn
rust
という拡張を入れるCargo.toml
という node.js でいう package.json
みたいなファイルに edition = 2018
のように書くmut
keyword を使うResult<T, E>
という Result 型 (enum) を返すように書くenum Rusult<T, E> {
Ok(T),
Err(E)
panic!
マクロが用意されている
?
演算子
Err
なら即座に return する (例外のようなもの)and_then
や unwrap
のようなメソッドanyhow
や thiserror
といった、抽象的なエラー型を集めたり生成するライブラリOption<T>
という Option 型 (enum) を使うenum Option<T> {
None,
Some(T),
}