2025-01-10 10:45:25 +09:00
Kaleidoscopeの写経を始めた。C前提のコードをRustで書き直していくことでRustへの理解が深まる、そういう訳なんですね。 これが一段落ついたら後回しにしてたLisp触る。S式のとっつきにくさで今までなんやかんや逃げてたけどあれ理解したら間違いなく楽しいし……
let hoge = Some("fuga");
if hoge.is_some_and(|x| x == "fuga") { ...
絶対便利。stackoverflowにいろいろ代替の書き方あったけどこれ安定化されたらコードの見通し100倍良くなると思う。はよ来てくれ~~
let hoge = Some(100);
if let Some(x) = hoge && x >= 100 { ...
みたいな処理ができるようになるっぽい?is_some_withと似てるけどif let
(while let
)に仕込めるのがありがたい……のかな、正直こっちはあんまり使いたい場面が思い付かない。
Rust 1.62で安定化される予定だったらしいけど見送られて(うんち)、今は1.67……きてくれ~~~
try_block 他言語とかでもよくあるtry{}構文、あったらそれなりに便利なんだろうけど使うタイミングが思い付かないのは困ったらとりあえずResult,Optionで返り値包んどけみたいな思想に浸かってしまってるからなんだろうか。あるいはlet-elseのおかげ?
once_cell
おなじみOnceCell先生。cargo add once_cell
するの面倒だから入ってくれると助かる。あと普通に数回に一回くらいstd::cell::OnceCell叩いちゃって補完がそっちのuse入れちゃうの地味に面倒だからさっさとstableになってくれ(私怨)(rust-analyzerのnightly featuresって切れるんだろうか)