やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

Rust

Rustのオブジェクト指向(デザインパターン)

必ずしもRustにおいて最善とは言えない。

RustのOOP(トレイトオブジェクト)

Vec<Box<MyTrait>>とすることでtrait(インタフェース)を実装した型を受け入れる。</box<mytrait>

Rustのオブジェクト指向

struct, impl, pub, trait, トレイト境界where T: trait1, trait2、を用いて実現する。

Rustのスレッド(Send、Syncトレイト)

コード例がないのでよくわからんかった。

Rustのスレッド(Mutex、Arc)

1度に1スレッドのみアクセス可にすることで整合性を保つ。

Rustのスレッド(メッセージ送受信)

スレッド間データ通信。

Rustのスレッド

並行(並列、同時)に実行する。

Rustのスマートポインタ(Weak<T>)

弱参照。強参照の参照カウンタがゼロになれば弱参照は循環していようが削除される。

Rustのスマートポインタ(RefCell<T>)

借用規則をコンパイル時でなく実行時に適用する。

Rustのスマートポインタ(Rc<T>)

複数の所有者をもたせる。参照カウント式。

Rustのスマートポインタ(Dropトレイト)

デストラクタ。スコープを抜けるときに実行する。リソース解放などに使う。

Rustのスマートポインタ(Derefトレイト)

参照外し*の振る舞いをカスタマイズできる。

RustのスマートポインタBox<T>

ヒープに格納する。(スタックでなく) 型定義を自己参照するときに有用。

Rustのスマートポインタ

複数の所有者をもたせること等ができる。

Rustのcargoを拡張する方法

やり方だけ確認する。

Rustのcargo installでバイナリをインストールする

Rust製ツールを導入。

Rustのcargoでワークスペースをつくる

ワークスペースとは、複数のクレートをまとめる単位である。

Rustのクレートを公開する方法(crates.io)

やり方だけを確認する。

Rustのエクスポート(pub use)

ドキュメントに新たな項目として追加される。

Rustのcargo(cargo docでドキュメント生成)

ドキュメント用コメントの書き方も。

Rustのcargo(ビルドのカスタマイズ)

コンパイルオプション。

Rustのイテレータ(パフォーマンス)

高速なまま。

Rustのイテレータ(Minigrep改善)

全体的に。

Rustのイテレータ

要素を順番に返すヤツ。map, zip, filter, skipなどのコレクション操作もできる。

Rustのクロージャ

無名関数。

RustでStdErr出力

StdOutでなく。

Rustで環境変数を取得する

Rustで環境変数を取得する std::env::var()で。

Rustでテスト駆動開発

こんな感じでやる。

Rustでリファクタリング(モジュール性とエラー処理の向上)

本番に近い考え方。

Rustのファイル読込

基本のひとつ。