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

Несколько имен в одной пометке в Rust

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

Несколько имен пишут в одной пометке через запятую. Компилятор по очереди допишет выполнение каждого трейта из списка:

#[derive(Debug, Clone, PartialEq, Eq)] struct User { name: String, age: i32, } fn main() { let original = User { name: String::from("ann"), age: 20, }; let twin = original.clone(); println!("{:?}", twin); println!("{}", original == twin); }

Сначала на экране строка отладки с полями, затем "true" от сравнения. Порядок имен в списке на результат не влияет, главное - не забыть все нужные трейты сразу.

Для структуры только из чисел иногда добавляют и копирование при записи рядом с явной копией:

#[derive(Debug, Copy, Clone, PartialEq, Eq)] struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 3, y: 4 }; let q = p; println!("{:?} {}", q, p == q); }

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

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

Запишите одну пометку с печатью, явной копией и двумя именами равенства. Выведите копию форматом {:?} и результат == с исходным значением.

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

struct Pair { left: i32, right: i32, }

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

Скажите, чем один список имен в одной пометке удобнее нескольких строк над типом.

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