Ссылка на строку в функцию в Rust
Чтобы функция прочитала текст, не забирая
строку, параметр объявляют как ссылку.
Тип &str подходит и для литерала,
и для String, если передать
ссылку на содержимое владельца.
Опишем функцию для печати и сохраним строку снаружи после обращения к ней:
fn show(name: &str) {
println!("{}", name);
}
fn main() {
let name = String::from("ann");
show(&name);
println!("{}", name);
}
На экране два раза "ann". Имя
name по-прежнему владеет текстом.
Тот же прием работает с готовым литералом:
fn show(title: &str) {
println!("{}", title);
}
fn main() {
show("rust");
}
Дан следующий код:
fn len_hint(text: &str) {
println!("{}", text.len());
}
fn main() {
let word = String::from("book");
len_hint(&word);
}
Добавьте печать word после
обращения к функции и убедитесь, что
имя остается рабочим.
Напишите функцию tag_line, которая
принимает текст по ссылке и печатает
его, а в main передайте строку
"prime" так, чтобы владелец
остался снаружи.
Скажите, можно ли после функции со
ссылочным параметром снова дописать
текст в String, если владение
не передавали.