Срок на всю программу в Rust
Есть особый срок, который длится весь запуск программы. Его ставят у текста в двойных кавычках в коде и у переменных, которые явно обещают смотреть на такие данные. Такой фрагмент лежит в бинарнике и не исчезает, пока процесс работает.
Литерал уже несет эту пометку без лишней записи:
fn main() {
let note = "fixed";
println!("{}", note);
}
Тип note здесь - общая ссылка
со сроком на всю программу. Ее можно
передавать туда, где ждут именно такой
долгий указатель, например в поле
структуры без привязки к локальной строке.
Тот же срок можно записать явно у переменной:
fn main() {
let s: &'static str = "hi";
println!("{}", s);
}
Дана структура:
struct Tag {
label: &'static str,
}
let tag = Tag { label: "ok" };
Выведите поле label и объясните,
почему сюда подходит литерал, а не
ссылка на String из функции.
Даны переменные:
let a = "one";
let b: &'static str = "two";
Выведите обе строки и скажите, чем
запись b отличается от a
в типе при одинаковом тексте в кавычках.
Дан фрагмент:
fn title() -> &'static str {
"book"
}
Вызовите функцию из main, сохраните
ссылку и выведите текст. Скажите, как
долго живет возвращаемое значение.