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

今天主要了解了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 适用于数组元素的遍历情况

(0)

相关推荐

  • Rust 所有权机制原理深入剖析

    目录 what's ownership? Scope (作用域) ownership transfer(所有权转移) move clone copy References and Borrowing(引用和借用) Mutable References(可变引用) Dangling References(悬垂引用) what's ownership? 常见的高级语言都有自己的 Garbage Collection(GC)机制来管理程序运行的内存,例如 Java.Go 等.而 Rust 引入了一种全

  • 从迷你todo 命令行入门Rust示例详解

    目录 一个迷你 todo 应用 需要安装的依赖 文件目录组织 主文件 读取文件 状态处理工厂函数 Trait(特征) Create trait Get trait Delete trait Edit trait 导出 trait 为 struct 实现 trait Pending Done 导出 struct Process 输入处理 最后 一个迷你 todo 应用 该文章将使用 Rust 从零去做一个入门级别的 TODO 命令行应用 你将学会什么? 基本的命令行操作 文件读写和文件结构组织 我

  • rust引用和借用的使用小结

    目录 引用和借用 引用的使用 可变引用与不可变引用 NLL 总结 引用和借用 如果每次都发生所有权的转移,程序的编写就会变得异常复杂.因此rust和其它编程语言类似,提供了引用的方式来操作.获取变量的引用,称为借用.类似于你借别人的东西来使用,但是这个东西的所有者不是你.引用不会发生所有权的转移. 引用的使用 在rust中,引用的语法非常简单.通过&来取引用,通过*来解引用.例如: fn main() { let s1: String = "Hello".to_string()

  • 使用PowerShell获取Trustedinstaller权限的问题

    目录 准备工作: 安装所需模块 获取Trustedinstaller权限 准备工作: Windows Powershell 版本为 5.0 以上以管理员身份运行Windows Powershell(在这里可能会遇到运行X64版本而导致后续有些命令无法使用, 所以可以运行X86版本) 安装所需模块 首先在C盘(系统盘)根目录,新建名为 token 的文件夹接着在Windows Powershell输入以下命令下载模块: Save-Module -Name NtObjectManager -Path

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

    今天主要了解了Rust语言的3种循环方法: loop.while.for. 首先聊聊loop,loop的主要作用是循环某段代码段,使用方法如下 fn main() { loop { println!("loop test"); } } 其中打印loop test这条代码会无限循环,运行结果如下 loop testloop testloop testloop testloop testloop testloop testloop testloop testloop testloop te

  • 每天一篇javascript学习小结(基础知识)

    1.字符转换 var s1 = "01"; var s2 = "1.1"; var s3 = "z";//字母'z'无法转换为数字,所以或返回NaN var b = false; var f = 1.1; var o = { valueOf: function() { return -1; } }; s1 = -s1; //value becomes numeric -1 s2 = -s2; //value becomes numeric -1.

  • JavaScript事件学习小结(一)事件流

    相关阅读: JavaScript事件学习小结(五)js中事件类型之鼠标事件 http://www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 http://www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员(属性和方法) http://www.jb51.net/article/86262.htm JavaScript事件学习小结(二)js事件处理程序 http://www

  • 每天一篇javascript学习小结(Array数组)

    1.数组常用方法 var colors = ["red", "blue", "green"]; //creates an array with three strings alert(colors.toString()); //red,blue,green alert(colors.valueOf()); //red,blue,green alert(colors); //red,blue,green 2.数组map()方法 var number

  • 每天一篇javascript学习小结(Boolean对象)

    创建 Boolean 对象的语法:     new Boolean(value);    //构造函数     Boolean(value);        //转换函数     参数 value 由布尔对象存放的值或者要转换成布尔值的值. 返回值     当作为一个构造函数(带有运算符 new)调用时,Boolean() 将把它的参数转换成一个布尔值,并且返回一个包含该值的 Boolean 对象.     如果作为一个函数(不带有运算符 new)调用时,Boolean() 只将把它的参数转换成

  • 每天一篇javascript学习小结(Date对象)

    1.Date.now() //Date.now() is in ECMAScript 5 //Prior to that, use +new Date() //获取当前时间 var now = (typeof Date.now == "function" ? Date.now() : +new Date()); alert("Right now: " + now); 2.Date.parse()方法 var now = new Date(); alert(now);

  • 每天一篇javascript学习小结(Function对象)

    小编两天都没有更新文章了,小伙伴们是不是等着急了,今天开始再继续我们的<每天一篇javascript学习小结>系列文章,希望大家继续关注. 1.Function  函数调用(类似call方法) function callSomeFunction(someFunction, someArgument){ return someFunction(someArgument); } function add10(num){ return num + 10; } var result1 = callSo

  • JavaScript事件学习小结(五)js中事件类型之鼠标事件

    相关阅读: JavaScript事件学习小结(五)js中事件类型之鼠标事件 http://www.jb51.net/article/86259.htm JavaScript事件学习小结(一)事件流 http://www.jb51.net/article/86261.htm javaScript事件学习小结(四)event的公共成员(属性和方法) http://www.jb51.net/article/86262.htm JavaScript事件学习小结(二)js事件处理程序 http://www

  • hibernate一对多关联映射学习小结

    一对多关联映射  映射原理  一对多关联映射和多对一关联映射的映射原理是一致的,都是在多的一端加入一个外键,指向一的一端.关联关系都是由多端维护,只是在写映射时发生了变化. 多对一和一对多的区别 多对一和一对多的区别在于维护的关系不同: (1)多对一:多端维护一端的关系,在加载多端时,可以将一端加载上来. (2)一对多:一端维护多端的关系,在加载一端时,可以将多端加载上来. 分类 一对多单向关联映射 对象模型 从对象模型中,我们可以看出,Group持有User的一个引用.由于是单向关联,所以数据

  • JavaScript对象学习小结

    JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 在JavaScript中,几乎用到的每个js都离不开它的对象.下面我们深入了解一下js对象. js中对象的分类跟之前我们学过的语言中函数的分类一样,一个是系统自带的叫预定义对象,一个是用户自己写的叫自定义对象. 大体内容如下图所示: 一:核心对象 1.Array对象 数组对象,用来创建数组,使用new 创建 常用的方法如下图: 常用属性:

随机推荐