这是出于爱好/学习的目的。我试图推出我自己的中心间隔树实现-我想为我的IntervalTree
结构体做一个From<C>
,其中C
是一些通用的“可迭代”集合。
为了做到这一点,我有两个主要步骤:
1.执行for a in &coll
以计算“中心”
1.执行for a in coll
以使用集合并构建树
似乎我需要为C
提供两个类型边界:
C: IntoIterator<Item = A>,
&C: IntoIterator<Item = &A>
在遵循编译器的建议之后,我得到了到处都是的生存期界限,并且得到了一个我不知道如何解决的错误:
x一个一个一个一个x一个一个二个x
我可以通过接受Vec<A>
来使我的生活更轻松,但由于这是“仅仅为了好玩”,我想我应该尝试使用类型泛型。
1条答案
按热度按时间lp0sw83n1#
因为你使用了一个通用的生存期,所以调用者需要选择它。但是调用者选择的生存期不一定与
coll
的生存期匹配(事实上,它永远不可能匹配),这就是错误。你想要的是Higher-Ranked Trait Bounds,这意味着
Iterator
在 * 每个 * 生命周期都实现: