Think Distributed

Database and Distributed Systems

Rust 1.39 の変更点

blog.rust-lang.org

そろそろ 1.40 が出そうな気がしますが。

The .await is over, async fns are here

async が一部安定化されて async fn で future を返せるようになった。Result と組み合わせるのはどうやるの?と思ったけれど、 future.await? みたいに書けるらしい。

References to by-move bindings in match guards

去年から仕事でずっと Rust を書いていて、度々困っていたのが、"References to by-move bindings in match guards" で、match と if を組み合わせた時に if のせいで borrow checker に通らないというのがついに許容されるようになってありがたい。

Attributes on function parameters

関数の引数に対して attribute が書けるようになるやつ。環境に応じて定義を変えたりできるようになるけれど、これは欲しくなったことないですね。

Borrow check migration warnings are hard errors in Rust 2018

1.35 で NLL が edition 2015 にもすでに入っていて、NLL と互換性のないコードは warning を出していたけど、1.39 では古い borrow checker あったバグを回避するために warning ではなく error を出すようになったと。

ちなみに、私のよく触ってるコードでは NLL で migration が必要なコードはなかったはずで、この breaking change の影響は少ないかなという印象です。

More const fns in the standard library

色々 const になりましたよと。const fn って何に使うんだっけ?

Additions to the standard library

Instant::saturating_duration_since とか地味に便利だなぁ。

Cargo test --show-ouput flag

libtest: add --show-output flag to print stdout of successful tests by emmericp · Pull Request #62600 · rust-lang/rust

Rename --all to --workspace

Rename --all to --workspace by k-nasa · Pull Request #7241 · rust-lang/cargo

正直利用者側からするとどうでもいい変更だけど、ドキュメントの修正が必要だ。