gpt4 book ai didi

iterator - 如何为任何可迭代类型实现特征?

转载 作者:行者123 更新时间:2023-11-29 08:06:36 24 4
gpt4 key购买 nike

我想实现一个通用方法,该方法可在任何迭代特定类型的容器或迭代器上调用,例如&[u32] , Vec<u32> , (0..99u32)

The following code不编译:

trait Foo { fn foo(self); }

impl Foo for std::iter::IntoIterator<Item=u32> {
fn foo(self) {}
}

error: the value of the associated type IntoIter (from the trait core::iter::IntoIterator) must be specified [E0191]

impl Foo for std::iter::IntoIterator<Item=u32> {

需要为 IntoIter 指定的内容关联类型? ( std::iter::IntoIterator<Item=u32,IntoIter=???> )

这样就可以了:

vec![0u32].foo()

最佳答案

这里正确的语法是impl<T> SomeTrait for T where T: OtherTrait .这有效:

trait Foo { fn foo(self); }

impl<T> Foo for T
where T: std::iter::IntoIterator<Item=u32>
{
fn foo(self) {}
}

fn main() {
vec![0u32].foo()
}

关于iterator - 如何为任何可迭代类型实现特征?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34467346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com