2021-03-19

[Rust] Cargo.toml

Rust/cargo/フォルダ構造
 TOML形式の、メタデータや依存関係を記録

・◆はcargo publishでクレート紹介ページに反映される項目
・[[二重括弧]]のセクションは複数回書け、複数のバイナリファイルを作れる

[package]

name = "実行バイナリのファイル名/パッケージ名"
version = "0.1.0"
authors = ["◆作者 <mail@example.com>"]
edition = "2018"
description = "◆短い解説"
documentation = "◆ドキュメントのURL/空にすると自動でDocs.rsへのリンクを張ることになる"
readme = "◆READMEファイルへのパス"
homepage = "◆HPのURL"
repository = "◆ソースコードレポジトリのURL"
license = "◆ライセンス情報"
license-file = "◆ライセンスファイルへのパス"
keywords = "パッケージのキーワード"
categories = "パッケージのカテゴリー"
workspace = "パッケージのワークスペースの設定"
build = "ビルドスクリプトへのパス"
links = "パッケージが利用するネイティブライブラリへのリンク"
exclude = "publish時に除外するファイル"
include = "publish時に含めるファイル"
publish = "publishのコントロール"
metadata = "外部ツールのための設定"
default-run = "cargo runによって動作するバイナリファイル"

[dependencies]

 以下に依存するクレートとバージョンを記載(表記例)

tokio = { version = "1.0.2", features = ["macros"] } # featuresを追加する場合

[dev-dependencies]

 examples/tests/benchmarksのための依存関係

[build-dependencies]

 ビルドスクリプトの依存関係

[target]

 プラットフォーム特有の依存関係

[profile.release]

lto = true # 複数のクレートで同じコードが使用されていた際、重複を除去してサイズを削減
opt-level = "z" # 最適化レベルの変更
codegen-units = 1 # 並列度を下げるとサイズを削減できる可能性がある
panic = "abort" # panic発生時にプログラムを即終了させる(巻き戻しコードを削除する)ことでバイナリサイズを削減

[features]

default = ["A" , "B"] # デフォルトで有効になるフィーチャ

[lib]

・設定対象:ライブラリ形式のバイナリファイル
・以下設定はターゲット関連セクション共通

name = "ターゲットの名前"
path = "ターゲットのソースファイル"
test = "デフォルトでテストさせる"
doctest = "デフォルトでドキュメントをテストさせる"
bench = "デフォルトでベンチマークを実施させる"
doc = "デフォルトでドキュメントを作成させる"
plugin = "コンパイルプラグインとして利用する(非推奨)"
proc-macro = "手続きマクロのための設定"
harness = "libtestハーネスを使う"
edition = "Rustのエディション"
crate-type = "生成するクレートの種類"
required-features = "このターゲットを作成するのに必要なfeature"

[[bin]]

・設定対象:実行形式のバイナリファイル

[[example]]

・設定対象:exampleのバイナリファイル

[[test]]

・設定対象:testのバイナリファイル

[[bench]]

・設定対象:benchのバイナリファイル