Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗rsSpLfEx 28 of 288 menu
◀ ▶

Явная пометка у ссылки в Rust

Когда функция возвращает ссылку на текст, компилятор должен понять, чей срок она не превышает. Если оба аргумента - ссылки на строки, а результат тоже ссылка, у всех трех мест ставят одну и ту же пометку. Тогда возвращаемый кусок не переживет ни одну из исходных строк.

Если пометки у параметров и результата разойдутся без причины, сборка покажет несогласованность. Результат не может жить дольше самого короткого из связанных с ним входов.

Запишем функцию, которая отдает более длинный из двух фрагментов:

fn longest<'a>(a: &'a str, b: &'a str) -> &'a str { if a.len() >= b.len() { a } else { b } } fn main() { let first = String::from("go"); let second = String::from("rust"); let pick = longest(first.as_str(), second.as_str()); println!("{}", pick); }

Даны две переменные:

let left = String::from("ab"); let right = String::from("abc");

Допишите функцию с двумя общими ссылками на строки и результатом-ссылкой, которая возвращает более длинный фрагмент, и выведите ее результат.

Дана сигнатура без тела:

fn head(a: &str, b: &str) -> &str;

Скажите, чего не хватает для функции, которая возвращает одну из входных ссылок, и что нужно добавить в типы.

Даны фрагменты:

let x = String::from("one"); let y = String::from("two"); let z = longest(x.as_str(), y.as_str());

Объясните, до какого момента можно читать через z после этого блока.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить