シリーズ記事ディレクトリ
[XiaojiaでRustプログラミングを学ぶ] 1. Rustプログラミングの基礎
[XiaojiaでRustプログラミングを学ぶ] 2. Rustパッケージ管理ツールの使用
[XiaojiaでRustプログラミングを学ぶ] 3. Rustの基本的なプログラム概念
[XiaojiaでRustプログラミングを学ぶ] 】4. Rustの所有権の概念を理解する
【XiaojiaからRustプログラミングを学ぶ】5. 構造体を使用して構造化データを関連付ける
【XiaojiaからRustプログラミングを学ぶ】6. 列挙とパターンマッチング
【XiaojiaからRustプログラミングを学ぶ】7. パッケージを使用する(プロジェクトを管理するためのパッケージ)、ユニットパッケージ (Crate)、およびモジュール (Module)
[Xiaojia で Rust プログラミングを学ぶ] 8. 共通コレクション
[Xiaojia で Rust プログラミングを学ぶ] 9. エラー処理 (Error Handling)
[Xiao Jia が Rust プログラミングを学ぶをフォローする] 11. 自動テストを作成する
[Xiao Jia と Rust プログラミングを学ぶ] 12. コマンドライン プログラムを構築する
[Xiao Jia と Rust プログラミングを学ぶ] 13. 関数型言語の機能: イテレータとクロージャ
[Xiao Jia と Rust プログラミングを学ぶ] 14. Cargo と Crates について.io
序文
ここまでは、コードを構築、実行、テストするための Cargo の最も基本的な機能について説明しましたが、さらに多くのことが可能になります。この章では、次のような Cargo のより高度な機能について説明します。
- リリースプロファイルを使用してビルドをカスタマイズする
- crates.ioでライブラリ ファイルを公開する
- ワークスペースを使用して大規模なプロジェクトを整理する
- crates.ioからライブラリをインストールする
- カスタムコマンドでカーゴを拡張する
主な教材は「The Rust Programming Language」を参照
1. リリースプロファイル
1.1、リリース構成 (リリースプロファイル)
リリース プロファイル (リリース プロファイル) は事前定義されており、コードのコンパイルをより詳細に制御するためにカスタマイズすることもできます (さまざまな構成を使用できます)。各プロファイルの構成は、他のプロファイルから独立しています。
Cargo には 2 つの主要なプロファイルがあります。
- dev プロファイル: 開発 (開発環境)、カーゴ ビルドに適しています
- リリース プロファイル: リリース (運用環境)、カーゴ ビルド --release に適しています
1.2、カスタムプロファイル
各プロファイルについて、Cargo はデフォルト設定を提供します。xxx プロファイルの設定をカスタマイズする場合は、cargo.toml に [profile.xxx] 領域を追加して、デフォルト設定のサブセットをオーバーライドできます。
[profile.dev]
opt-level = 0
[profile.release]
opt-level = 3
opt-level パラメータは最適化レベルを示し、コンパイル時間は比較的長くなります。各構成のデフォルト値と完全なオプションについては、プロファイルを参照してください。
2. crates.io をリリースする
2.1、crates.io
パッケージを公開することでコードを共有できます。crate レジストリはcrates.ioにあり、登録されたパッケージのソース コードを配布し、主にオープン ソース コードをホストします。
2.2. ドキュメントのメモ
2.2.1. ドキュメントコメントの概要
ドキュメント コメントは、HTML ドキュメント、明示的なパブリック API ドキュメント コメント (API の使用方法) を生成するために使用され、/// を使用してマークダウン構文のサポートを示します。
ドキュメントは、rustdoc ツールを実行し、生成された HTML ドキュメントを target/doc ディレクトリに配置する、cargo doc を使用して生成できます。
生成されたドキュメントを開くには、cargo doc --open を使用します。
2.2.2. よく使用される章
- 例: サンプルコード
- パニック: 関数がパニックになる可能性があるシーン
- エラー: 関数が Result を返す場合、考えられるエラーの種類と、エラーにつながる可能性のある条件について説明します。
- 安全性: 関数が安全でない呼び出しにある場合、その関数が安全でない理由と、呼び出し元がその使用を保証するという前提を説明できます。
2.2.3. テストとしてコメントを文書化する
サンプル コード ブロックの追加値: ドキュメント コメント内のサンプル コードをテストとして実行するには、cargo test を実行します。
2.2.4. コメントを含むアイテムにドキュメントコメントを追加する
- シンボル://!
- このような注釈は、クレートとモジュールを説明するためによく使用されます。
- クレートルート (規約により src/lib.rs)
- モジュール内で、クレートまたはモジュールを全体として記録します
2.3、パブでの使用
pub use を使用して、便利なパブリック API をエクスポートします。
2.4. クレートステップの公開
一度リリースされると永続的になります。このバージョンを上書きしたり、コードを削除したりすることはできません。目的: このバージョンに依存するプロジェクトは正常に動作し続けることができます。
1. crate.ioアカウントを作成・設定し、APIトークンを取得する
2. コマンドを実行します: カーゴ ログイン [API トークン]。API トークンがローカルの ~/.cargo/credentials に保存されていることをカーゴに通知します。
3. 公開する前に、[パッケージ] にメタデータを設定する必要があります。
- クレートには一意の名前が必要です: name
- 説明: 1 つまたは 2 つの文
- ライセンス: ライセンスの識別値を指定する必要があります (http://spdx.org/licenses/ で確認できます)。
- version: セマンティック バージョンを使用するには、http://semver.org を参照してください。
- 著者
4. 公開: カーゴ公開コマンドを使用します。
5. カーゴ ヤンクを使用してバージョンを撤回します。
- 以前のバージョンのクレートを削除することはできません
- ただし、他のプロジェクトがそれを新しい依存関係として使用できなくなる可能性がありますが、既存のプロジェクトは引き続き依存関係として使用できます。
3. 貨物作業スペース
3.1. ワークスペース
Cargo ワークスペースは、一緒に開発する必要がある複数のクレートを管理するのに役立ちます。カーゴワークスペースは、同じcargo.lockと出力フォルダーを共有するパッケージのセットです。
3.2. ワークスペースの作成
[workspace]
members = [
"adder"
]
実行:cargo run -p binary crate
3.3. ワークスペースの外部クレートに依存する
ワークスペース内には、cargo.lock が 1 つだけあります。これは、ワークスペース内のすべてのクレートが同じバージョンの依存関係を使用し、ワークスペース内のすべてのクレートが相互に互換性があることを保証するために、ワークスペースの最上位ディレクトリにあります。
4番目に、バイナリクレートをインストールします
-
コマンドカーゴインストール
-
出典: crates.io
-
制限事項: バイナリターゲットを含むクレートのみをインストールできます。
- バイナリ ターゲットは、src/main.rs またはバイナリとして指定された他のクレートによって生成される実行可能なプログラムです。
-
通常、README にクレートの説明があります。
- バイナリターゲットがある
- ライブラリターゲットがある
- 両方
-
カーゴインストールでインストールしたバイナリディレクトリはルートディレクトリのbinフォルダに存在します
-
カスタム設定を行わずにrustupを使用してrustをインストールした場合、バイナリは$HOME/.cargo/binに存在します。
5. カスタムコマンドでカーゴを拡張する
- カーゴはセルフコマンドを使用して拡張できるように設計されています
- $PATH 内のバイナリの 1 つが Cargo-something である場合は、それをサブコマンド Cargo Something として実行できます。
- このようなカスタム コマンドは、次のコマンドで一覧表示できます: カーゴ --list
- 利点: カーゴインストールを使用して拡張機能をインストールし、組み込みツールのように使用できます。
要約する
それが今日のすべてです