Rust

separo-rsの記事

もう三週間くらい前になると気づいて結構驚愕しているのだが、SEPAROというゲームの対戦相手を書いた。 SATySFiで有名な@bd_gfngfn氏が作ったSeparoというボードゲームで昔遊んだことがあり、また遊びたくなったもののルールを知っている/覚えてくれそうな人…

rsqrtの精度とレイトレの不審なアーティフアクト

だいぶ前(前の冬なので半年以上前)に、Ray tracing in one weekendを読みながらRustでレイトレを実装していたのだが、そこでrsqrtを使ったら画像が変になったのを思い出した。理由は今も(ちゃんと調べていないので)よくわかっていないが、とりあえず思い…

Rust Book 勉強会 #3 フォローアップ

Rust Book 勉強会で発表をしてきた。 rust-kansai.connpass.com これは、結構前にQiitaのC++アドベントカレンダーで書いた内容と、Ben Deane氏によるCppConでの発表"Using types effectively"が下敷きになっている。 www.youtube.com あ、この資料にクレジッ…

Rustで型推論を助けるトリック

Rust業界に詳しくないので既に広く知られているものかもしれないが、昨晩突如として以下のようなトリックを思いついた。 struct X<T> {/* fields omitted */} impl X<f32> { pub fn f32(self) -> Self {self} } impl X<f64> { pub fn f64(self) -> Self {self} } let x = </f64></f32></t>…

Rustでtraitのassociated typeに対してtrait boundaryを課す

RustのTraitは内部に型を持つことがある。関連型(associated type)だ trait Hoge { type Value; } impl Hoge for Piyo { type Value = Fuga; } このValue型についてトレイト境界を付けたい。 つまり、ある型Tがあり、型<T as Hoge>::ValueがOtherTraitを満たす場合の</t>…

Rustでgenericなenumを作る

パッと出てこなかったので。 例えば、位置か速度か力かわからないベクトルがあるとする。すると、Rustならenumにするだろう。 enum CoordKind { Position{x:f64, y:f64, z:f64}, Velocity{x:f64, y:f64, z:f64}, } let pos = CoordKind::Position{x: 1.0, y:…

RustとC++のジェネリクスの性格の差

今までRustは使いまわすことのない適当なスクリプト的にしか使ってこなかったので、実際のところ本質的に難しいことは何もしてこなかった。その間は非常に楽で、言われるほど難しくないのではと思っていた。が、最近コードを使いまわそうと思って書き始めた…

Rustを触っている

先週Rustを触っていた。まだ手に馴染んでいないので少し不自由さを感じるが、慣れるまでの辛抱だろう。実際は去年くらいに一度インストールしてチュートリアル程度は済ませていたのだが、説明を見て言われた通りのコードを書く以上のことはしていなかった。…