Cargoの便利機能


目的

Rustのツールについて知る

WEB上でのRustお試し

URL

Cargo

ビルドシステムであり、パッケージマネージャー。
cargo buildでビルドできる。必要なライブラリのダウンロードとコンパイルを実施。

Cargo test / cargo-tarpaulin

Cargo testでテスト実施可能
Rust Unit Testとカバレッジ計測

Cargo fix

ビルド時のwarningを自動で修正してくれる機能。

qiita.rs
fn main() {
  let a=1;//未使用変数なので_をつけるべき

  let mut s="Hello World";//書き換えていないのでmutは必要ない

}

ビルドはできるがwarningが出ている。

cargo fixで修正される。

Cargo doc

ソースコードと依存関係にあるクレート(Cでいうリンク関係にあるファイル)のドキュメント作成を行ってくれる。

以下のような関数とtraitを実装した場合。

qiita.rs
//共通のメソッドを実装するように促す仕組み
//これがないと同じ名前の関数は使用できない
trait  Show{
  fn show(&self);
}

struct Car;
struct RacingCar;

//implで構造体にメソッドを持たせる
impl Show for Car{
  fn show(&self){
    println!("Car");
  }
}

impl Show for RacingCar{
  fn show(&self){
    println!("RacingCar");
  }
}

fn main() {
  let car=Car{};
  car.show();//静的ディスパッチ

  let caa=RacingCar{};
  caa.show();//静的ディスパッチ

  let Car_vec:Vec<Box<dyn Show>>=vec![Box::new(Car),Box::new(RacingCar)];
  for i in Car_vec{
    i.show();//動的ディスパッチ
  }

}

どのようなfunctionやtraitがあるか、どの構造体にmethodが追加されているかなどがわかる。linkをポチポチして飛べる。

Cargo flamegraph

関数呼び出しのプロファイル結果を可視化したグラフを出力してくれる機能。
プロファイリング