2016-12-15 77 views
1

我可以使用像传值类似的可变引用方法吗?例如,我可以用我可以使用可变参考方法吗?

o.mth(&mut self, ...) 

o.mth(self, ...) 

这将让我无需担心o寿命返回结果。它可能涉及一个move闭包,或某种包装?

对于上下文,我试图返回一个使用rust-csv包的CSV记录盒装迭代器,但迭代器不能超过读者,Reader::records(&'t mut self)可变地借用。将其与BufRead::lines(self)进行对比,这会消耗读者,因此可以在没有生命期问题的情况下返回。

+1

相关:http://stackoverflow.com/q/36645452/155423,http://stackoverflow.com/q/30488928/155423,http://stackoverflow.com/q/38797960/155423 - 无论出于何种原因,每个人都想要返回一个CSV迭代器。 – Shepmaster

+0

由于没有借用迭代器元素,它看起来像记录迭代器可能被重新编写,以便按值读取“R:Read”。由于'&mut R'实现了'Read where R:Read',它涵盖了两种情况。 – bluss

+0

@bluss是的,我很惊讶。我认为他们会是字符串切片。尽管如此,这种变化仍然是一次突然的API变化,但并不是一个适应性很差的变化。 – Shepmaster

回答