library-rs
library-rs copied to clipboard
実装について
セグ木のアーチのところ、左側.chain(右側) みたいなイテレータを返す内部関数を作っておけば、見かけの実装がきれいになりそう
Vec を使わないようにもできそうだし
片側しか吐かなくていいなら他方はシフトだけしてればいい? だめか、だめだね
Mod みたいな実行時に決まりうる値をトレイトにするの、Mod っていう限定的な名前にする必要ないね
Distributive を実装するためのヘルパーがないじゃん
2-SAT のインタフェース、
ts.add_clause(i, -j);
じゃなくて
ts.add_clause((i, true), (j, false));
の方がうれしい?
セグ木とかでよく境界チェックしてるけど、毎回書くんじゃなくて https://doc.rust-lang.org/src/core/panicking.rs.html#67-77 みたいな感じで関数を作っておく方が楽そう
fn panic_bounds_check(by: impl Debug, safe: impl Debug) -> ! {
panic!("index out of bounds: the safe range is {:?} but accessed by {:?}", safe, by)
}
とかみたいな感じで
by: usize, safe: Range<usize> に限定していい? だめかな