我可以使用像传值方法这样的可变引用方法吗?
Can I use a mutable reference method like a value-passing one?
我可以使用像传值方法那样的可变引用方法吗?例如,我可以使用
o.mth(&mut self, ...)
作为
o.mth(self, ...)
这将使我能够 return 结果而不必担心 o
的生命周期。它可能涉及 move
闭包,或某种包装器?
对于上下文,我正在尝试使用 rust-csv 包 return 一个基于 CSV 记录的盒装迭代器,但迭代器的寿命不能超过 reader,Reader::records(&'t mut self)
borrows mutably. Contrast this with BufRead::lines(self)
,它会消耗其 reader,因此可以 returned 而不会出现生命周期问题。
不,你不能。 self
、&self
和 &mut self
方法之所以存在,是因为它们的行为不同,有不同的限制,允许不同的事情。
在这种情况下,您可能最终会尝试 to create an iterator that yields references to itself, which isn't allowed, or ,这也是不允许的。
我可以使用像传值方法那样的可变引用方法吗?例如,我可以使用
o.mth(&mut self, ...)
作为
o.mth(self, ...)
这将使我能够 return 结果而不必担心 o
的生命周期。它可能涉及 move
闭包,或某种包装器?
对于上下文,我正在尝试使用 rust-csv 包 return 一个基于 CSV 记录的盒装迭代器,但迭代器的寿命不能超过 reader,Reader::records(&'t mut self)
borrows mutably. Contrast this with BufRead::lines(self)
,它会消耗其 reader,因此可以 returned 而不会出现生命周期问题。
不,你不能。 self
、&self
和 &mut self
方法之所以存在,是因为它们的行为不同,有不同的限制,允许不同的事情。
在这种情况下,您可能最终会尝试 to create an iterator that yields references to itself, which isn't allowed, or