Rust 有没有一种方法可以在所有引用类型上实现迭代器的特性?
我有一个特点Rust 有没有一种方法可以在所有引用类型上实现迭代器的特性?,rust,Rust,我有一个特点 trait Foo<T> : Iterator<Item=T> { fn bar(&mut self) -> f64; } 有没有一种不重复地实现这一点的好方法 你可以用这个特质来做这个。如果您查看文档页面中的实现者,前三个在这里是相关的:这意味着f64,&'aF64和&'aMutF64都实现借用。您必须对迭代器生成的每个值调用该方法才能获得&f64 use std::borrow::Borrow; impl<T> Fo
trait Foo<T> : Iterator<Item=T> {
fn bar(&mut self) -> f64;
}
有没有一种不重复地实现这一点的好方法 你可以用这个特质来做这个。如果您查看文档页面中的实现者,前三个在这里是相关的:这意味着f64
,&'aF64
和&'aMutF64
都实现借用
。您必须对迭代器生成的每个值调用该方法才能获得&f64
use std::borrow::Borrow;
impl<T> Foo<T::Item> for T
where T: Iterator,
T::Item: Borrow<f64>
{
fn bar(&mut self) -> f64 {
unimplemented!()
}
}
我不知道如何一次完成这一切。但是,在不确切了解您的目标的情况下,您可能可以通过使用
Borrow
trait?将重复的代码移动到helper函数中。午餐休息时,我不得不在我的C#job工作场所playpen快速测试这一点。。所以我想得不够快,无法准确地理解语法。不过,我很高兴我走上了正确的道路@SimonWhitehead在集成测试运行时,您可以将锈迹斑斑的代码清除掉。然后在单元测试运行时。然后,当智能感知绘制曲线时@Shepmaster哈哈-我希望如此。在一天当中,RIST和.NET之间的上下文切换有点不和谐;即使我有5分钟的时间在集成测试运行时切换上下文:
use std::borrow::Borrow;
impl<T> Foo<T::Item> for T
where T: Iterator,
T::Item: Borrow<f64>
{
fn bar(&mut self) -> f64 {
unimplemented!()
}
}
use std::borrow::Borrow;
trait Foo: Iterator {
fn bar(&mut self) -> f64;
}
impl<T> Foo for T
where T: Iterator,
T::Item: Borrow<f64>
{
fn bar(&mut self) -> f64 {
unimplemented!()
}
}