news 2026/6/23 22:23:06

【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/6/18 12:41:06

你还在手动调参?Open-AutoGLM已实现全流程自动优化(附实战案例)

第一章&#xff1a;你还在手动调参&#xff1f;Open-AutoGLM已实现全流程自动优化&#xff08;附实战案例&#xff09;在大模型时代&#xff0c;超参数调优已成为制约模型性能与研发效率的关键瓶颈。传统依赖人工经验的调参方式不仅耗时耗力&#xff0c;且难以复现最优结果。Op…

作者头像 李华
网站建设 2026/6/14 2:49:08

还在手动操作手机?5分钟学会用Open-AutoGLM实现AI全自动控制

第一章&#xff1a;智谱Open-AutoGLM怎么控制自己的手机通过集成自然语言理解与自动化执行能力&#xff0c;智谱推出的 Open-AutoGLM 模型能够实现对智能手机的智能操控。用户只需以日常语言下达指令&#xff0c;系统即可解析意图并调用设备 API 完成操作。准备工作 确保手机已…

作者头像 李华
网站建设 2026/6/22 23:02:26

2025专科生必看!8个AI论文工具深度测评与推荐

2025专科生必看&#xff01;8个AI论文工具深度测评与推荐 2025年专科生论文写作工具测评指南 随着AI技术在教育领域的不断渗透&#xff0c;越来越多的专科生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的AI论文工具&#xff0c;如何选择真正适合自己…

作者头像 李华
网站建设 2026/6/8 5:10:19

手残党也能学会!Open-AutoGLM本地部署保姆级教程,15分钟快速上手

第一章&#xff1a;Open-AutoGLM本地部署概述Open-AutoGLM 是一个基于 AutoGLM 架构的开源自动化语言模型推理框架&#xff0c;支持本地化部署与私有化调用。其设计目标是为开发者提供轻量、高效、可扩展的模型服务解决方案&#xff0c;适用于需要数据隐私保护或离线运行的场景…

作者头像 李华
网站建设 2026/6/23 19:51:58

从“东数西算”到智慧机房:数字孪生如何重塑数据中心的“智能大脑”?

算力时代的进化压力与智能大脑随着“东数西算”工程的全面铺开与算力经济的崛起&#xff0c;数据中心已从支撑企业IT的后台设施&#xff0c;跃升为国家战略性数字基础设施的核心枢纽。其角色正经历根本性转变&#xff1a;从被动的“成本中心”转向主动的“价值引擎”与“服务提…

作者头像 李华
网站建设 2026/6/22 17:07:45

Open-AutoGLM地址池泄露事件分析(仅限技术圈内人知晓的真相)

第一章&#xff1a;Open-AutoGLM地址池泄露事件背景近期&#xff0c;开源项目 Open-AutoGLM 被曝出其内部地址池配置文件意外暴露于公共代码仓库中&#xff0c;引发广泛关注。该事件源于开发者在版本控制系统&#xff08;Git&#xff09;中未正确配置 .gitignore 文件&#xff…

作者头像 李华