プレゼン20分くらい+議論10分位で18:30前後終了を目指します。
Rustのビルドプロファイル
cargo build
で生成されるcargo build --release
で生成Cargo.tomlファイルで最適化設定をカスタマイズできます。
[profile.dev]
opt-level = 0 #最適化レベル0
[profile.release]
opt-level = 3 #最適化レベル3
プロジェクトの依存としてcrates.ioのパッケージを使用しましたが、 自分のパッケージを公開することで他の人とコードを共有することもできます。 crates.ioのクレート登録所は、自分のパッケージのソースコードを配布するので、 主にオープンソースのコードをホストします。
///
でドキュメンテーションコメントです
(javadocとかdoxygenとかで見たことありますよね)
以下を記述してcargo doc --open
でクレートのドキュメント用のHTMLを自動で生成してくれます
/// Adds one to the number given. /// /// # Examples /// /// ``` /// let five = 5; /// /// assert_eq!(6, my_crate::add_one(5)); /// ``` pub fn add_one(x: i32) -> i32 { x + 1 }
'''cargo test'''を走らせた時ドキュメンテーションコメントにコードが含まれていると、そのコードも自動でテストしてくれます。
/// Adds one to the number given. /// /// # Examples /// /// ``` /// let five = 5; /// /// assert_eq!(6, my_crate::add_one(5)); /// ``` pub fn add_one(x: i32) -> i32 { x + 1 }
//!
を使いましょう。
モジュールの内部で使用して、クレートやモジュール全体にドキュメントをつけます。
これを
pub mod kinds {
pub enum PrimaryColor {
// ---snip---
}
pub enum SecondaryColor {
// ---snip---
}
}
pub mod utils {
use kinds::*;
pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
// --snip--
}
}
こうじゃ
pub use kinds::PrimaryColor;
pub use kinds::SecondaryColor;
pub use utils::mix;
pub mod kinds {
// --snip--
}
pub mod utils {
// --snip--
}
するとこうなる
extern crate art;
//use art::kinds::PrimaryColor;
use art::PrimaryColor;
//use art::utils::mix;
use art::mix;
fn main() {
// --snip--
}
crates.ioに作ったライブラリを公開しましょう!!
cargo login some_like_your_api_key
以下のように最低限のメタデータを追加します
[package]
name = "guessing_game"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
description = "A fun game where you guess what number the computer has chosen."
license = "MIT OR Apache-2.0"
以下のコマンドでcrates.ioに自分のクレートを公開できます!!
cargo publish
https://crates.io/dashboard を見ると自分の公開したクレートが表示されているはずです。
クレートに変更を行い、新バージョンをリリースする準備ができたら、 Cargo.tomlファイルに指定されたversionの値を変更し、再公開します。 セマンティックバージョンルールを使用して加えた変更の種類に基づいて次の適切なバージョン番号を決定してください。 そして、cargo publishを実行し、新バージョンをアップロードします。
cargo yank --vers 1.0.1 # 1.0.1バージョンを取り下げ
cargo yank --vers 1.0.1 --undo # 取り下げの取り消し
取り下げは、コードの削除は一切しません
例えば、誤ってテストコードにアップロードされた秘密鍵を削除することはできません。もしやってしまったら秘密鍵を再作成しなければなりません。
複数のクレートを含むディレクトリに,Cargo.tomlファイルを作成し、以下のような記述をすると、ディレクトリ下のクレート複数をまとめてcargo build
でビルドできるようになります。
[workspace]
members = [
"adder",
"add-one",
]
通常の外部のクレートを使用するのと同様に記述すれば、ワークスペースで使用するバージョンが一致するように依存関係を解決してくれます。
[dependencies]
rand = "0.3.14"
cargo test -p add-one
cargo installコマンドにより、バイナリクレートをローカルにインストールし、使用することができます。
cargo install rur # rur:Universal Robotsを動作させるクレート
Cargoは変更する必要なく、新しいサブコマンドで拡張できるように設計されています。 $PATHにあるバイナリがcargo-somethingという名前なら、cargo somethingを実行することで、 Cargoのサブコマンドであるかのように実行することができます。このような独自のコマンドは、 cargo –listを実行すると、列挙もされます。cargo installを使用して拡張をインストールし、 それから組み込みのCargoツール同様に実行できることは、Cargoの設計上の非常に便利な恩恵です!