rust

RailsではなくRocketでHotwire(Turbo)する その1

HotwireというかTurboは単なるJavaScriptのライブラリなので、Railsじゃないと使えないということはない。Railsでturbo-rails gemを使うととても便利に使えることは間違いないけど。 ということでRust製のウェブアプリケーションフレームワークのRocketでア…

RocketでカスタムContentTypeを作りレスポンスヘッダに設定する

Responses - Rocket Programming Guide ドキュメントの Responses のページの Rocket Responders にある通り、 Content という Responder が ContentType を書き換えるために使える。 テンプレートをレンダリングして返す場合は Content<Template> を返すように定義し</template>…

Brainf*ckのインタープリタとJITコンパイラ

Adventures in JIT compilation: Part 1 - an interpreter - Eli Bendersky's website Adventures in JIT compilation: Part 2 - an x64 JIT - Eli Bendersky's website これらの記事を読み、part2まで真似して書いてみた。 brainf*ck jit · GitHub 記事では…

Rustで実行可能なメモリを確保

最近JITコンパイラを書いていて、実行可能なメモリ領域に命令列を直接書き込んで実行、ということがしたかった。 cならmmapなどで、PROT_EXECフラグを立ててメモリを確保するか、mprotectでPROT_EXECフラグを立ててやればいいという認識。 まず思いついたの…

Rust でマルチスレッドプログラミングのメモ

Rust でのマルチスレッドの勉強のためにぷよぷよっぽいゲームを書いているので、学んだことを書いておく。 Rust ではデータ競合は起こせない Rust はデータ競合 ( data races ) がないことを保証している。( data races であって race conditions ではない…

Rustでぷよぷよ風ゲーム

最近遊んでいたおもちゃが形になってきた。 こんなん。ターミナルでプレイするぷよぷよ風ゲームのようなもの。(得点とかないし、まだゲームオーバーすらない) (だいぶカクカクしているのは agif の変換の仕方の問題が大きい) Rust でマルチスレッドでプ…

Rust メモ Windows向けにクロスコンパイル

Windowsでも使いたいコードがあり、Linux上でWindows向けにクロスコンパイルをしてみたメモ。 rustupを使うと簡単にクロスコンパイルができる。 windows向けのtargetを探す $ rustup target list | grep win i586-pc-windows-msvc i686-apple-darwin i686-pc…

Rust メモ String に対して match

Rust の match は非常に強力。 様々なパターンマッチや、 destructuring が使えて非常に便利 詳しくは https://doc.rust-lang.org/book/match.html Patterns たまに String な変数に対して match を使いたいことがある。 が、こんなふうにやろうとしてももち…

Rust メモ Option | 値を取得して None で置き換える

Option を持つ構造体を扱っているときなどに、Option の値を取得してその後 None で置き換えたいことがある。 そんなときは take メソッド が使える。 Rust Playground fn main() { let mut x = Some(10); // Some(v) に対して呼び出すと Some(v) が返ってく…

Rust メモ リテラル

Reference ここにまとまっている https://doc.rust-lang.org/reference.html#literals 文字列関連 文字列関連は6つ 文字リテラル 文字列リテラル Raw文字列リテラル ( rの後に0個以上の任意個の # と " で囲う ) バイトリテラル バイト文字列リテラル Rawバ…

Rust メモ 文字列

文字列 &str と String がある。 通常の文字列リテラルは String ではなく &str. ( staticな生存期間を持つので &'static str. ) Raw String Literal https://doc.rust-lang.org/reference.html#raw-string-literals いわゆるヒアドキュメント的なもの。 複…

rust で数値からenumに変換する

rustのenumを定数を列挙するためだけに使いたいということもありますね?(ないですか?) そういう時、数値からenumに変換したいということがありますね?(ないですか?) rustのenumはこんなふうに定義します。 rustのenumはだいぶ高機能なのでいろんなこ…