2016-12-15 39 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

回答

相關問題