読者です 読者をやめる 読者になる 読者になる

"Rust 1.12におけるオプション引数"を読んだ感想

Karol Kuczmarski's Blog – Optional arguments in Rust 1.12

Option::fromの使いどころを説いているが、結局、

fn maybe_plus_5<T: Into<Option<i32>>>(x: T) -> i32 {
    x.into().unwrap_or(0) + 5
}

で事足りるという話になっていて、よく分からない。

恩恵としては、オプショナル引数として以下の書き方ができるようになる。

    let x = maybe_plus_5(Some(5));
    println!("{}", x); // 10
    let x = maybe_plus_5(None);
    println!("{}", x); // 5
    let x = maybe_plus_5(3);
    println!("{}", x); // 8

最後のやつが便利ってことですね。

コメント欄で次のような書き方が将来的にできるようになりませんかね、と述べていてまあそうだな、と思う。

fn maybe_plus_5(x: i32?) -> i32 {
    x.into().unwrap_or(0) + 5
}