Rust个人学习小结之Rust的循环

 更新时间:2023年01月09日 15:19:06   作者:全年无休的IT老兵  
这篇文章主要介绍了Rust个人学习小结之Rust的循环,今天主要了解了Rust语言的3种循环方法: loop、while、for,本文结合实例代码给大家介绍的非常详细,需要的朋友可以参考下

今天主要了解了Rust语言的3种循环方法: loop、while、for。

首先聊聊loop,loop的主要作用是循环某段代码段,使用方法如下

fn main() {
    loop {
        println!("loop test");
    }
}

其中打印loop test这条代码会无限循环,运行结果如下

loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
loop test
lo^C

如果不进行人为介入,这个程序会一直跑下去,循环打印“loop test”, 看截图中的^C是手动执行Ctrl+C 强制停止的, 所以loop默认是持续循环,不会退出,如果想退出loop循环除了手动强制停止外,在源码中可以使用关键字break进行操作,比如下面这段代码:

fn main() {
    let mut num = 0;
    loop {
        if num < 5 {
            println!("num is {}",num);
            num = num + 1;
        } else {
            break;
        }
    }
    println!("LOOP FINISH!");
}

这段代码逻辑是每循环一次num加1,当num大于等于5时就执行break,也就是退出loop循环,所以最终执行的结果是:

num is 0
num is 1
num is 2
num is 3
num is 4
LOOP FINISH!

从结果也可以看出,当num等于五后 就退出了loop,打印了“LOOP FINISH!”字样。

看完loop我们再来看一下while循环,Rust的while循环跟其他语言的while用法基本相同,主要是通过布尔表达式来控制while循环,比如我们通过while实现上述的功能的话可以使用如下代码:

fn main() {
    let mut num = 0;
    while num < 5 {
        println!("num is {}", num);
        num = num + 1;
    }
 
    println!("WHILE FINISH!");
}

仅从代码行数就能看出来,实现上述相同的功能,while显得更优雅一点,或者说while更适合通过条件表达式控制循环的情况。

for循环也跟其他语言类似,更多的是用于遍历的场景,还是打印相同的东西,使用for循环实现方式如下:

fn main() {
    let num_list = [0,1,2,3,4];
    for num in num_list.iter() {
        println!("num is {}", num);
    }
    println!("FOR FINISH");
}

对于数组遍历,for循环是比较适用的,由于while和for与其他语言比较类似,此处就不再扩展,不过Rust的风格上我是比较喜欢的,类似python、golang的风格。

总结一下:

loop 适用于死循环或代码段需要反复执行的情况

while 适用于通过布尔表达式进行循环控制的情况

for 适用于数组元素的遍历情况

相关文章

  • rust类型转换的实现

    rust类型转换的实现

    Rust是类型安全的语言,因此在Rust中做类型转换不是一件简单的事,本文主要介绍了rust类型转换的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Rust中的引用循环与内存泄漏详解

    Rust中的引用循环与内存泄漏详解

    这篇文章主要介绍了在Rust中如何使用Rc和RefCell来创建引用循环,以及引用循环可能导致的内存泄漏问题,文章还讨论了如何使用Weak类型来解决引用循环问题,特别是在需要双向引用的场景中,如树形结构,通过理解和掌握这些智能指针的使用,可以编写更高效且内存安全的Rust程序
    2025-02-02
  • Rust中泛型的学习笔记

    Rust中泛型的学习笔记

    在Rust语言中,泛型是一种强大的工具,它允许我们编写可复用且灵活的代码,本文主要介绍了Rust中泛型的学习笔记,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Rust中的Box<T>之堆上的数据与递归类型详解

    Rust中的Box<T>之堆上的数据与递归类型详解

    本文介绍了Rust中的Box<T>类型,包括其在堆与栈之间的内存分配,性能优势,以及如何利用Box<T>来实现递归类型和处理大小未知类型,通过Box<T>,Rust程序员可以更灵活地管理内存,避免编译时大小不确定的问题,并提高代码的效率和灵活性
    2025-02-02
  • 在Rust中要用Struct和Enum组织数据的原因解析

    在Rust中要用Struct和Enum组织数据的原因解析

    在Rust中,Struct和Enum是组织数据的核心工具,Struct用于将相关字段封装为单一实体,便于管理和扩展,Enum用于明确定义所有可能的状态,本文将通过具体示例,深入探讨为什么在Rust中必须使用struct和enum来管理数据,感兴趣的朋友一起学习吧
    2025-02-02
  • rust闭包的使用

    rust闭包的使用

    闭包在Rust中是非常强大的功能,允许你编写更灵活和表达性的代码,本文主要介绍了rust闭包的使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Rust生成随机数的项目实践

    Rust生成随机数的项目实践

    Rust标准库中并没有随机数生成器,常见的解决方案是使用rand包,本文主要介绍了Rust生成随机数的项目实践,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Rust中的Copy和Clone对比分析

    Rust中的Copy和Clone对比分析

    这篇文章主要介绍了Rust中的Copy和Clone及区别对比分析,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • Rust+React创建富文本编辑器

    Rust+React创建富文本编辑器

    这篇文章主要为大家介绍了Rust+React创建富文本编辑器示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • 如何使用Rust直接编译单个的Solidity合约

    如何使用Rust直接编译单个的Solidity合约

    本文介绍了如何使用Rust语言直接编译Solidity智能合约,特别适用于没有外部依赖或flatten后的合约,一般情况下,Solidity开发者使用Hardhat或Foundry框架,本文给大家介绍如何使用Rust直接编译单个的Solidity合约,感兴趣的朋友一起看看吧
    2024-09-09

最新评论