Выбрать главу

let pasted = WebEvent::Paste("мой текст".to_owned());

let click = WebEvent::Click { x: 20, y: 80 };

let load = WebEvent::PageLoad;

let unload = WebEvent::PageUnload;

inspect(pressed);

inspect(pasted);

inspect(click);

inspect(load);

inspect(unload);

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Если вы используете псевдонимы типов, то вы можете обратиться к каждому варианту перечисления через его псевдоним. Это может быть полезно если перечисление имеет слишком длинное имя или слишком много обобщений и вы хотите переименовать его.

enum VeryVerboseEnumOfThingsToDoWithNumbers {

Add,

Subtract,

}

// Создаётся псевдоним типа

type Operations = VeryVerboseEnumOfThingsToDoWithNumbers;

fn main() {

// Мы можем обратиться в каждому варианту перечисления через его

// псевдоним, а не через его длиное неудобное имя.

let x = Operations::Add;

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Наиболее частое место, где вы можете это увидеть, это impl-блоки, которые используют Self.

enum VeryVerboseEnumOfThingsToDoWithNumbers {

Add,

Subtract,

}

impl VeryVerboseEnumOfThingsToDoWithNumbers {

fn run(&self, x: i32, y: i32) -> i32 {

match self {

Self::Add => x + y,

Self::Subtract => x - y,

}

}

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Чтобы больше узнать о перечислениях и псевдонимах типов, вы можете почитать отчёт о стабилизации, в котором эта возможность была включена в Rust.

match, fn, String и "Type alias enum variants" RFC

Декларация use используется, чтобы убрать необходимость указывать область видимости:

// Атрибут, который убирает предупреждения компилятора

// о неиспользуемом коде

#![allow(dead_code)]

enum Status {

Rich,

Poor,

}

enum Work {

Civilian,

Soldier,

}

fn main() {

// Используем `use` для каждого из вариантов, чтобы они были доступны

// без указания области видимости.

use Status::{Poor, Rich};

// Автоматически используем `use` для каждого из вариантов в `Work`.

use Work::*;

// Эквивалентно `Status::Poor`.

let status = Poor;

// Эквивалентно to `Work::Civilian`.

let work = Civilian;

match status {

// Обратите внимание, как используются варианты из перечисления `Status`

// благодаря `use`

Rich => println!("У богатого куча денег!"),

Poor => println!("У бедняка денег нет, но он держится..."),

}

match work {

// И снова используем варианты напрямую.

Civilian => println!("Гражданин работает!"),

Soldier => println!("Солдаты служат!"),

}

}

הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה