можно вторую исправить чтобы получилось вернуть &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
}
нельзя без утечки
А первая функция это делает без утечки, засовывая строку в бинарник при компиляции?
ясно, спс
У меня от этого дико пригорает. Хочется везде использовать &str и String только там, где тебе это действительно нужно. А по факту ты вынужден участвовать в этом цирке со строками :(
звучит будто у тебя и раста разные понимания того где "реально нужны" String'и
Ну не знаю, я наоборот кайфую от строгости раста
Если отталкиваться от того, что str имеет один и тот же размер, а String мы может изменять размер, то мы ожидаем простого применения. И вот в примере выше вроде очевидный кейс, когда я хочу просто взять и вернуть из функции str. А приходится заниматься конвертированием String -> str или жить с этими двумя строками.
возможность менять размер это же побочное свойство главного отличия - String владеет своими данными. и в примере выше, вроде как, очевидно, что нельзя возвращать из функции ссылку на временные данные - нужно возвращать именно объект, владеющий ими
Обсуждают сегодня