動かして学ぶ!Rust入門
書籍情報
発売日 : 2023年04月24日
著者/編集 : mebiusbox
出版社 : 翔泳社
発行形態 : 単行本
書籍説明
内容紹介
Rustのプログラミング手法について、サンプルを元に手を動かしながら学ぶ書籍です。主に以下の3つについて丁寧に解説します。Rustの概要と開発環境。Rustの基本的な文法と機能。Rustによる簡単なアプリ開発。基本的な文法について丁寧に解説。Rustの機能を学ぶのに適したサンプルを用意。学習をもっと深めたい方に向けて「メモ」や「参照」で補足。
目次
Chapter 1 Rust
01 概要
Rustの特徴
Rustの誕生
Rustはどういうプログラミング言語なのかエディション
02 互換性
03 まとめ
Chapter 2 環境構築
01 Rustをインストールする前の準備
PowerShellのバージョンを確認
wingetのインストール
最新のPowerShellをインストール
Windows Terminal
Git
Anaconda(Miniconda)
02 Rustのインストール
rustup
cargo
rustc
03 Visual Studio Code
スニペット
04 rust-analyzer
05 Rust Playground
06 Hello, World!
パッケージの作成
Rustプログラムの実行環境
07 その他のツール
Terminal-Icons
Oh My Posh
winget
PowerShellのエイリアス
bat
lsd(LSDeluxe)
delta
simple-http-server
cargo-make
08 まとめ
本章で学んだこと
Chapter 3 Rustの文法と機能
01 基本
コメント(Comment)
式と文(Expression and statement)
ブロック(Block)
オブジェクト(Object)
組み込みデータ型 (Primitive Type)
型の別名(Alias)
所有権(Ownership)
関数(Function)
print!マクロ
束縛(Binding)
シャドーイング(Shadowing)
定数(Const)
参照(Reference)
可変性(Mutable and immutable)
文字列(String)
スタティック変数
命名規則
参照外し(Dereference)
参照と可変性の関係
借用チェック(Borrow Checker)
02 コピートレイト(Copy Trait)
03 構造体・列挙型
構造体(Struct)
列挙型(Enum)
04 クロージャ(Closure)
Fnとfn
05 制御構文
if式(else、else if)
loop式
while式
for式
06 数列・スライス
数列(Range)
スライス(Slice)
07 ジェネリクス(Generics)
Option型
08 パターンマッチング(Pattern
match式
マッチガード(Match Guard)
パターンによる束縛
if let式
09 エラー処理(Error
panic!マクロ
Result型
unwrapメソッド
expectメソッド
エラー伝搬(Error Propagation)
コンビネータ
10 RAII
Derefトレイト
Dropトレイト
3つのメモリ領域(データ、スタック、ヒープ)
Box型
Rc型
11 ライフタイム(Lifetime)
staticライフタイム
12 トレイト(Trait)
トレイトとは
継承
derive属性
Fromトレイト
マーカートレイト(Marker)
Sizedトレイト
13 動的ディスパッチ
トレイトオブジェクト
dyn Trait型、impl Trait型
14 内部可変性(Interior
Cell型
RefCell型
Weak型
15 並列処理
スレッド
Send・Syncトレイト
Arc型
RwLock型
16 所有権
17 所有型と参照型
18 Cow型(Clone-on-write)
19 イテレータ(Iterator)
アダプタ
20 コレクション(Collection)
Vec型
String型
HashMap型
イテレータからコレクションに変換
イテレータを返すメソッド
21 Cargo
パッケージ、クレート
ターゲット
TOML形式
cargo initコマンド
cargo buildコマンド
cargo cleanコマンド
cargo runコマンド
cargo checkコマンド
cargo treeコマンド
cargo install[uninstall]コマンド
cargo searchコマンド
cargo publishコマンド
デバッグビルド、リリースビルド
外部パッケージ
ワークスペース
Cargo.toml
22 モジュール(Module)
モジュールの定義
パス(Path)
モジュールの利用(use)
モジュールツリー
モジュールの再公開
23 テスト(Unit
cargo testコマンド
assertion
should_panic属性
testsターゲット
24 ドキュメントコメント
ドキュメントコメントの書き方
cargo docコマンド
rustup docコマンド
25 フォーマッタ(rustfmt)
26 リンター(clippy)
27 マクロ(Macro)
宣言的マクロ
手続きマクロ
28 非同期処理
Future型
async/.await
tokioクレート
29 unsafe
30 Tips
Defaultトレイト
分解束縛
デバッグ時やテスト時のみ有効なコード
属性
演算子のオーバーロード
Preludeモジュール
DisplayトレイトとDebugトレイト
特殊なマクロ
Nightly版
cargo-audit、cargo-outdated
31 まとめ
本章で学んだこと
Chapter 4 アプリケーションの開発
01 単語推理ゲーム
サンプルコードについて
プロジェクトの準備
単語辞書の読み込み
ゲーム構造体
推理ロジックの実装
GUIの実装(icedクレート)
02 レイトレーシング
サンプルコードについて
プロジェクトの準備
画像の出力
ベクトル
クォータニオン
基本的な構造体の実装
カメラ
球体の追加
球体の法線
確認用のウィンドウ
モジュール化
複数の物体への対応
アンチエイリアシング
拡散反射
材質
鏡面反射
屈折
大量に表示してみよう
テクスチャ
画像テクスチャ
発光
四角形
コーネルボックス
光学のおはなし
モンテカルロレイトレーシング
03 まとめ
本章で学んだこと
Appendix
01 std::option::Option型
02 std::result::Result型
03 std::vec::Vec型
04 std::string::String型
05 std::collections::HashMap型
06 std::iter::Iteratorトレイト
アダプタ
07 std::f64モジュール
定数
数学関数(std::f64モジュール)
08 Rustをビルドしてみよう
01 概要
Rustの特徴
Rustの誕生
Rustはどういうプログラミング言語なのかエディション
02 互換性
03 まとめ
Chapter 2 環境構築
01 Rustをインストールする前の準備
PowerShellのバージョンを確認
wingetのインストール
最新のPowerShellをインストール
Windows Terminal
Git
Anaconda(Miniconda)
02 Rustのインストール
rustup
cargo
rustc
03 Visual Studio Code
スニペット
04 rust-analyzer
05 Rust Playground
06 Hello, World!
パッケージの作成
Rustプログラムの実行環境
07 その他のツール
Terminal-Icons
Oh My Posh
winget
PowerShellのエイリアス
bat
lsd(LSDeluxe)
delta
simple-http-server
cargo-make
08 まとめ
本章で学んだこと
Chapter 3 Rustの文法と機能
01 基本
コメント(Comment)
式と文(Expression and statement)
ブロック(Block)
オブジェクト(Object)
組み込みデータ型 (Primitive Type)
型の別名(Alias)
所有権(Ownership)
関数(Function)
print!マクロ
束縛(Binding)
シャドーイング(Shadowing)
定数(Const)
参照(Reference)
可変性(Mutable and immutable)
文字列(String)
スタティック変数
命名規則
参照外し(Dereference)
参照と可変性の関係
借用チェック(Borrow Checker)
02 コピートレイト(Copy Trait)
03 構造体・列挙型
構造体(Struct)
列挙型(Enum)
04 クロージャ(Closure)
Fnとfn
05 制御構文
if式(else、else if)
loop式
while式
for式
06 数列・スライス
数列(Range)
スライス(Slice)
07 ジェネリクス(Generics)
Option型
08 パターンマッチング(Pattern
match式
マッチガード(Match Guard)
パターンによる束縛
if let式
09 エラー処理(Error
panic!マクロ
Result型
unwrapメソッド
expectメソッド
エラー伝搬(Error Propagation)
コンビネータ
10 RAII
Derefトレイト
Dropトレイト
3つのメモリ領域(データ、スタック、ヒープ)
Box型
Rc型
11 ライフタイム(Lifetime)
staticライフタイム
12 トレイト(Trait)
トレイトとは
継承
derive属性
Fromトレイト
マーカートレイト(Marker)
Sizedトレイト
13 動的ディスパッチ
トレイトオブジェクト
dyn Trait型、impl Trait型
14 内部可変性(Interior
Cell型
RefCell型
Weak型
15 並列処理
スレッド
Send・Syncトレイト
Arc型
RwLock型
16 所有権
17 所有型と参照型
18 Cow型(Clone-on-write)
19 イテレータ(Iterator)
アダプタ
20 コレクション(Collection)
Vec型
String型
HashMap型
イテレータからコレクションに変換
イテレータを返すメソッド
21 Cargo
パッケージ、クレート
ターゲット
TOML形式
cargo initコマンド
cargo buildコマンド
cargo cleanコマンド
cargo runコマンド
cargo checkコマンド
cargo treeコマンド
cargo install[uninstall]コマンド
cargo searchコマンド
cargo publishコマンド
デバッグビルド、リリースビルド
外部パッケージ
ワークスペース
Cargo.toml
22 モジュール(Module)
モジュールの定義
パス(Path)
モジュールの利用(use)
モジュールツリー
モジュールの再公開
23 テスト(Unit
cargo testコマンド
assertion
should_panic属性
testsターゲット
24 ドキュメントコメント
ドキュメントコメントの書き方
cargo docコマンド
rustup docコマンド
25 フォーマッタ(rustfmt)
26 リンター(clippy)
27 マクロ(Macro)
宣言的マクロ
手続きマクロ
28 非同期処理
Future型
async/.await
tokioクレート
29 unsafe
30 Tips
Defaultトレイト
分解束縛
デバッグ時やテスト時のみ有効なコード
属性
演算子のオーバーロード
Preludeモジュール
DisplayトレイトとDebugトレイト
特殊なマクロ
Nightly版
cargo-audit、cargo-outdated
31 まとめ
本章で学んだこと
Chapter 4 アプリケーションの開発
01 単語推理ゲーム
サンプルコードについて
プロジェクトの準備
単語辞書の読み込み
ゲーム構造体
推理ロジックの実装
GUIの実装(icedクレート)
02 レイトレーシング
サンプルコードについて
プロジェクトの準備
画像の出力
ベクトル
クォータニオン
基本的な構造体の実装
カメラ
球体の追加
球体の法線
確認用のウィンドウ
モジュール化
複数の物体への対応
アンチエイリアシング
拡散反射
材質
鏡面反射
屈折
大量に表示してみよう
テクスチャ
画像テクスチャ
発光
四角形
コーネルボックス
光学のおはなし
モンテカルロレイトレーシング
03 まとめ
本章で学んだこと
Appendix
01 std::option::Option型
02 std::result::Result型
03 std::vec::Vec型
04 std::string::String型
05 std::collections::HashMap型
06 std::iter::Iteratorトレイト
アダプタ
07 std::f64モジュール
定数
数学関数(std::f64モジュール)
08 Rustをビルドしてみよう
著者情報
mebiusbox