プロジェクト

全般

プロフィール

Cargo

Rust言語の標準ビルドツールで、ビルドとパッケージ管理を行います。
ソースコードからのビルド、依存ライブラリのダウンロードとビルド、リンクなどを行います。

パッケージ

他のプログラミング言語におけるプロジェクトと似た概念です。
パッケージには、クレートと呼ぶコンパイル(翻訳単位)が1つ以上含まれます。
クレートには実行ファイルを生成するバイナリクレートと、ライブラリファイルを生成するライブラリクレートの2種類があります。
パッケージは最低1つのクレートを保持しています。バイナリクレートについては、複数のクレートを保持することができます。
ライブラリクレートについては、0または1つのクレートを保持することができます。

パッケージの定義

パッケージディレクトリに置かれた Cargo.toml ファイルにパッケージ定義を記述します。

雛形のパッケージ定義

cargo new コマンドで生成した雛形のパッケージ定義です。

[package]
name = "hello" 
version = "0.1.0" 
edition = "2021" 

[dependencies]
  • [package] セクションに、パッケージ名、パッケージバージョン、Rustのエディションを定義しています。
  • パッケージ名は、ライブラリクレートがあればその生成するターゲット名になります。
  • バイナリクレートがある場合、src/main.rsのバイナリクレートのターゲット名になります。
  • [dependencies] セクションに依存するライブラリがあれば記述します。

操作方法

パッケージの作成

cargo newコマンドでパッケージを生成します。

D:\work> cargo new hello
     Created binary (application) `hello` package

D:\work> cd hello
D:\work\hello>

デフォルトでは実行可能バイナリファイルを作成するパッケージを生成。次のファイルが生成されます。

hello\
├  .gitignore
├  Cargo.toml
└─src\
     └ main.rs

ライブラリクレートを持つパッケージの生成

cargo new <パッケージ名> --lib でライブラリクレートを持つパッケージを生成します。

hello_lib\
├  .gitignore
├  Cargo.toml
└─src\
     └ lib.rs

複数のバイナリクレートを持つパッケージの生成

Cargo.tomlに定義を記述する方法と、src/binディレクトリの下に main関数を持つソースファイルを作成する方法があります。

以下は、binディレクトリの下に、main関数を持つ afla.rs と bravo.rs を配置した例です。ソースファイル名と同じバイナリクレート名を持つ alfaクレート、bravoクレートとなります。

hello\
├  .gitignore
├  Cargo.toml
└─src\
     └ main.rs
     └─bin\
        ├ alfa.rs
        └ bravo.rs

ビルド

cargo buildコマンドでパッケージをビルドします。

D:\work\hello> cargo build
   Compiling hello_cargo v0.1.0 (D:\work\hello)
    Finished dev [unoptimized + debuginfo] target(s) in 1.18s

デフォルトでは、デバッグビルドされます。

target
 +- debug
     +- hello

最適化ビルド

最適化ビルド(リリースビルド)は、cargo build --release を実行します。

実行

cargo runコマンドでパッケージのバイナリクレートから生成した実行可能ファイルを実行します。

D:\work\hello> cargo run
    Finished dev [unoptimized + debuginfo] target(s) in 0.02s
     Running `target\debug\hello.exe`
Hello, world!

複数バイナリクレートの場合

cargo run --bin ターゲット名 でターゲット名を指定して実行します。


約1ヶ月前に更新