- Определение перечисления:
Чтобы создать перечисление в Rust, вы используете ключевое словоenum, за которым следует имя перечисления. Допустим, мы хотим создать перечисление для представления различных типов животных:
enum Animal {
Dog,
Cat,
Bird,
Fish,
}
- Варианты перечисления и сопоставление с шаблоном.
Каждое значение в перечислении называется вариантом. Вы можете думать о вариантах как об отдельных членах перечисления. Одной из самых мощных функций перечислений является сопоставление с образцом, которое позволяет по-разному обрабатывать разные варианты. Вот пример:
fn print_sound(animal: Animal) {
match animal {
Animal::Dog => println!("Woof!"),
Animal::Cat => println!("Meow!"),
Animal::Bird => println!("Chirp!"),
Animal::Fish => println!("Glub glub!"),
}
}
fn main() {
let animal = Animal::Cat;
print_sound(animal); // Output: Meow!
}
- Связанные данные с перечислениями.
Перечисления также могут иметь связанные данные, что позволяет прикреплять дополнительную информацию к каждому варианту. Например, давайте изменим наше перечисление Animal, включив в него возраст каждого животного:
enum Animal {
Dog(u8),
Cat(u8),
Bird(u8),
Fish(u8),
}
- Использование перечислений в структурах.
Перечисления можно использовать в сочетании со структурами для создания более сложных структур данных. Вот пример, в котором мы определяем структуру, хранящую информацию о домашнем животном:
struct Pet {
name: String,
animal: Animal,
}
fn main() {
let dog = Animal::Dog(3);
let my_pet = Pet {
name: String::from("Buddy"),
animal: dog,
};
println!("My pet is {} and it's a dog!", my_pet.name);
}
- Методы и реализации перечислений.
Перечисления могут иметь методы, как и структуры. Вы можете определить реализации перечислений, чтобы обеспечить собственное поведение. Вот пример, в котором мы определяем метод для перечисления Animal:
impl Animal {
fn speak(&self) {
match self {
Animal::Dog => println!("Woof!"),
Animal::Cat => println!("Meow!"),
Animal::Bird => println!("Chirp!"),
Animal::Fish => println!("Glub glub!"),
}
}
}
fn main() {
let animal = Animal::Bird;
animal.speak(); // Output: Chirp!
}
Перечисления — мощный инструмент в Rust, позволяющий создавать гибкий и выразительный код. Благодаря своей способности определять фиксированный набор значений и связанных с ними данных перечисления помогают писать более читаемые и удобные в обслуживании программы. Мы рассмотрели различные методы и предоставили примеры кода, которые помогут вам начать работу с перечислениями в Rust. Так что вперед, используйте возможности перечислений и повышайте свои навыки программирования на Rust!