HOME
R&D
Rust
Rust
Rustはオンラインのドキュメントが充実しており、日本語訳もあります(同じ版ではない点には注意)。
The Rust Programming Language
、
日本語訳
The Cargo Book
Rust by Example
、
日本語訳
Photo by
Albert Hyseni
rustcのリンカをlldに変更
Version 1.55現在、LinuxなどのRustのリンカはgccのldです。 これをLLVMのlldに換えるとコンパイルが多少スピードアップします。 $ time cargo build # …
Rustコレクションのasyncフロー
Rustの非同期処理はasync/awaitで記述できますが、非同期処理を含むクロージャでasync/awaitを適切に記述できないケースがあります。 たとえばコレクションの各要素に対して非同期処理を …
Rustのインテグレーション・テスト構成
Rustのインテグレーション・テストのベターな構成は、 Integration Testing in Rustの解説が参考になります。 公式ガイドの説明どおりに素朴に構成すると、テストファイルごとにバ …
warpのFilter定義
warpはRustのWebサーバーフレームワークの1つです。 gRPCフレームワークの Tonicと同じhyperの上に構築されています。 warpの特徴は、 Filterを用いたルーティング定義で …
Rustのテスト用関数の実装
モック関数実装用のcrateに mockallがあります。 mockallで実装できる関数であれば積極的に利用できますが、現状async traitへの対応にやや難があるのと、テスト時にトレイトオブジ …
env_loggerによるロギング基礎
Rustのロギングには、 logと env_loggerの組み合わせが便利です。 ほかの言語と同様、error, warn, info, debug, traceといったログレベル別のログ出力、表示制 …
Tonicによるrust gRPCサーバー開発
Tonicを用いてgRPC開発する際、サーバープロセスの構築以外に、protobufを適切に組込むことが必要になります。 Tonicの場合は、 PROST!を利用しており、protocコマンドで生成 …
Tokio 1.0
2020年末に Tokio 1.0がリリースされました。Rustの非同期ランタイムのデファクトライブラリです。 HyperやTower、TonicといったHTTPのライブラリの下層で利用されているた …
as_ref()で構造体メンバの参照取得
Rustの構造体で、nullableなメンバは以下のようにOption型を利用する記述になります。 struct Friend { name: Option<String> } let john = …
RustのResult/Option処理フロー
Rustには異常な状態を取り扱うための、Result<T,E>型とOption<T>型があり、関数型プログラミングで一般的な処理フローを実装できます。 この2つの型は、似たような構造になっていますが、 …
Rustライブラリの作成・管理
Rustで機能実装するとファイル単位でmoduleとなり、pubスコープを付けるだけで再利用可能になります。 基本的には、モジュールの集合体(単なるプロジェクトのファイル群)が自然にライブラリになりま …
RustからPostgreSQLを使う
RustでDB接続するcrate(Rustパッケージ)にはいくつかのプロダクトがありますが、非同期処理を重視した非ORマッパーのcrateとしては、tokio-postgresを使えます。 …