Hello, Cargo!
ということで、今回の記事は Cargo についての記事になります。
Rust を書き始めるとすぐに出てくるのが Cargo 。
Rust を触るなら必ず使うことになるツールです。
この記事は下記の記事の続きになります。 ![]()
Cargo とは
Rustのビルドシステム兼パッケージマネージャです。
【補足
】
ビルドシステム
エンジニアが書いたソースコードやその他のリソースファイルを、コンピュータが実行できる形式(実行可能バイナリやライブラリなど)に変換する一連のプロセスを自動化するツールまたはツールのセット
パッケージマネージャ
ソフトウェアのインストール、アンインストール、更新、そしてそれらに伴う依存関係(他のソフトウェアとの関連性)の自動的な解決を効率的に行うシステムまたはツール
crate とは
Rust では、コードの最小単位を crate(クレート) と呼びます。
crate は自分で書いたプログラムも、外部から取り込む依存ライブラリも含まれます。
Cargo インストール確認
cargo --version
バージョンナンバーが表示されたならインストールがされている状態です。

Cargo でプロジェクトを作成
1. ディレクトリとプロジェクトを作成
$ cargo new hello_cargo

プロジェクトを hello_cargo と名付けたので、 Cargo はそれに関連するいくつかのファイルを同名のディレクトリに作成します。
2. hello_cargo ディレクトリに移動し、ファイル一覧を表示
$ cd hello_cargo
$ ls
Cargo.toml ファイルと src ディレクトリがあり、

src の中には main.rs ファイルがあります。

3. Gitリポジトリの初期化
cargo new はデフォルトで Gitリポジトリを初期化(git init)するため、.gitignoreや.gitが生成される。
デフォルトは--vcs=git
$ ls -a
$ git status
Git連携なしでプロジェクトを作成する場合は、cargo new --vcs none hello_cargo
補足:Gitは一般的なバージョン管理システムです。 cargo newコマンドに--vcsフラグを与えることで、別のバージョン管理システムを使用したり、何も使用しないようにもできます。 利用可能なオプションを確認するにはcargo new --helpを実行します。
オプション使ってみる
$ cargo new --help
--name <NAME> オプション
生成されるパッケージ(crate)の名前を指定するオプション
【--nameオプションなし】
cargo new my-app
とした場合、ディレクトリ名がそのままパッケージ名になる。
- ディレクトリ名:
my-app/ -
Cargo.toml :
[package] name = "my-app"
【--nameオプションあり】
cargo new my-app --name hello-world
- ディレクトリ名:
my-app/ -
Cargo.toml :
[package] name = "hello-world"
--name <NAME> オプションとは
プロジェクトのフォルダ名と crate名を分けたいときに使うオプション。
実際に use するときや、Cargo.lock 依存解決で使われるのは crate 名の方。
まとめ
複数の crate をまとめたものを package と呼び、Cargo はこれらを管理するツール
hello_cargo/ ← Package(Cargo.tomlを持つプロジェクト)
├─ Cargo.toml
└─ src/
├─ main.rs ← バイナリ crate
└─ lib.rs ← ライブラリ crate(共通機能)
さいごに
読んでいただきありがとうございます。
次回は、Cargo を使ったビルドや実行、依存ライブラリ(クレート)の追加方法についてです。
参考サイト


