在这个例子中,Message枚举的不同变体可以携带不同类型和数量的数据。 2、使用match进行模式匹配 match是处理枚举的强大工具,它可以确保处理所有可能的变体: // 根据传入的消息类型执行相应的操作 fn process_message(msg: Message) { match msg { Message::Quit => println!("退出"), Message::Move { x, y ...
1. match运算符match是Rust中一个异常强大的控制流运算符,它允许将一个值与一系列的模式相比较,并根据匹配的模式执行相应代码块。模式可以是由字面量,变量名,通配符和许多其他的东西组成。具体我们用一个例子来说明一些,代码如下所示:#[derive(Debug)]enum Color { Red, Blue, Yellow,}fn match_...
// 定义一个枚举类型 enum Message { Quit, Move { x: i32, y: i32 }, Write(String), ChangeColor(i32, i32, i32), } fn main() { let msg = Message::Write(String::from("Hello, world!")); // 使用match处理枚举类型 match msg { Message::Quit => println!("The quit command was rec...
当然rust的match肯定不止于此,我们接着来看。 二、match配合变体enum解构 rust的变体enum可以包含不同数据类型,再加上match匹配可以轻松实现复杂的逻辑需求。 我们还是来看个例子,比如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 enumOperator{ Plus(i32,i32), Subtract(i32,i32), Multiply(i32...
Match语句的exhaustive(穷尽)特性: match语句存在一个exhaustive特性,我觉得可以翻译为“穷尽”。也就是说match语句要求穷尽value的所有pattern。比如option 这个rust内置的enum类型有None和Some两种pattern,当只列出Some的时候就会报错 fn plus_one(x: Option<i32>) -> Option<i32> { match x { Some(i) => Some...
1、match 一种 Rust 中常见的模式匹配方式,但可能会显得有些冗长。#[derive(Debug)]enumMyEnum{Foo,...
enumMessage{Quit,Move{x:i32,y:i32},Write(String),} 在这个例子中,Message枚举有三个变体:Quit(没有字段),Move(包含x和y字段)和Write(包含一个String类型的字段)。 枚举的匹配(Match) Rust使用match语句来处理枚举值。这允许你根据不同的变体执行不同的代码路径。
在Rust 中,枚举类型(Enum)是一种自定义数据类型,它允许我们定义一个值只能取自预定义列表中的变量。枚举类型在编写代码时可以提供更明确的语义,使得代码更易于理解和维护。本篇博客将详细介绍 Rust 中的枚举类型,包括定义、使用和模式匹配等方面的内容。
在上述代码中,我们使用if let表达式来进行模式匹配。如果my_value是MyEnum::Float类型的枚举成员,就会执行相应的代码块。 总结一下,通过模式匹配可以从Rust的混合类型枚举中获取数据值。使用match表达式或if let表达式可以根据枚举成员的类型来提取相应的数据值。
一个match分支有两个部分: 1. 一个模式 2. 一些代码 绑定值的模式 enum UsState { Alabama, Alaska, } enum Coin { Penny, Nickel, Dime, Quarter(UsState), } fn value_in_cents(coin: Coin) -> u8 { match coin { Coin::Penny => 1, ...