Skip to content

服务器托管,北京服务器托管,服务器租用-价格及机房咨询

Menu
  • 首页
  • 关于我们
  • 新闻资讯
  • 数据中心
  • 服务器托管
  • 服务器租用
  • 机房租用
  • 支持中心
  • 解决方案
  • 联系我们
Menu

Rust — 模式与匹配

Posted on 2023年5月6日 by hackdl

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. 模式分类

依据:是否会匹配可能失败

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

4. 模式语法

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

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

服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net

Related posts:

  1. 探析服务器托管案件的管辖范围
  2. 黑龙江DNS服务器托管服务:稳定高效的网络解析方案
  3. 丰城北京idc采购批发
  4. 建立托管网站:服务器安置指南
  5. 高效稳定:服务器租用与托管服务

服务器托管,北京服务器托管,服务器租用,机房机柜带宽租用

服务器托管

咨询:董先生

电话13051898268 QQ/微信93663045!

上一篇: AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其二)
下一篇: 明解STM32—GPIO应用设计篇之API函数及配置使用技巧

最新更新

  • 管理价值
  • 【每日一题】工作计划的最低难度
  • angular-devkit 中 build-angular 包的作用
  • 使用 ABAP 代码删除指定 SAP CRM 系统里 Opportunity 订单的文本
  • 使用 SAP fiori-tools-proxy 时遇到的错误消息 – invalid version

随机推荐

  • 东区服务器托管哪家好网站模板
  • 丹东市服务器托管建站网站模板:专业稳定的网站建设服
  • 修复老照片用什么软件最好?修复老照片软件分享!​
  • AREX 流量回放实践分享
  • 武汉市服务器托管价格一览表

客服咨询

  • 董先生
  • 微信/QQ:93663045
  • 电话:13051898268
  • 邮箱:dongli@hhisp.com
  • 地址:北京市石景山区重聚园甲18号2层

友情链接

  • 服务器托管
  • 服务器租用
  • 机房租用托管
  • 服务器租用托管
©2023 服务器托管,北京服务器托管,服务器租用-价格及机房咨询 京ICP备13047091号-8