Могу ли я использовать изменяемый ссылочный метод, как передающий значение? Например, можно использоватьМогу ли я использовать изменяемый ссылочный метод, как передающий значение?
o.mth(&mut self, ...)
в
o.mth(self, ...)
Это позволит мне возвращать результат, не заботясь о жизни o
. Это может быть закрытие move
или какой-то оберткой?
Для контекста я пытаюсь вернуть коробчатый итератор по CSV-записям, используя пакет ржавчины-csv, но итератор не может пережить читателя, который Reader::records(&'t mut self)
усматривает зависание. Сравните это с BufRead::lines(self)
, который потребляет его читатель и, следовательно, может быть возвращен без проблем с продолжительностью жизни.
http://www.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