Rust -- 模式与匹配

这篇具有很好参考价值的文章主要介绍了Rust -- 模式与匹配。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 模式

匹配类型中的结构(数据的形状),结合 模式和match表达式 提供程序控制流的支配权

  • 模式组成内容
  • 字面量
  • 解构的数组、枚举、结构体、元组
  • 变量
  • 通配符
  • 占位符

流程:匹配值 --> 是否拥有正确的数据 --> 运行特定的代码

2. 使用模式的位置

  • match分支:由match关键字、一个匹配的值和一个或多个分支构成
    • 穷尽性:所有可能的值都必须考虑到
    • _: 匹配所有情况,不绑定任何变量
enum Status {  
    // 其中对应的值通过 Status::OK as i32方式取出
    OK = 200,
    NotFound = 404,
    Create = 201
}

fn main() {
    let status = Status::OK;

    match status {
        // 将枚举
        Status::OK => println!("{}", Status::OK as i32),
        _ => println!()
    }
}
  • if let 语句

只关心一种情况的match分支的简写,可选的else在模式不匹配时执行,可以灵活搭配 else if 、else if let,搭配之间不需要关联性

  • while let 条件循环

只要模式匹配就一直进行while循环

fn main() {
    let mut stack = Vec::new();
    // 推入数据
    stack.push(1);
    stack.push(2);
    stack.push(3);
    stack.push(4);

    // 弹出数据
    while let Some(v) = stack.pop() {
        println!("value: {}", v)
    }
}
  • for循环

模式是for关键字直接跟随的值

fn main() {
    let valuse = vec![1, 2, 3, 4, 5];
    
    // 遍历vector,使用了模式对元祖进行解构
    for (index, value) in valuse.iter().enumerate() {
        println!("index: {}, value: {}", index, value)
    }
}
  • let 语句

将模式与表达式进行比较,并为任何找到的名称赋值

fn main() {
    // 结构元祖
    let (x, y, z) = (1, 2, 3);
    println!("{}, {}, {}", z, y, x);
    
    // 普通变量声明
    let x = 5;
}
  • 函数参数

与let语句一致

fn function_pattern(&(x, y): &(i32, i32)) -> i32 {
    x + y
}

fn main() {
    let num = (1, 2);
    let sum = function_pattern(&num);
    println!("sum: {}", sum)
}

3. 模式分类

依据:匹配是否可能失败文章来源地址https://www.toymoban.com/news/detail-426275.html

  • 不可反驳: 能匹配任何传递的可能值
  • let语句 for循环 函数
  • 可反驳: 对某些可能存在的值进行匹配会失败
  • if let、 while let、match分支

4. 模式语法

  • 匹配字面量
fn main() {
    let name = "beimen";

    match name {
        "beimen" => println!("beimen"),
        "chuixue" => println!("chuixue"),
        _ => println!("unknown")
    }
}

到了这里,关于Rust -- 模式与匹配的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rust -- 模式与匹配

    1. 模式 匹配类型中的结构(数据的形状),结合 模式和match表达式 提供程序控制流的支配权 模式组成内容 字面量 解构的数组、枚举、结构体、元组 变量 通配符 占位符 流程:匹配值 -- 是否拥有正确的数据 -- 运行特定的代码 2. 使用模式的位置 match分支:由match、一个匹

    2023年04月26日
    浏览(26)
  • 30天拿下Rust之模式与模式匹配

    概述         Rust语言以其强大的类型系统和所有权模型而著称,而模式与模式匹配则是Rust中一种非常强大且灵活的工具,它允许我们在编译时根据数据的结构进行条件分支处理。在Rust中,模式是一种用于匹配数据的结构,它可以是一个具体的值、一个变量绑定、一个枚

    2024年04月12日
    浏览(33)
  • [入门必看]数据结构4.2:串的模式匹配

    小题考频:2 大题考频:0 难度:☆☆☆☆☆ 4.2.1_朴素模式匹配算法 4.2.2_1_KMP算法 4.2.2_2_求next数组 4.2.3_KMP算法的进一步优化 什么是字符串的模式匹配 ——在字符串内搜索某一段内容 查找功能 搜索引擎 字符串模式匹配:在主串中找到与模式串相同的⼦串,并返回其所在位置

    2023年04月23日
    浏览(27)
  • rust学习-枚举和模式匹配

    从ip地址入手学枚举 枚举的每个成员可以处理不同类型和数量的数据 使用枚举来存储两种不同 IP 地址的几种可能的选择 可以将任意类型的数据放入枚举成员中,甚至枚举中放枚举 虽然标准库中包含一个 IpAddr 的定义,仍然可以创建和使用自己的定义而不会有冲突,因为并没

    2024年02月16日
    浏览(29)
  • Rust之枚举与模式匹配

    枚举类型,简称枚举,允许列举所有可能的值来定义一个类型。 枚举类型:已知所有可能的值,并且所有值的出现是互斥的,即每次只能取一种可能的值,才使用枚举类型。 示例:声明一个枚举 使用IpAddrKind中的两个变体来创建实例: 注:枚举的变体全部处于其标识符的命

    2024年02月15日
    浏览(31)
  • RUST 每日一省:模式匹配

            我们经常使用let 语句创建新的变量绑定——但是 let 的功能并不仅限于此。事实上, let 语句是一个模式匹配语句。它允许我们根据内部结构对值进行操作和判断,或者可以用于从代数数据类型中提取值。         如上所示,通过第二句,把一个组合数据结构

    2024年02月09日
    浏览(32)
  • 【Rust】Rust学习 第六章枚举和模式匹配

    本章介绍  枚举 ( enumerations ),也被称作  enums 。枚举允许你通过列举可能的  成员 ( variants ) 来定义一个类型。首先,我们会定义并使用一个枚举来展示它是如何连同数据一起编码信息的。接下来,我们会探索一个特别有用的枚举,叫做   Option ,它代表一个值要么是

    2024年02月13日
    浏览(31)
  • 【Rust 基础篇】Rust 模式:高效、安全和灵活的匹配工具

    在编程中,经常需要对数据进行匹配和处理,例如从一个复杂的数据结构中提取特定的值,或者根据不同的情况执行不同的逻辑。Rust是一门现代的系统编程语言,它引入了一种称为\\\"模式\\\"(Pattern)的强大特性,使得数据的匹配和处理变得高效、安全和灵活。本篇博客将深入探

    2024年02月08日
    浏览(46)
  • Rust编程语言入门之模式匹配

    模式是Rust中的一种特殊语法,用于匹配复杂和简单类型的结构 将模式与匹配表达式和其他构造结合使用,可以更好地控制程序的控制流 模式由以下元素(的一些组合)组成: 字面值 解构的数组、enum、struct 和 tuple 变量 通配符 占位符 想要使用模式,需要将其与某个值进行

    2023年04月22日
    浏览(79)
  • 【数据结构】数组和字符串(十四):字符串匹配1:朴素的模式匹配算法(StringMatching)

      字符串(String)是由零个或多个字符(char)顺序排列组成的有限序列,简称为串。例如 “good morning”就是由12个字符构成的一个字符串。一般把字符串记作: S = ′ ′ a 0 a 1 … a n − 1 ′ ′ S=\\\'\\\'a_{0} a_{1}…a_{n-1}\\\'\\\' S = ′′ a 0 ​ a 1 ​ … a n − 1 ′′ ​   其中S是串名,引号中

    2024年02月05日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包