開発

cargoのオプション/サブコマンド一覧

オプション説明
実行時にcargoではなくパッケージ(main)側にオプションを渡す。cargo run -- -d abcde123
-V, –versionバージョン情報の表示。cargo -V
-v, -vv, –verbose詳細に出力する。cargo check -v
-q, –quietstdoutに出力しない。余計な表示をしないようにする。cargo run -q
-h, –helpオプション等の情報の表示。
cargo help [subcommand] でサブコマンドのオプションを表示する。
cargo -h
cargo help update
benchベンチマークを実行する。[#bench]アトリビュートの付いたものが対象。cargo bench
buildパッケージのコンパイル。cargo build
checkパッケージの分析、文法チェック(コンパイルなし)cargo check -v
cleantargetディレクトリの削除。cargo clean --release
clippycargo checkは文法寄りのチェックだけだが、もう少し賢いチェックを行ってくれる。詳しくはこちらcargo clippy
docドキュメントの作成。cargo doc
fetch依存関係のあるパッケージをネットワーク経由で取得する。cargo fetch
fixwarningがあった場合、自動的に修正する(ソースコード変更あり)。詳しくはこちらcargo fix
fmtソースコードを整形する。cargo fmt
generate-lockfileCargo.lockの生成。cargo generate-lockfile
init新しいパッケージ(プロジェクト)の作成。デフォルトは–binオプション付き。
newサブコマンドの場合は、パッケージ名と同じディレクトリがあるとエラーになるがinitサブコマンドの場合は作成できる(ただしディレクトリにCargo.tomlがあると失敗する)
cargo init new_app_name
installバイナリクレートのインストール。デフォルトのインストール先は$HOME/.cargo/bincargo install ripgrep
locate-projectJSON形式でCargo.tomlの場所を表示する。cargo locate-project
logincrates.ioのトークンを保存する。保存先は$CARGO_HOME/credentials.toml
パッケージをアップロードにする際に必要。詳しくはこちら
cargo login user_abcde123
metadataパッケージの依存関係等のメタ情報をJSON形式で出力する。cargo metadata --format-version=1
miri内部のインタプリタ。nightlyな機能を試すときに使用する???。詳しくはこちら。あるいはこちらcargo miri run
new新しいパッケージ(プロジェクト)の作成。デフォルトは–binオプション付き。cargo new new_app_name --bin
cargo new new_lib_name --lib
ownerパッケージのオーナー情報の管理。パッケージをチームで作成している場合、アップロードできるようにするためのもの。詳しくはこちら
packageアップロードするためのパッケージファイルの作成。target/packageディレクトリに作成される。詳しくはこちらcargo package
cargo package --list
pkgid使用しているパッケージのSPEC情報(URL形式ぽいもの)を表示する。使用していないパッケージを指定するとアンマッチでエラーとなる。詳しくはこちらcargo pkgid anyhow
publish作成したパッケージをcrates.ioにアップロードする。詳しくはこちらcargo publish new_pkg_name
read-manifestDeprecated
代わりにcargo metadata –no-deps
runパッケージ(プロジェクト)の実行。cargo run --release
rustcコンパイル時にオプションを渡したいときに使用する。rustcのオプション等はこちら
rustdocドキュメント作成時にオプションを渡したいときに使用する。rustdocのオプション等はこちら
searchcrates.ioのパッケージを検索する。cargo search keyword_abcde123
testテストを実行する。[#test]アトリビュートの付いたものが対象。cargo test
tree使用しているパッケージの依存関係をツリー表示する。cargo tree
uninstallバイナリクレートのアンインストール。cargo uninstall ripgrep
updateCargo.lockの依存関係の更新。cargo update -p pkg_name
cargo update --dry-run
vendorvendorディレクトリを作成して依存関係のあるパッケージをそこに集約する。cargo vendor
verify-projectCargo.tomlのバリデーションcargo verify-project
versioncargoのバージョン情報の表示をする。cargo version
yank作成したパッケージをcrates.ioから削除する。詳しくはこちらcargo yank new_pkg_name

cargo 1.45.0をベースに作成しています。すべて試したわけではないので間違っている部分があるかもしれません。

詳細、公式情報はcargo bookを参照ください。

その他関連ツール

コマンド説明
rustup self updaterustup自身のアップデート
rustup update stable最新の安定版へ更新
rustup toolchain listインストール済みのツールチェインの一覧
rustc --version
rustup show
バージョンの確認
rustup toolchain add [version]指定バージョンのインストール
rustup default [version]指定バージョンのrustを使用するようにする。指定はツールチェインの一覧のバージョン情報を使用する。
プロジェクトフォルダーにrust-toolchain.toml あるいは rust-toolchainファイルを作成してバージョン情報を含ませるとプロジェクト内でバージョンを固定できる。詳しくはこちら

cargo fixの動作

例えば下記のようなコードをcargo checkすると

fn main() {
    let a = 1;
}

下記のようにwarningが出ます。修正しないでもコンパイルできますがcargo fixを実行すると自動でwarning内容に従ってコードを修正してくれます。

warning: unused variable: `a`
 --> src/main.rs:2:9
  |
2 |     let a = 1;
  |         ^ help: if this is intentional, prefix it with an underscore: `_a`
  |
  = note: `#[warn(unused_variables)]` on by default

warning: 1 warning emitted

cargo fixを実行すると下記のように修正されます。

fn main() {
    let _a = 1;
}

cargo clippyの動作

例えば下記のようなコードをcargo checkすると

fn main() {
    let x = 3.14;
}

下記のようにwarningが出ます。

warning: unused variable: `x`
 --> src/main.rs:2:9
  |
2 |     let x = 3.14;
  |         ^ help: if this is intentional, prefix it with an underscore: `_x`
  |
  = note: `#[warn(unused_variables)]` on by default

warning: 1 warning emitted

一方、cargo clippyを実行すると3.14を円周率と判断して下記のようなエラーを出してstd::f32::consts::PI等を使用するように促してくれます。cargo checkを既に実行しているとclippyのメッセージは出ないようです。

warning: unused variable: `x`
 --> src/main.rs:2:9
  |
2 |     let x = 3.14;
  |         ^ help: if this is intentional, prefix it with an underscore: `_x`
  |
  = note: `#[warn(unused_variables)]` on by default

error: approximate value of `f{32, 64}::consts::PI` found. Consider using it directly
 --> src/main.rs:2:13
  |
2 |     let x = 3.14;
  |             ^^^^
  |
  = note: `#[deny(clippy::approx_constant)]` on by default
  = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#approx_constant

error: aborting due to previous error; 1 warning emitted
Tags: rust
管理人

Recent Posts

CanvaがSerif (Affinity) を買収

私は使ったことがないのですが名前はよく聞…

3週間 ago

Serifのスプリングセール – アドオンが50%オフ

Affinity Photoなどレタッチ…

1か月 ago

音声がロボットのようになるときの対処

リモート会議などでたまに相手の音声がおか…

3か月 ago

Serifのブラックフライデー – 全品40%オフ V1ユーザは更にお得!

恒例のブラックフライデーセールが始まりま…

5か月 ago

[rust] rayonで書き直してみました

前回のコードを元にrayonを使った処理…

5か月 ago

[rust] async-stdで書き直してみました

前回のコードをasync-stdで書き直…

6か月 ago