rust - 如何通过另一个特征扩展 IntoIterator?
问题描述
我正在尝试定义一个扩展 IntoIterator 的特征,以实现类似于下面代码的功能,但“关联的类型默认值是不稳定的”(https://github.com/rust-lang/rust/issues/29661)。
还有其他方法可以实现吗?
pub trait MyTrait : IntoIterator{
type Item = i32;
fn foo(&self);
}
pub fn run<M: MyTrait>(my : M){
my.foo();
for a in my {
println!("{}", a);
}
}
解决方案
我想你想要的是这样的:
trait MyTrait: IntoIterator<Item = i32> {
fn foo(&self);
}
这意味着:实现你的 trait 的所有东西也实现IntoIterator
了 where the Item
is i32
。或者换一种说法:所有的实现者MyTrait
也可以变成i32
s 上的迭代器。
推荐阅读
- python - 如果输入无效,如何让while循环重复?
- teradata - 使用 SQL ASSISTANT 将 CSV 文件导入 teradata
- swiftui - 如何从 QLThumbnailGenerator 正确返回图像?(SwiftUI)
- r - 将 API 响应从 JSON 转换为 R Data DataFrame
- excel - 在 Excel 中更新多个图表
- ios - 客户端应用程序错误 - UITargetedPreview 的视图或容器当前都不在窗口中
- powershell - Powershell删除包含多个文本文件的文件夹中的重复行
- javascript - 为什么这个被注释掉的函数不能达到与它下面的 if 语句相同的结果?我怎样才能让它发挥作用?
- c++ - 当您首先将名称存储在变量中时,您如何命名一个类?
- c# - 使用 IEnumerator 和使用数组作为属性之间的区别