2018年10月7日のブックマーク (1件)

  • Rustのクエスチョンマーク - 簡潔なQ

    Rustに出現するクエスチョンマーク let f = File::open("input.txt")?; はRust 1.13で導入された機能で、ほぼ try! の構文糖衣である。 「ほぼ」というのは、 ? が将来的にはより汎用的に使えるように設計されているためで、 Result に限らない一般の std::ops:Carrier に対して動作する。 構文的には、 ? はメソッドチェーンと同じ優先度で解釈される。 (syntax::parse::parser 2495行目) let j = a??.x?.f????().g().y??; let j = ((((((((((((((a?)?).x)?).f)?))?)?)?)()).g()).y)?)?; わかりやすく言うと ? は try! の構文糖衣のようなものである。 try! の定義は以下の通り。(core::macros 309行

    Rustのクエスチョンマーク - 簡潔なQ
    k_osawa
    k_osawa 2018/10/07