我想为可以提供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
的一部分实现这一点。