Rust流程控制

简介: Rust流程控制
流程控制
条件判断

满足指定条件执行某个功能

三种条件判断

  • if 满足条件,执行功能
  • if-else 满足指定条件,执行某个功能,不满足条件执行另一个功能
  • if-else if-else 用于多个条件分支执行对应的功能的程序逻辑
if条件判断
if conditional_test {
    // true执行
}

Rust不会自动将非布尔值转换为布尔值,必须显示使用布尔值作为表达式的值

if-else条件判断
if conditional_test {
    // true执行
}else{
    // false 执行
}
if-else if-else条件判断
if conditional_test_1 {
    
}else if conditional_test_2{
    
}else{
    
}
循环

在满足指定条件的情况下,重复执行一段代码

三种循环

  • loop 重复执行、永远不会结束的循环
  • while 在条件表达式的值为true时永远执行的循环
  • for : 重复执行指定次数的循环
loop循环

没有循环条件,无限次重复执行一段代码,直到调用break 退出循环

break : 循环控制语句,退出循环并将返回值返回

let mut count = 0;
let counter = loop{
    count += 1;
    let num = count *2;
    if count == 10 {
        break num;  // 返回num的值
    }
};
while循环

while循环在每次执行代码前进行条件判断,只要条件表达式的值为true就会重复执行代码。

let mut count = 0;
let mut counter = 0;
while count != 10 {
    count += 1;
    counter = count *2;
}
for循环

for循环使用for … in … 语法格式,重复执行指定次数的循环。

因其安全性和简洁性,常用于对范围类型或者集合类型的所有元素执行指定的操作

let mut counter = 0;
for count in 1..=10 {
    counter = count *2;
}
continue 和 break 语句

continue 和 break都是用于循环控制的语句。

  • break 直接退出循环,不再执行循环体内的任何代码。
  • continue 退出本次循环,不再执行循环体continue之后的代码,然后再次条件判断,开始新一轮循环
for i in 0..10 {
    for i== 0  || i == 4 {
        continue;
    }
    if i== 6 {
        break;
    }
}
match模式匹配

检查当前值是否匹配一系列模式中的某一个。

模式可以由字面量、变量、通配符和其他内容构成。

每一个模式都是一个分支,程序根据匹配的模式执行相应的代码。

Rust 要求match模式匹配是穷尽式的,即必须穷举所有的可能,否则会导致程序错误。

通配符"_"会匹配没有指定的所有可能的模式。

let age = 6;
match age{
    0 => println!("0"),
    1..=2 => println!("1..2"),
    _ => (),
}
if let 和 while let 模式匹配

在某些场景中可以替代match模式匹配来简化代码

可以将if let 视为match的语法糖,仅当匹配某一模式时执行代码,并忽略其他所有模式

match value{
    Some(7) => println!("seven"),
    _ => (),
}

使用if let 可以简化

if let Some(7) = value {
    println!("seven");
}

while let 后紧跟的表达式中,左侧为匹配模式,右侧为要匹配的值,两者通过=分隔。

