当前位置: 首页 > news >正文

rust 学习 match专项

fn main() { let x = 8; // 定义 x match x { 0 => println!("零"), 1|2|3=> println!(" 1 or 2 or 3"), 4..=6 => println!("4-6"), n => println!("其他数字: {}", n), } let tuple = (1, 2, 3,4); match tuple { (1, 2,..) => println!("第一个是 1"), _ => (), } let arr = [1, 2, 3]; match arr { [0, _, _] => println!("第一个是 0"), [a, b, c] => println!("{},{},{}", a, b, c), _ => (), } let point = (10, 20); match point { (0, 0) => println!("原点"), (x, 0) => println!("x 轴: {}", x), (0, y) => println!("y 轴: {}", y), (x, y) => println!("坐标: ({}, {})", x, y), } #[derive(Debug)] struct Point { x: i32, y: i32 } let p1 = Point { x: 0, y: 0 }; match p1 { Point { x: 0, y: 0 } => println!("原点"), Point { x, y } if x == y => println!("对角线"), Point { x, y } => println!("({}, {})", x, y), } enum Message { Quit, Move { x: i32, y: i32 }, Write(String), ChangeColor(u8, u8, u8), } let msg = Message::Move { x: 10, y: 20 }; match msg { Message::Quit => println!("退出"), Message::Move { x, y } => println!("移动到 ({}, {})", x, y), Message::Write(text) => println!("消息: {}", text), Message::ChangeColor(r, g, b) => println!("RGB: {},{},{}", r, g, b), } let num = &Some(5); match num { &Some(x) => println!("解引用后: {}", x), // 直接取值 // 或者 Some(ref x) => println!("借用: {}", x), // ref 表示引用 None => (), } match x { 7 | 8 if x % 2 == 0 => println!("7 或 8 且为偶数"), n if n < 0 => println!("负数"), n if n == 0 => println!("零"), n if n > 0 => println!("正数"), _ => (), } //所有分支必须返回相同类型: let result = match x { 0 => "零".to_string(), n => format!("其他: {}", n), }; println!("{}", result); //绑定运算符 @ match x { n @ 1..=5 => println!("1~5: {}", n), n @ 6..=10 => println!("6~10: {}", n), _ => println!("其他"), } match p1 { p @ Point { x: 0, y: 0 } => println!("原点: {:?}", p), _ => (), } if let Some(value) = Some(5){ //if let Some(value) = Option::<i32>::None println!("有值: {}", value); } else { println!("无值"); } let result: Result<i32, &str> = Err("error"); if let Ok(value) = result { println!("成功: {}", value); } else { println!("失败"); } let mut stack = vec![1, 2, 3, 4, 5]; while let Some(top) = stack.pop() { println!("弹出: {}", top);// 输出:5 4 3 2 1 } } //实战综合示例 use std::fs::File; use std::io::Read; fn main() { // 处理 Option let ages: Vec<Option<i32>> = vec![Some(10), None, Some(25)]; for age in ages { if let Some(age) = age { if age < 18 { println!("未成年: {}", age); } else { println!("成年: {}", age); } } else { println!("年龄未知"); } } // 处理 Result let mut file = File::open("test.txt"); if let Ok(mut f) = file { let mut content = String::new(); if let Ok(_) = f.read_to_string(&mut content) { println!("文件内容: {}", content); } else { println!("读取失败"); } } else { println!("文件不存在"); } // 枚举匹配 #[derive(Debug)] enum UserAction { Create(String), Delete(i32), Update { id: i32, name: String }, } let action = UserAction::Create("Alice".to_string()); if let UserAction::Create(name) = action { println!("创建用户: {}", name); } }
http://www.jsqmd.com/news/1112822/

相关文章:

  • 密码学Crypto-凯撒密码(经典移位密码)
  • CV极极极简发展史
  • Hive 内置函数
  • FastAPI:Python高性能API开发指南
  • Agent工程范式迁移:从确定性代码到非确定性大模型驱动的系统构建
  • 深度解析Whisky:macOS上Windows应用容器化的架构哲学
  • AI Coding 协作实践方案
  • 基础知识-互联网模型
  • 电气自动化专业:站在“绿牌”风口,解锁你的硬核职业版图
  • AI智能体能力评估新范式:从推箱子游戏看规划与推理的进化
  • 农贸市场快检室试剂采购:如何选择适配基层的快检耗材方案
  • JMeter消息队列压测全攻略:从方案设计到性能调优
  • MySQL数据库技术全解析:从SQL语法到实战应用的系统梳理
  • 如何从rand7生成rand5
  • 如何快速找回遗忘的压缩包密码:ArchivePasswordTestTool 完整指南
  • 创业者适合读EMBA吗?2026客观选型测评分析
  • 【无标题】小学期课设
  • 智能激活革命:KMS_VL_ALL_AIO如何彻底改变Windows和Office激活体验
  • utshell:新一代Rust实现的Bash兼容shell完全指南
  • 游戏开发教学方案
  • 成都专业的暖通商家有哪些
  • 基于STM32单片机WIFI云平台物联网 空气质量 烟雾温湿度PM2.5 1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Hive 的内置函数
  • 武汉徐东火锅实测|理性避坑+科学选型测评指南
  • CIM电子沙盘与数字孪生技术服务商实力参考 | 城市与地产数字化展示选购指南
  • 【终极指南】Intel Wi-Fi 6 AX201 网卡感叹号、WiFi图标消失?3招彻底搞定!
  • 多维聚合实战:维度建模、层级升降与条件度量
  • 安装包逆向工程实战指南:从识别打包器到脚本分析
  • 免费解锁LOL所有皮肤:R3nzSkin国服换肤工具终极指南
  • MuleSoft+LLM企业级AI编排:可治理、可监控的AI落地实践