Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

“Cookin’ with Rust” について

目次

本書の対象読者

このクックブックは、新しい Rust プログラマーが Rust のクレート エコシステムの機能を素早く概観できるようにすることを目的として います。また、経験豊富な Rust プログラマーにとっても、 一般的なタスクをどう実現するかを手軽に思い出せるレシピ集として 役立つことを意図しています。

本書の読み方

クックブックの index には、レシピの完全な一覧が 「basics」「encoding」「concurrency」などの複数のセクションに 整理されて収められています。セクション自体もおおむね順を追って 並んでおり、後ろのセクションほど高度になり、場合によっては 前のセクションの概念を土台にしています。

インデックスでは、各セクションにレシピの一覧があります。レシピは 「範囲内の乱数を生成する」のように、達成したいタスクを簡潔に表した ものです。また各レシピには、rand-badge のように使用している クレート を示すバッジと、cat-science-badge のように それらのクレートが crates.io 上で属しているカテゴリを示すバッジが 付いています。

新しい Rust プログラマーは、最初のセクションから最後のセクションまで 無理なく読み進められるはずで、そうすることでクレートエコシステムの 全体像をしっかり把握できます。セクションの見出しをインデックス上、 またはサイドバー上でクリックすると、そのセクションのページへ移動 できます。

単純なタスクの解決方法だけを探している場合、現時点ではこの クックブックは少したどりにくくなっています。特定のレシピを見つける 最も簡単な方法は、興味のあるクレートやカテゴリを手がかりに インデックスを見ていくことです。そこからレシピ名をクリックして 内容を表示してください。この点は今後改善される予定です。

レシピの使い方

レシピは、動作するコードへすぐにアクセスできるように設計されており、 それが何をしているのかの完全な説明と、さらに詳しい情報への案内も あわせて提供します。

クックブック内のすべてのレシピは完全で自己完結したプログラムなので、 試しながら使うためにそのまま自分のプロジェクトへコピーできます。 そのためには、以下の手順に従ってください。

「一定の範囲内でランダムな数値を生成する」例を見てみましょう:

rand-badge cat-science-badge

use rand::RngExt;

fn main() {
    let mut rng = rand::rng();
    let random_number: u32 = rng.random();
    println!("Random number: {random_number}");
}

これをローカルで試すには、次のコマンドを実行して新しい cargo プロジェクトを作成し、そのディレクトリに移動します:

cargo new my-example --bin
cd my-example

次に、クレートのバッジが示すとおり、必要なクレートを Cargo.toml に 追加する必要があります。この場合は「rand」だけです。そのために、 まずインストールが必要な cargo-edit クレートが提供する cargo add コマンドを使います:

cargo install cargo-edit
cargo add rand

これで、src/main.rs を例の完全な内容で置き換えて実行できます:

cargo run

例に付随するクレートバッジは、docs.rs にある各クレートの完全な ドキュメントへリンクしており、目的に合ったクレートを選んだあとに 次に読むべきドキュメントであることがよくあります。

エラーハンドリングについて

Rust には、例外を処理するために実装される std::error::Trait があります。 このクックブックでは、例のエラーハンドリングを簡潔にするために anyhow を 使用しており、容易なエラー伝播とコンテキスト付与を提供します。ライブラリ作者 向けには、thiserror が derive マクロを用いてカスタムエラー型を作成する より構造化されたアプローチを提供します。

このクックブックでは以前 error-chain クレートを使用していましたが、 現在ではアプリケーションレベルのエラーハンドリングに推奨される手法となったため、 anyhow を使うように更新されました。Rust におけるエラーハンドリングの背景に ついてさらに知りたい場合は、Rust 本のこのページこのブログ記事 を読んでください。

クレートの掲載について

このクックブックは最終的には Rust クレートエコシステムを幅広く 網羅することを目指していますが、現時点では立ち上げと見せ方の改善を 進めている段階のため、扱う範囲は限定されています。小さな範囲から 始めて徐々に拡大していくことで、このクックブックがより早く 高品質なリソースとなり、成長しても一貫した品質水準を維持できるように なることを期待しています。

現時点でこのクックブックが焦点を当てているのは、標準ライブラリと、 「中核的」あるいは「基盤的」なクレート、つまり最も一般的な プログラミング作業を構成し、エコシステムの残りの部分がその上に 築かれているクレートです。

このクックブックは Rust Libz Blitz と密接に結びついています。 これはそのようなクレートを特定し、その品質を向上させるための プロジェクトであり、そのためクレートの選定は主にそのプロジェクトに 委ねられています。そのプロセスの一環としてすでに評価済みのクレートは クックブックの対象であり、評価待ちのクレートも同様に対象です。