Всем привет. может кто-нибудь подсказать, почему код не работает без

заимствования?
код полностью: https://play.rust-lang.org/?version=stable&mode=debug&edition=2021&code=%0A%0Afn+main%28%29+%7B%0A++++println%21%28%22Start%3A+main%28%29%3B%22%29%3B%0A++++my_func%28%29%3B%0A%7D%0A%0Afn+my_func%28%29+%7B%0A++++let+mut+i+%3D+0%3B%0A++++let+mystring%3A+%26str+%3D+%22Test+string+from+stack%22%3B%0A++++let+mut+mutual_string%3A+String+%3D+String%3A%3Afrom%28%22Stop+string+%7BN%7D%22%29%3B%0A++++%0A++++loop+%7B%0A++++++++println%21%28%22Hello+%7B%7D%22%2C+i%29%3B%0A++++++++i+%3D+i+%2B+1%3B%0A++++++++if+i+%3D%3D+10+%7B%0A++++++++++++mutual_string+%3D+mutual_string.replace%28%22%7BN%7D%22%2C+i.to_string%28%29%29%3B%0A++++++++++++println%21%28%22Stop%3A+%7B%7D%22%2C+mystring%29%3B%0A++++++++++++println%21%28%22Stop%3A+%7B%7D%22%2C+mutual_string%29%3B%0A++++++++++++break%3B%0A++++++++%7D%0A++++++++%2F%2Fbreak%3B%0A++++%7D%0A++++%0A++++%0A++++%0A%7D

работает, если написать &i:
mutual_string = mutual_string.replace("{N}", &i.to_string());

не работает, если не писать:
mutual_string = mutual_string.replace("{N}", i.to_string());

выдает ошибку:
expected &str, found String

5 ответов

17 просмотров

компилятор всё чётко сказал - нужна ссылка

Daniel- Автор вопроса
ognevny
компилятор всё чётко сказал - нужна ссылка

&str - ссылка на строку String? я понял по прочтению доки что &str это срез на значение в стеке, а не тип ссылки на String

компилятор так хорошо устроен, что он легко превращает &String в &str. а так &str независим от String, это просто ссылка на str

Daniel- Автор вопроса
ognevny
компилятор так хорошо устроен, что он легко превра...

в моем примере он ругается: expected &str, found String . т.е. он не перевел String в &str. Итого я понял так, что причина в том, что сам метод .replace() принимает вторым аргументом только &str

Daniel
в моем примере он ругается: expected &str, found S...

потому что он может String в &str перевести буквально. можно str -> String (.to_string() ИЛИ .to_owned()) &String -> &str (если не ошибаюсь, то это делает трейт Deref)

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

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

Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
Ребята, всем привет. Подскажите, пожалуйста, можно ли как-то через бота понять, что этого бота добавили в группу\канал и выдали ему права администратора?
Artem Stormageddon
9
Привет всем! Почему этот код не срабатывает при добавлении или удалении пользователя из чата? bot.on('chat_member', async (ctx) => { console.log(ctx); }) bot.launch({allo...
Alexander
7
Всем привет. Не понимаю, в чём тут шутка юмора. Убирается только разрешение на send_messages. А send_media_messages остаётся. Как сделать, чтобы оба убирались? await b...
Alexander
2
Есть тут кто занимается разработкой серваков майна? Или знакомые
meow *
3
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Есть ли лимиты на кол-во вебхук по домену? Стоит в данный момент 900+ ботов и бывает бот перестает отвечать (не приходят вебхуки) 🐒 Помогает только перезапуск
ᅠ [ Кому не ответил, дублируйте ]
11
Товарищи, здравствуйте Подскажите, пожалуйста, может кто-нибудь сталкивался с такой задачей Через вебапку можно сканировать qr-код, а есть ли возможность считывать nfc?
Artem Stormageddon
8
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Карта сайта