“可以提供一个迭代器,其元素的生存时间与自身一样长”的Rust特性

时间:2019-05-02 23:43:07

标签: rust iterator

我想为可以提供Iterator的{​​{1}}的对象定义一个特征,其中&usize引用的寿命与该对象的寿命相同。

为了更具体一点,我想要类似

usize

但是我不希望必须在特征上指定lifetime参数。我希望一种能够实现trait Inventory<'a> { type InvInter: Iterator<Item = &'a usize>; fn inventory(&'a self) -> Self::InvIter; } 的结构,其值Inventory由我持有的引用的生存期决定。

我遇到过the generic associated types RFC,这表明类似的事情不可能实现。不幸的是,我在Rust方面还不够出色,无法确定我想做的事情是否也是不可能的。

有没有办法做到这一点?

我意识到我可能只想问一个'a,因为Iterator<Item = usize>是一种(便宜的)usize类型,但这并不好。特别是,我不了解如何在不首先克隆它的情况下为Copy的一部分实现这一点。

0 个答案:

没有答案