РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
517 of 1245 menu

Паттерн rest ..

Паттерн .. (rest pattern) используется при деструктуризации структур в match, let и других конструкциях сопоставления с образцом. Он позволяет не перечислять все поля структуры явно, а указать только нужные, проигнорировав оставшиеся. Паттерн .. ставится в конце списка полей и не принимает никаких параметров.

Синтаксис

StructName { field1, field2, .. }

Пример

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

struct Point { x: i32, y: i32, z: i32, } fn main() { let p = Point { x: 1, y: 2, z: 3 }; let Point { x, .. } = p; println!("{}", x); }

Результат выполнения кода:

1

Пример

Давайте извлечём первое и последнее поля, проигнорировав среднее:

struct Point { x: i32, y: i32, z: i32, } fn main() { let p = Point { x: 1, y: 2, z: 3 }; let Point { x, z, .. } = p; println!("{} {}", x, z); }

Результат выполнения кода:

1 3

Пример

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

struct Point { x: i32, y: i32, } fn main() { let p = Point { x: 0, y: 5 }; match p { Point { x: 0, .. } => println!("on y axis"), Point { y: 0, .. } => println!("on x axis"), Point { .. } => println!("somewhere else"), } }

Результат выполнения кода:

"on y axis"

Смотрите также

  • паттерн destructure,
    который выполняет деструктуризацию структуры
  • паттерн update-syntax,
    который обновляет поля структуры из другой структуры
  • конструкция literal,
    которая создаёт экземпляр структуры
  • доступ к полям field-access,
    который позволяет обращаться к полям структуры
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить