gpt4 book ai didi

rust - 为什么在这种情况下不允许关联类型?

转载 作者:行者123 更新时间:2023-12-02 18:29:39 24 4
gpt4 key购买 nike

trait Envs {
type Item;
type Iter: Iterator;
fn get_envs(&self) -> Self::Iter<Item=Self::Item>;
}

我正在尝试实现返回环境变量的方法,但我无法弄清楚为什么特征中不允许关联类型。

最佳答案

trait Envs {
type Item;
type Iter: Iterator<Item = Self::Item>;
fn get_envs(&self) -> Self::Iter;
}

Playground link

如果您像上面那样操作,它将限制特征的实现者指定 Iterator其关联类型与 Envs::Item 相同。所以,Envs::Item需要与 <Envs::Iter as Iterator>::Item 相同.


如果你喜欢:

trait Envs {
type Item;
type Iter: Iterator;
fn get_envs(&self) -> Self::Iter;
}

这将允许实现者指定 Iter它不会返回与 Envs::Item 相同的元素。因此,在这种情况下,Envs::Item 可能是这样的。是i32但是Envs::IterIterator超过String .

关于rust - 为什么在这种情况下不允许关联类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69593557/

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