Нужно сделать метод структуры который принимает &self, изменяет её и

возвращает Self. В моём понимании это должно быть примерно как в не закомментированном куске кода, но погуглив я пришёл ко второму и видимо он верный НО. Это же создание новой структуры? На мой взгляд так не верно, в общем как правильно должно быть?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&gist=e44b616d801481da0aa33c2dd68c97ce

2 ответов

8 просмотров

&mut self

Единственный верный вариант - создать новый экзембляр структуры (как раз как в закомментированном куске), потому что: 1) метод возвращает Self, т.е. надо вернуть владение над каким-то экзембляром 2) метод принимает &self, и значит ничего не может в нем менять Если менять сигнатуру нельзя, то правильно как в закомментированном куске Если можно, я бы сделал так скорее: fn add(mut self, v: u32) -> Self { self.val += v; self }

Похожие вопросы

Обсуждают сегодня

кто-нибудь отправлял ли групповые медиа с entites? что бы были гипер ссылки const result = await this.client.invoke( new Api.messages.SendMultiMedia({ silen...
Kokni
3
Все привет, можно ли получить id group, когда добавили бота в group chat? А не реагировать на месседж в чате и тд
Oleksii Miuskyi
1
Короче это как обычный сайт?
Roma
1
это как-то фиксится?
Shen
4
if (user?.choseType === 'oneDay') { await ctx.reply( 'Добро пожаловать в команду «Магнита»! Правда, на один день ☺️ ', ); await ctx.s...
Kokni
1
Сonst magicTgHTML = (text, entities) => { let processedText = text; let offsetShift = 0; entities.forEach(entity => { const { offset, length, type, url, ...
Андрей
1
А у тебя есть информация сколько сейчас использует твой бот?
Artem Stormageddon
4
Привет всем, как я могу парсить из одного и отправлять в другой канал group media?
Kokni
2
всем салют сегодня утро заметил что бот не может отправлять фотки по url. ручками в браузере ссылка норм открывает фотки. падает ошибка 'Bad Request: failed to send message ...
Vasya Ivanov
9
а есть какая нить ссылка для быстрого открытия меню со старсами? типа tg://stars
Андрей
6
Карта сайта