1
我可以使用像傳值類似的可變引用方法嗎?例如,我可以用我可以使用可變參考方法嗎?
o.mth(&mut self, ...)
爲
o.mth(self, ...)
這將讓我無需擔心o
壽命返回結果。它可能涉及一個move
閉包,或某種包裝?
對於上下文,我試圖返回一個使用rust-csv包的CSV記錄盒裝迭代器,但迭代器不能超過讀者,Reader::records(&'t mut self)
可變地借用。將其與BufRead::lines(self)
進行對比,這會消耗讀者,因此可以在沒有生命期問題的情況下返回。
相關:http://stackoverflow.com/q/36645452/155423,http://stackoverflow.com/q/30488928/155423,http://stackoverflow.com/q/38797960/155423 - 無論出於何種原因,每個人都想要返回一個CSV迭代器。 – Shepmaster
由於沒有借用迭代器元素,它看起來像記錄迭代器可能被重新編寫,以便按值讀取「R:Read」。由於'&mut R'實現了'Read where R:Read',它涵蓋了兩種情況。 – bluss
@bluss是的,我很驚訝。我認爲他們會是字符串切片。儘管如此,這種變化仍然是一次突然的API變化,但並不是一個適應性很差的變化。 – Shepmaster