2021-01-25 (月)

開発

昔書いた GitHub - koba-e964/RUSThello: A simple Reversi game, written in Rust with love. (Rust でのオセロ実装のフォーク) の自分で書いた場所だけ別のプロジェクトに切り出して、同時に WASM の勉強がてらオセロができる Web ページを作りたいと思ってからかなり時間が経った。なので置き場所のリポジトリを作った。命名センスがなく noirblanc のような安直な名前しか付けられない。
github.com
設計は未定だけどちゃんと真面目に考えたいな
以下ぼんやり考えていること

  • xxxx_core: 基本機能。棋譜から From したり棋譜へと Into したりもここ。エンジン用のインターフェイスもここに置くかどうか迷う。そもそもエンジンのコンフィグなんて個別具体事象なのにインターフェイスで抽象化できるのか? と思ったけど普通に最善手検討とかは共通しているから抽象化の意味はありそう
  • xxxx_ai: エンジン関連の機能置き場 複数のエンジンを置きたい場合どうしようかな 単に複数併置するだけかな
  • xxxx_interface: 外部とやり取りするための機能置き場 別のリポジトリに作ったほうがいいかもね
  • xxxx_learning: エンジンのパラメータ学習用の機能置き場 実装できるかな?

write! マクロが std::io::Error も std::fmt::Error も返せるの謎だったけど、std::fmt::Write - Rust あたりのドキュメントとかソースに、std::io::Write と std::fmt::Write それぞれが別の返り値型の write_fmt メソッドを定義することで実現している旨が書かれていた。std::io::Write::write_fmt を呼び出す際、Display などで定義された fmt メソッドとエラー型が違う問題をどうしているのかと思ったが、write_fmt のデフォルト実装内で対処していた。基本的に fmt::Write の枠組みの内部でやるが、write が io::Error を返したら内部にそのエラーを保持しつつ Err(fmt::Error) を返す。そりゃそうか


競プロ

進捗なし

チェス

chess.com bullet 1001 (進捗なし)
chess.com blitz 1089 -> 1091 (+2)
chess.com tactics: 2169 -> 2119 (-50)
lichess tactics: 2210 (進捗なし)