Практика на времена жизни в Rust
Даны строки:
let short = String::from("a");
let long = String::from("bbb");
Напишите функцию, которая возвращает более длинный фрагмент из двух общих ссылок, свяжите сроки в типах и выведите результат.
Дан текст:
let sample = String::from("code");
Объявите структуру с полем-ссылкой,
положите в нее sample, выведите
поле и убедитесь, что переменная еще
жива в момент вывода.
Дано слово:
let word = String::from("rust");
Запишите функцию с одной входной ссылкой, которая отдает первый ASCII-символ как подстроку, без явной пометки в сигнатуре, и выведите результат.
Дан черновик:
fn out() -> &str {
let t = String::from("x");
&t
}
Объясните, почему код не собирается,
и перепишите функцию так, чтобы она
возвращала текст "x" снаружи
законным способом.
Даны метки:
struct Pair<'a> {
left: &'a str,
right: &'a str,
}
Заполните структуру двумя литералами
"go" и "rust", выведите оба
поля и назовите срок, на который они
рассчитаны.
Даны функции:
fn longer<'a>(x: &'a str, y: &'a str) -> &'a str {
if x.len() >= y.len() { x } else { y }
}
let p = String::from("aa");
let q = String::from("b");
let r = longer(p.as_str(), q.as_str());
Допишите main, выведите r
до конца блока, где живут p и
q, и кратко опишите, что ограничивает
срок r.