news 2026/5/1 10:11:24

【Rust】分支语句详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Rust】分支语句详解

在 Rust 中,分支语句用于根据条件执行不同的代码路径。Rust 主要提供以下几种分支结构:

1.if语句

最基本的条件分支,与大多数语言类似:

fnmain(){letnumber=7;ifnumber<5{println!("条件为真");}else{println!("条件为假");}}

多条件分支

fnmain(){letnumber=6;ifnumber%4==0{println!("能被4整除");}elseifnumber%3==0{println!("能被3整除");}else{println!("其他情况");}}

2.if表达式(在 Rust 中是表达式!)

Rust 的if可以返回值,这使得它非常强大:

fnmain(){letcondition=true;// if 作为表达式使用letnumber=ifcondition{5// 注意:没有分号}else{6// 两个分支必须返回相同类型};println!("number 的值为: {}",number);}

3.match表达式

match是 Rust 中最强大的分支语句,类似于其他语言的 switch,但功能更强大:

fnmain(){letvalue=3;matchvalue{1=>println!("一"),2=>println!("二"),3=>println!("三"),_=>println!("其他数字"),// _ 是通配符}}

match返回值的例子:

fnmain(){letnumber=2;letdescription=matchnumber{1=>"一",2=>"二",3=>"三",_=>"其他",};println!("{}",description);}

范围匹配

fnmain(){letage=25;matchage{0..=18=>println!("未成年"),19..=60=>println!("成年"),_=>println!("老年"),}}

模式匹配(解构)

enumMessage{Quit,Move{x:i32,y:i32},Write(String),}fnmain(){letmsg=Message::Move{x:10,y:20};matchmsg{Message::Quit=>println!("退出"),Message::Move{x,y}=>println!("移动到 ({}, {})",x,y),Message::Write(text)=>println!("写入: {}",text),}}

4.if let语法糖

用于处理只关心一种匹配情况时的简化写法:

fnmain(){letsome_option_value=Some(3);// 传统 match 写法matchsome_option_value{Some(3)=>println!("值是3"),_=>(),}// 使用 if let 简化ifletSome(3)=some_option_value{println!("值是3");}}

结合else

fnmain(){letsome_value:Option<i32>=None;ifletSome(x)=some_value{println!("值是: {}",x);}else{println!("没有值");}}

5.while let循环匹配

类似于if let,但在循环中使用:

fnmain(){letmutstack=Vec::new();stack.push(1);stack.push(2);stack.push(3);// 只要 pop 返回 Some,就继续循环whileletSome(top)=stack.pop(){println!("{}",top);}}

重要特点

  1. 完备性检查match必须处理所有可能情况
  2. 模式绑定:可以直接在分支中提取值
  3. 守卫条件:可以在模式后添加额外的条件检查
matchnumber{xifx<0=>println!("负数"),0=>println!("零"),xifx>0=>println!("正数"),_=>unreachable!(),// 实际上不会执行到这里}

这些分支语句使 Rust 的模式匹配功能非常强大,是 Rust 语言的核心特性之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 8:35:52

手机AI自动化新纪元:3大核心技巧让你彻底掌握Open-AutoGLM控制能力

第一章&#xff1a;智谱Open-AutoGLM手机控制能力概述智谱AI推出的Open-AutoGLM是一款面向移动端的自动化智能体框架&#xff0c;依托大模型理解与决策能力&#xff0c;实现对智能手机操作的精准模拟与任务执行。该系统通过自然语言指令驱动&#xff0c;可完成应用启动、界面导…

作者头像 李华
网站建设 2026/4/30 3:44:31

同时取送货路径优化:遗传算法与模拟退火算法的应用及需求量与回收量的影响(图4解读)

遗传算法求解同时取送货车辆路径优化&#xff0c;模拟退火算法求解同时取送货车辆路径优化 同时取送货路径优化VRPSDP vrpsdp同时取送货车辆路径 分为需求量和回收量看图4咱们今天来唠唠这个让无数物流调度员头秃的VRPSDP问题——既要送货又要回收货的车辆路径优化。这玩意儿就…

作者头像 李华
网站建设 2026/5/1 8:43:52

网络安全和黑客有什么关系?现实中的黑客离我们近吗?

提到 “黑客”&#xff0c;大众脑海中往往浮现出 “躲在黑暗中敲代码、窃取信息” 的反派形象&#xff1b;而 “网络安全” 则被贴上 “专业技术、企业专属” 的标签。这种认知偏差&#xff0c;让很多人忽视了一个核心事实&#xff1a;黑客与网安是攻防共生的关系&#xff0c;前…

作者头像 李华
网站建设 2026/5/1 8:37:43

【Open-AutoGLM PC深度解析】:揭秘AI编程新神器如何颠覆开发者工作流

第一章&#xff1a;Open-AutoGLM PC的诞生背景与核心理念随着大语言模型在自然语言理解、代码生成和智能推理等领域的广泛应用&#xff0c;本地化部署高性能AI推理系统的需求日益增长。传统云端模型服务虽具备强大算力支持&#xff0c;但在数据隐私、响应延迟和离线可用性方面存…

作者头像 李华
网站建设 2026/4/24 14:35:21

Open-AutoGLM网页进不去?20年经验专家教你分钟级定位问题根源

第一章&#xff1a;Open-AutoGLM网页登不上的现象与影响 近期&#xff0c;多位用户反馈无法正常访问 Open-AutoGLM 的官方网页服务。该问题主要表现为页面加载超时、登录接口无响应或直接返回 502 错误码。这一异常状态已持续数小时&#xff0c;影响了开发者对模型调用、API 密…

作者头像 李华
网站建设 2026/4/17 5:50:33

【Open-AutoGLM性能优化全攻略】:从硬件选型到推理加速的7大关键指标

第一章&#xff1a;Open-AutoGLM性能优化的核心目标Open-AutoGLM作为面向自动化生成语言模型推理流程的开源框架&#xff0c;其性能优化的核心目标在于提升推理效率、降低资源开销并增强系统可扩展性。在实际部署场景中&#xff0c;模型推理往往面临高延迟、显存占用大和吞吐量…

作者头像 李华