我想我可能是愚蠢的,但我想不明白这件事.
我有一个函数,它接受一个泛型整数类型T
,我使用该类型T
创建一个范围,并希望将该范围收集到一个Vec<T>
.问题是我得到了以下错误method cannot be called on
RangeInclusive due to unsatisfied trait bounds
.它继续说,以下特性边界没有得到满足:T: Step
.
步骤std::iter::Step
或core::iter::Step
都被列为不稳定.
我做了一些挖掘,它似乎还没有达到stable.他们还提到编译器错误需要修改,但没有说明如何实际做我需要做的事情.
一些示例代码:
use num_traits::int::PrimInt;
fn collect_range<T>(number: T) -> Vec<T>
where T: PrimtInt + std::ops::Add<Output = T> + std::cmp::PartialOrd + Copy, {
(T::zero()..=number).collect()
}
错误出现在最后一行的collect()
.
我的问题是,这是不可能的,我需要实现其他的东西吗?
我想我可以自己循环遍历迭代器来完成它,但似乎奇怪的是Collect在这里不工作.