- 92 名前:デフォルトの名無しさん mailto:sage [2021/11/22(月) 11:46:24.84 ID:EEj8G+es.net]
- >>90
イテレータ版の方がfor_each以外とも組み合わせられるからAPIとして良いと思う >>87 しかしトレイト境界でnum::Zeroしか求められないのはstd::ops::Range周りの設計がおかしいと思われる 普通に実装すれば初期値(num::Zero)に増分(num::One)を加えて(ops::Add)いって比較(ops::PartialOrd)が必要となる 実際にnum::rangeによるイテレータ版times()の実装は Clone + PartialOrd + num::Zero + num::One となる fn main() { let n = 5; // 任意の整数型 n.times().for_each(|n| println!("OK {}", n)); } trait Times<T: Sized> { fn times(self) -> num::iter::Range<T>; } impl<T: Clone + PartialOrd + num::Zero + num::One> Times<T> for T { fn times(self: T) -> num::iter::Range<T> { num::range(T::zero(), self) } }
|

|