невозможно?
Только если &'static str
Ок, спасибо, меня static вначале смутил.
Могу я предложить немножко лайфтаймов? https://doc.rust-lang.org/1.45.0/book/ch10-03-lifetime-syntax.html
Вопрос про возврат ссылки намекает, что вы не понимаете лайфтаймы
Я надеялся Ник отвечает вам :D В общем, аннотации лайфтаймов — это хинт, а не способ реализации логики управления памяти Если лайфтаймы не сходятся, то аннотациями это не исправить. Чтобы вернуть ссылку с лайфтаймом меньше 'static, нужно чтобы данные, на которые мы ссылаемся, тоже были имели лайфтайм больший, чем лайфтайм ссылки. Соответственно в вашем примере, нельзя вернуть из функции ссылку на что-то, что существует только внутри скоупа функции. Это справедливо для любой функции, включая main. Ссылку вернуть нельзя, зато можно вернуть владеющий объект. Например, String.
Спасибо, что написал хороший ответ вместо меня :-))
Понял вас. Только не понятно, как указывается lifetime для объекта, который сразу передаётся по ссылке?
Я не понимаю вопрос, можете накидать пример чего вы хотите на play.rust-lang.org?
https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=af82b36d6584d6b0c5888d3c9a15fc49 Понимаю, что не правильно, но как сделать без выноса в переменную?
Проще всего тупо возвращать String
Это да, но мне чисто из интереса уже)
Во-первых, запись fn test<'a>() -> Result<(), &'a str> подразумевает, что вызывающий функцию может выбрать лайфтайм. Это редко имеет смысл, обычно fn test() -> Result<(), &'static str> лучший вариант
Обсуждают сегодня