Rustやっててっこれいいじゃんて思ったやつを書いとく感じの記事をたまにやっていくことにした
if let とは
代入?ができた?ら処理するみたいなやつという理解 (雑
具体例
例えばですね
enum Hoge {
Fuga(Fuga),
Piyo,
// and so on
}
fn do_something() -> Option<Hoge> {}
こんなんあるとして
do_something()
叩いてHoge::Fugaが返ってきたら中身のFuga型の値ほしい
という思いが強いときにやります
if let 知らなかった頃
中身出すのにmatchしか知らないすたんさんが書いたコードがこちら
match do_something() {
Some(hoge) => match hoge {
Hoge::Fuga(fuga) => do_something_with_fuga(fuga),
_ => {}, // fugaがなかったらなんもしない
},
None => {}, // 同様になんもしない
}
_
とかNone
とか書くのだるいですね
そこからやや進歩して
match do_something() {
Some(Hoge::Fuga(fuga)) => do_something_with_fuga(fuga),
_ => {},
}
でもいいんじゃん?て気付いてもややだるいです_
がじゃまー
if let する
if let Some(Hoge::Fuga(fuga)) = do_something() {
do_something_with_fuga(fuga)
}
いいじゃん…
書いてて気付いたこと
Rustのシンタックスハイライトないじゃん!