Slide 1

Slide 1 text

Rustで定数式を扱う ユニークビジョン株式会社 山本 一将

Slide 2

Slide 2 text

自己紹介 2 ⚫ 名前:山本 一将(@kyamamoto9120) ⚫ 所属:ユニークビジョン株式会社 ⚫ 言語:C++, Rust, Python, Ruby ⚫ 趣味:将棋、キャンプ、DIY、野球観戦 ⚫ 実績:2015年 世界コンピュータ将棋選手権9位

Slide 3

Slide 3 text

アジェンダ 3 ① 定数式とは何か ② Rustの定数式の状況 ③ 簡単な使用方法(フィボナッチ数列を例に)

Slide 4

Slide 4 text

定数式とは 4 • コンパイル時に評価可能な式のこと • Rustでは const fn で始まる関数が定数式となる

Slide 5

Slide 5 text

Rustにおける定数式 5 ① 1.31.0から導入 • ローカル変数が使えない • ループ文、制御文が使えない • 引数を&mutにできない ② 1.46.0までに徐々に制限緩和 • ローカル変数が使える! • matchやwhileが使える!

Slide 6

Slide 6 text

現時点での制限 6 ① for文は使えない ② 評価できる式の深さに制限がある

Slide 7

Slide 7 text

まとめ 7 ⚫ 制限が一部緩和されたがまだまだ実用レベルではない • 自由度はまだC++14のconstexprにも届かない • 標準ライブラリの対応もまだまだ ⚫ 当面はlazy_static!を使用した方が幸せ ⚫ それでも1.46.0での制限緩和は希望がある!

Slide 8

Slide 8 text

ありがとうございました