let mut vec = vec![1,2,3,4];
loop{
    match vec.pop(){
        Some(value) => println!("{}",value),
        None => break,
    }
}
let mut vec = vec![1,2,3,4];
while let Some(value) = vec.pop(){
    println!("{}",value);
}
相关文章
|
5月前
|
Rust Java 编译器
【一起学Rust | 基础篇】rust函数与流程控制详解
【一起学Rust | 基础篇】rust函数与流程控制详解
84 0
【一起学Rust | 基础篇】rust函数与流程控制详解
|
Rust Java C语言
【RUST学习日记】第17课 流程控制
【RUST学习日记】第17课 流程控制
|
Rust JavaScript 编译器
Rust 流程控制和函数
本文介绍了 Rust 中的流程控制语句,主要包括 if 条件判断、for 循环、loop 循环、while 循环。同时也会然后 Rust 函数的使用。
141 0
|
2月前
|
Rust 安全 Go
揭秘Rust语言:为何它能让你在编程江湖中,既安全驰骋又高效超车,颠覆你的编程世界观!
【8月更文挑战第31天】Rust 是一门新兴的系统级编程语言,以其卓越的安全性、高性能和强大的并发能力著称。它通过独特的所有权和借用检查机制解决了内存安全问题,使开发者既能享受 C/C++ 的性能,又能避免常见的内存错误。Rust 支持零成本抽象,确保高级抽象不牺牲性能,同时提供模块化和并发编程支持,适用于系统应用、嵌入式设备及网络服务等多种场景。从简单的 “Hello World” 程序到复杂的系统开发,Rust 正逐渐成为现代软件开发的热门选择。
56 1
|
9天前
|
Rust 安全 网络安全
在 Rust 语言中,寻找企业上网行为管理软件的突破
在数字化企业环境中,上网行为管理软件对于保障网络安全和提升工作效率至关重要。Rust 语言凭借其安全性、高性能和并发性,为开发此类软件提供了新机遇。本文通过几个 Rust 代码示例,展示了如何实现网址检查、访问频率统计及访问控制等功能,旨在探索 Rust 在企业上网行为管理中的应用潜力。
16 0
|
2月前
|
Rust 安全 编译器
初探 Rust 语言与环境搭建
Rust 是一门始于2006年的系统编程语言,由Mozilla研究员Graydon Hoare发起,旨在确保内存安全而不牺牲性能。通过所有权、借用和生命周期机制,Rust避免了空指针和数据竞争等问题,简化了并发编程。相较于C/C++,Rust在编译时预防内存错误,提供类似C++的语法和更高的安全性。Rust适用于系统编程、WebAssembly、嵌入式系统和工具开发等领域。其生态系统包括Cargo包管理器和活跃社区。学习资源如"The Book"和"Rust by Example"帮助新手入门。安装Rust可通过Rustup进行,支持跨平台操作。
138 2
初探 Rust 语言与环境搭建
|
2月前
|
Rust 安全 程序员
Rust 语言的防错机制太惊人了!安全编码从此不再是难题,快来一探究竟!
【8月更文挑战第31天】《安全编码原则:Rust 语言中的防错机制》探讨了代码安全的重要性,并详细介绍了Rust语言如何通过内存安全模型、所有权与借用规则等特性,在编译阶段检测并阻止潜在错误,如缓冲区溢出和悬空指针。文章还讨论了类型安全、边界检查等其他安全特性,并提出了遵循不可变引用、避免裸指针及充分测试等实用编码原则,以进一步提升代码质量和安全性。随着Rust在软件开发中的应用日益广泛,掌握其安全编码原则变得尤为重要。
50 0
|
2月前
|
Rust 安全 调度
从零构建梦想操作系统:用Rust语言亲手打造专属内核,你也可以成为系统开发者!
【8月更文挑战第31天】开发操作系统内核虽具挑战,却也充满乐趣。本文将指导你从零开始,使用Rust语言构建一个简单的操作系统内核。首先安装Rust环境和交叉编译工具链,然后创建新项目`my_kernel`。通过修改`Cargo.toml`和编写启动函数,结合串口输出和`multiboot2`库,最终使用QEMU运行内核。此教程旨在帮助你理解Rust在系统开发中的应用,激发深入探索的兴趣。
67 1
|
2月前
|
Rust 安全 算法
揭秘Rust语言如何重塑区块链安全:打造坚不可摧的分布式账本新篇章!
【8月更文挑战第31天】自比特币诞生以来,区块链技术凭借其去中心化和不可篡改的特点备受关注。为了应对安全性挑战,Rust 语言凭借其内存安全特性逐渐成为区块链开发的优选。本文探讨了 Rust 如何助力区块链实现更安全的分布式账本。通过示例展示了 Rust 在避免内存泄漏、空指针引用及数据竞争等方面的优势,预示着 Rust 在高性能、高安全性需求的区块链应用中拥有广阔前景。
70 1
|
1月前
|
Rust Linux Go
Rust/Go语言学习
Rust/Go语言学习

相关实验场景

更多