crates.ioからパッケージを追加する
crates.ioはCargoパッケージマネージャがデフォルトで使用するパッケージレジストリです。ここで公開されているライブラリをRustプロジェクトに追加する方法を手順を追って説明します。
Cargoパッケージマネージャ全般に関する説明についてはこちらをご覧ください。
Install セクションの下にある
blake2 = "0.10.2"
のようなテキストをコピーします。
Note
この画像で例として示している blake2 はBLAKE2ハッシュ関数の実装を提供するパッケージです。BLAKE2はソフトウェア実装に最適なセキュアなハッシュ関数で、Linuxカーネルなどで使用されています。
プロジェクトの
Cargo.toml
ファイルを開き、コピーしたテキストを[dependencies]
セクションの中に貼り付けます。
これで追加されたパッケージが使用できるようになります。通常はCargoパッケージ名がそのままRustクレート名になります[1]。(
root_task
は Rustタスクを追加する で追加した関数です。)
#[no_mangle] extern "C" fn root_task(_: usize) { use blake2::{Blake2s256, Digest}; let result = { let mut hasher = Blake2s256::new(); hasher.update(b"hello world"); hasher.finalize() }; println!("hash = {:02x?}", result); }hash = [9a, ec, 68, 06, 79, 45, 61, 10, 7e, 59, 4b, 1f, 6a, 8a, 6b, 0c, 92, a0, cb, a9, ac, f5, e5, e9, 3c, ca, 06, f7, 81, 81, 3b, 0b]Note
blake2は最適化レベル0ではスタックを異常に消費するようです。次の記述 (The Cargo Book) を
Cargo.toml
ファイルに追加し、デバッグビルドの最適化レベルをオーバライドすることを推奨します。[profile.dev.package] blake2 = { opt-level = 1 }
さらに詳しく
The Cargo Book, "3.1 Specifying Dependencies" (
[dependencies]
セクションのドキュメント)