В настоящее время я пишу программу, и в какой-то момент мне приходится иметь дело со структурой, содержащей значения &str
.Давайте рассмотрим, как это выглядит:
struct Book<'a> {
url: &'a str,
}
У меня есть функция, которая выбирает книгу из удаленного хранилища и возвращает URL-адрес, указывающий на эту книгу, который выглядит следующим образом:
fn fetch_book<'a>(id: u64) -> Book<'a> {
// do some stuff to get a 'key' variable that allows to access the book
Book {
// Here we turn the formatted String into an &str
url: &format!("https://<ip-address>/books?id={}&key={}", id, key)
}
}
Эта функция не будет компилироваться, потому что Rust сообщает, что мы возвращаем значение, которое ссылается на данные, принадлежащие текущей функции.
Итак, что я могу сделать, чтобы эта функция работала правильно (без перехода unsafe
)?