Cargo.tomlで設定する
CargoはRustのプロジェクト、ビルド、依存関係を管理します。プロジェクトを作ると、パッケージ名やEditionなどがCargo.tomlに記録されます。
Cargo.tomlTOML
[package]
name = "hello-rust"
version = "0.1.0"
edition = "2021"
[dependencies]よく使うコマンドCOMMAND
cargo check
cargo runテストを実行する
#[test]を付けた関数はcargo testで実行できます。通常の入力だけでなく、空や境界値もテストしましょう。
テストを書くRUST
fn double(value: i32) -> i32 { value * 2 }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn double_works() {
assert_eq!(double(4), 8);
}
}実行結果OUTPUT
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00sclippyとreleaseビルド
cargo clippyは、コンパイルできても改善できる書き方を指摘します。公開用にはcargo build --releaseで最適化したバイナリを作ります。
品質チェックとビルドCOMMAND
cargo fmt
cargo clippy
cargo test
cargo build --release外部クレートを使う
追加ライブラリはcrates.ioで探し、Cargo.tomlの[dependencies]に記載します。ライセンス、更新状況、必要な機能を確認してから導入しましょう。
依存関係の確認
Cargo.lockも含めて変更を確認し、不要なクレートを増やさないようにします。トレイトとジェネリクス
トレイトは型が持つ共通の振る舞いを定義し、ジェネリクスは複数の型で使える関数を作ります。T: PartialOrdのようにトレイト境界を付けると、比較できる型だけを受け取れます。
トレイト境界を使うRUST
fn larger<T: PartialOrd>(left: T, right: T) -> T {
if left > right { left } else { right }
}
fn main() {
println!("{}", larger(10, 23));
}実行結果OUTPUT
23練習
これまでの関数に境界値テストを追加し、cargo fmt、cargo clippy、cargo testを順番に実行してみましょう。