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

Общая ссылка в методе в Rust

Первый параметр метода часто задают как общую ссылку на значение. Так метод только читает поля и не забирает владение: переменная снаружи остается на месте и ее можно использовать дальше после вызова.

Запишем метод, который возвращает возраст пользователя:

struct User { name: &'static str, age: i32, } impl User { fn age(&self) -> i32 { self.age } }

Создадим значение и вызовем метод:

let user = User { name: "ann", age: 20 }; let years = user.age(); println!("{}", years);

На экране 20. Метод обращается к полю через общую ссылку и отдает копию числа. Сама переменная user после вызова по-прежнему жива и ее поля доступны.

Тот же прием подойдет для подписи из имени или сравнения полей без записи обратно:

struct User { name: &'static str, age: i32, } impl User { fn adult(&self) -> bool { self.age >= 18 } }

Проверим возраст у значения:

let user = User { name: "bob", age: 16 }; let ok = user.adult(); println!("{}", ok);

Дана структура:

struct User { name: &'static str, age: i32, } let user = User { name: "kate", age: 19 };

Добавьте метод с общей ссылкой, который возвращает поле age, и выведите результат вызова.

Дана структура:

struct Tag { code: i32, label: &'static str, } let tag = Tag { code: 7, label: "ok" };

Запишите метод, который возвращает поле label, и выведите его.

Дана структура:

struct User { name: &'static str, age: i32, } let user = User { name: "leo", age: 17 };

Добавьте метод, который возвращает true, если возраст не меньше 18, иначе false. Выведите результат.

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