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

Сборка значения типа в Rust

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

Запишем функцию, которая собирает пользователя из имени и возраста:

struct User { name: String, age: i32, } impl User { fn new(name: String, age: i32) -> Self { User { name, age } } }

Соберем значение через эту функцию:

let user = User::new(String::from("ann"), 20); println!("{}", user.age);

На экране 20. В переменной лежит структура с переданными полями. К полям обращаются через точку, как у литерала.

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

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

struct User { name: String, age: i32, }

Запишите функцию new с двумя параметрами, которая возвращает готовое значение. Соберите пользователя с именем "kate" и возрастом 19 и выведите оба поля.

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

struct Tag { code: i32, label: String, }

Добавьте функцию new с кодом и подписью, создайте значение с 5 и текстом "ok" и выведите поле label.

Скажите, чем вызов через двойное двоеточие отличается от вызова метода через точку у переменной.

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