【发布时间】:2023-02-10 21:29:11
【问题描述】:
我有这个枚举:
enum Node<T> {
Leaf(T),
Children(Vec<Node<T>>),
}
并希望为 Node 实现 Iterator 特征。
我创建了这个结构并尝试实现 IntoIterator 特征:
struct NodeIter<'a, T>{
children: &'a [Node<T>],
parent: Option<&'a Node<T>>,
}
impl<'a, T> IntoIterator for Node<T> {
type Item = T;
type IntoIter = NodeIter<'a, T>;
fn into_iter(self) -> Self::IntoIter {
todo!()
}
}
我无法找出正确的生命周期说明符,我最终得到这个错误:
error[E0207]: the lifetime parameter `'a` is not constrained by the impl trait, self type, or predicates
--> src/tree_my.rs:44:6
|
44 | impl<'a, T> IntoIterator for Node<T> {
| ^^ unconstrained lifetime parameter
我是 Rust 的新手,我不确定我是做错了还是不可能。因为我读过类似的问题。这个问题似乎与特征(在我的例子中是IntoIterator)和相关类型有关。我还阅读了一些关于 GAT 的内容。
也许有人可以解释这个问题以及如何解决它。
【问题讨论】:
标签: rust lifetime associated-types