Rust

rust-lang / regexは線形時間で正規表現のマッチが出来るらしい

この記事は Rust Advent Calendar 2022 1日目の記事です。 正規表現によるパターンマッチについて、ナイーブな深さ優先探索による正規表現のマッチを考えるとパターンの複雑さによって計算時間が大幅に変化しそうです。例えば文字列 aaaaaaaa がパターン (aa…

Rust 1.60.0で安定化されたSource-based Code Coverageを試してみる

本日リリースの Rust 1.60.0 の目玉機能の一つであるSource-based Code Coverage(バイナリ実行時に行レベルでの実行回数を記録する機能)を動かしてみました。 手順を覚えておくと手元で簡単に実行時のカバレッジ計測ができてデバッグに役立ちそうだと感じ…

Rustで速習ゲーム木探索

二人零和有限確定完全情報ゲームである三目並べを作ってゲーム木探索を学びましょう。ボードゲームの強いAIが作れるようになります。本記事のゴールであるモンテカルロ木探索に向けて全探索・ランダム・原始的なモンテカルロ探索・モンテカルロ木探索の順で…

Rustを始めるためのフローチャートと学習資源

2022年に向けてRustを初めたい人向けにRustを始めるためのフローチャートと学習資源の紹介をします。 環境構築 rustup.rs - The Rust toolchain installer 本当にコマンド1行でインストールできるので今すぐやりましょう。 Rust Playground オンラインで動か…

build.rs から標準出力への出力内容は -vv フラグをつけると確認できる

結論 build.rs で print デバッグができなくて困っている方は cargo build -vv を実行すると幸せになれると思います。 こんちには、matsu7874です。 Cargo は build.rs というファイルを作成しておくと、 cargo build 時に src/ 以下のコンパイルの前に buil…

平方根の値を計算する方法(二分法・ニュートン法・開平法)について

平方根の値を計算する3種類の方法(二分法・ニュートン法・開平法)について紹介し、それぞれPythonとRustでの実装例を示しました。

RustのCLIツールにバージョン情報を出力するオプションを追加する方法

Rust Advent Calendar 2019の24日目の記事です。 バイナリファイルを配布して運用してもらうとなると、version情報の出力は必須オプションですね。 この記事ではCargo.tomlのversionを出力する方法を、RustでCLIツールを開発する際の標準的なcrateであるClap…

RustでBrainfuckのインタプリタを実装する

実践Rust入門の9章はRustで電卓のインタプリタを実装する内容になっています。今回はそれのBrainfuck版を実装しました。 https://amzn.to/2K52yMM まとめ RustでBrainfuckのインタプリタを実装しました。 オーバーフローを無視して計算する wrapping_add, wr…

拙速版!『Rust LT #3』に参加しました

株式会社リクルートテクノロジーズのキレイな会場で開かれたRust LT #3に参加&LTをしてきました。眠たいのでイベントレポート拙速版で公開します。 当日の様子は#rust_jpをチェック。 発表資料は各タイトルからリンクにしてます。 std::pin の勘所 Rust歴4…

「Rust LT #2 〜いま使う!Rust〜」のイベントレポート

最近仕事でRustも書いているので、LT会行ってみようということでRust LT #2 〜いま使う!Rust〜に参加枠で参加しました。記念にブログを書きます。 トーク2本とLT5本と、盛りだくさんな内容でした。 会場 主催のどらやき(@dorayaki_kun)さんさんの勤務先で…