Подскажите, вот две функции, первая компилируется, а вторая нет, как

можно вторую исправить чтобы получилось вернуть &str, без Box::leak() это можно как-то сделать?

fn test_str() -> &'static str {
"text"
}

fn test_str_2() -> &'static str {
let s = "text".to_string();
let s = s.as_str();
s
}

9 ответов

6 просмотров

нельзя без утечки

Rusty brain-Krasilnikov Автор вопроса
Пух
нельзя без утечки

А первая функция это делает без утечки, засовывая строку в бинарник при компиляции?

Rusty brain-Krasilnikov Автор вопроса
Пух
да

ясно, спс

У меня от этого дико пригорает. Хочется везде использовать &str и String только там, где тебе это действительно нужно. А по факту ты вынужден участвовать в этом цирке со строками :(

ymdev
У меня от этого дико пригорает. Хочется везде испо...

звучит будто у тебя и раста разные понимания того где "реально нужны" String'и

Rusty brain-Krasilnikov Автор вопроса
ymdev
У меня от этого дико пригорает. Хочется везде испо...

Ну не знаю, я наоборот кайфую от строгости раста

ozkriff🇺🇦 Lesnikóv
звучит будто у тебя и раста разные понимания того ...

Если отталкиваться от того, что str имеет один и тот же размер, а String мы может изменять размер, то мы ожидаем простого применения. И вот в примере выше вроде очевидный кейс, когда я хочу просто взять и вернуть из функции str. А приходится заниматься конвертированием String -> str или жить с этими двумя строками.

ymdev
Если отталкиваться от того, что str имеет один и т...

возможность менять размер это же побочное свойство главного отличия - String владеет своими данными. и в примере выше, вроде как, очевидно, что нельзя возвращать из функции ссылку на временные данные - нужно возвращать именно объект, владеющий ими

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

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

всем привет. я правильно понимаю, что в телеграфе 4, если сессию указать у сообщения с коллбеком (кликнул на кнопку и установил сессию), то она не сохраняется?
Тимур
1
Ребята, я за проф советом😅 По микросервисам. В монолите есть общие файлы для сервисов: фетчи, конфиги, либы, утилсы.. как при распиле правильно их поддерживать? Пока вариант д...
Александр Тарасюк
1
а что делать если тебя убивают на картах?
Yarik yarik kyda ti lezesh
43
Подскажите где можно прочитать про реализацию возможности писать человеку при подписке на телеграм канал от имени бота? Было бы не плохо если для Telegraf@3.38.0
Pan Lipton
10
Мне вот что интересно, кто на рфе стартовал/играл, что вы фармили, в каком виде контента он прямо хорош? Экспедиция? Вроде прямо на замазанных мапах рф сдувается
Владислав
20
‌/r/pathofexile moderation changes top scoring links : pathofexile (RSS) Hi, everyone. On behalf of the subreddit mod team, I’m here to give you a few updates on the subreddi...
Esionru
3
Кто нибудь поясните это всё таки вброс или да? Про санктум слышал на поедб вбросили, а по дурке откуда инфа и на сколько это вообще правда? Пахнет шизофренией какой-то ✅Divi...
Dmitry Ritter
9
У вас бывает ощущение, что хочется потратить весь отпуск на то, чтоб только спать?
Николай
15
У меня вопрос к знающими, стоит ли вступать в гильдии в игре или лучше полная свобода?
Енот Полоскун
17
Как можно настроить фильтр в пое под себя?
Yarik yarik kyda ti lezesh
15
Карта сайта