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

Отдельный тип с одним полем в Rust

Короткая запись структуры с одним полем задает новый тип, даже если внутри лежит обычное i32. Голое число в параметр с таким именем не подставить: оболочка вокруг числа собирает значение нового типа, а к самому числу обращаются через поле .0.

Здесь работает отдельная проверка. Функция, которая ждет голый i32, не примет значение оболочки, пока внутреннее поле явно не извлекут. Так разводят, например, идентификатор и индекс, хотя оба хранят целое.

Посмотрим объявление оболочки и доступ к полю:

struct UserId(i32); fn take(id: UserId) { let _ = id; } fn main() { let u = UserId(7); take(u); println!("{}", u.0); }

Дан следующий код:

fn main() { let n: i32 = 9; println!("{}", n); }

Объявите короткую структуру Tag с одним i32 внутри, соберите значение из n, выведите поле .0.

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

fn print_plain(x: i32) { println!("{}", x); } fn main() { let wrapped = Meters(4); }

Добавьте объявление Meters с одним i32, передайте в print_plain поле .0 от wrapped и выведите число.

Дано число:

let num = 11;

Объявите Seat как короткую структуру с i32, соберите значение из литерала, сохраните в переменной и выведите поле .0.

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