Hello, Cargo!
Cargo に触れた時のメモです。
Cargo の役割 #
はじめる によると Cargo は
- コードのビルド
- コードが依存するライブラリのダウンロード
- それらのライブラリのビルド
を担うそうです。
パスを通す #
.zshrc に source $HOME/.cargo/env
など書きます。
その後、 source ~/.zshrc
などすると cargo
コマンドが使えるようになります。
$ cargo --version
cargo 0.21.0 (5b4b8b2ae 2017-08-12)
cargo new #
$ cargo new rust_hello_cargo --bin
Created binary (application) `rust_hello_cargo` project
rust_hello_cargo
というディレクトリができて、適当にファイルが作られています。
$ cd rust_hello_cargo
$ ls
Cargo.toml src
Cargo.toml
は以下のような内容になっています。
[package]
name = "rust_hello_cargo"
version = "0.1.0"
authors = ["kyokutyo <kyokutyo@gmail.com>"]
[dependencies]
main.rs
を編集、 cargo run
する #
main.rs
は src
ディレクトリ内にあります。適当にテキストを変えます。
// main.rs
fn main() {
println!("Hello, Cargo!");
}
$ cargo run
Compiling rust_hello_cargo v0.1.0 (file:///Users/kyokutyo/path/to/rust_hello_cargo)
Finished dev [unoptimized + debuginfo] target(s) in 1.45 secs
Running `target/debug/rust_hello_cargo`
Hello, Cargo!
$ cargo run
Finished dev [unoptimized + debuginfo] target(s) in 0.0 secs
Running `target/debug/rust_hello_cargo`
Hello, Cargo!
cargo run
は src に変更があればビルド&実行、変更がなければ実行のみ行うそうです。
リリースビルドしてみる #
$ cargo build --release
Compiling rust_hello_cargo v0.1.0 (file:///Users/kyokutyo/path/to/rust_hello_cargo)
Finished release [optimized] target(s) in 0.23 secs
target
に release
というディレクトリができています。
$ ./target/release/rust_hello_cargo
Hello, Cargo!
リリースビルドでは最適化されたバイナリが作られるそうですが、 Hello, Cargo! の出力だけなのであれです。
- Next: Promise の挙動確認
- Previous: cherry-pick には tig が便利