假设关联类型具有适当的特征绑定,如何在迭代器中将0.0或任何其他数字转换为关联的Item类型?以下代码描述了我的尝试。
use num::Float;
use std::iter::Iterator;
pub struct Signal<S>
where S: Iterator, S::Item: Float
{
signal: S,
val: S::Item,
}
impl<S> Signal<S>
where S: Iterator, S::Item: Float
{
pub fn new(signal: S) -> Self {
Signal {
signal: signal,
val: S::Item::from(0.0),
}
}
}
我当前收到错误消息:预期的关联类型,找到了浮点变量
答案 0 :(得分:2)
NumCast::from
似乎是最好的选择。我建议不要导入它,因为方法名与广泛使用的From::from
冲突。
use num::Float;
use std::iter::Iterator;
pub struct Signal<S>
where S: Iterator, S::Item: Float
{
signal: S,
val: S::Item,
}
impl<S> Signal<S>
where S: Iterator, S::Item: Float
{
pub fn new(signal: S) -> Self {
Signal {
signal: signal,
val: num::NumCast::from(0.0).unwrap(),
}
}
}
答案 1 :(得分:2)