详解Rust循环

Rust 循环中包括while、for、loop循环等,本篇文章重点为大家讲解一下Rust 循环的具体使用方法。

目前创新互联已为千余家的企业提供了网站建设、域名、网站空间网站托管运营、企业网站设计、汝阳网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

while 循环

while 循环是最典型的条件语句循环:

实例

fn main() {
   let mut number = 1;
   while number != 4 {
       println!("{}", number);
       number += 1;
   }
   println!("EXIT");
}

运行结果:

1
2
3
EXIT

Rust 语言到此教程编撰之日还没有 do-while 的用法,但是 do 被规定为保留字,也许以后的版本中会用到。

在 C 语言中 for 循环使用三元语句控制循环,但是 Rust 中没有这种用法,需要用 while 循环来代替:

C 语言

int i;
for (i = 0; i let mut i = 0;
while i 

for 循环

for 循环是最常用的循环结构,常用来遍历一个线性数据据结构(比如数组)。for 循环遍历数组:

实例

fn main() {
   let a = [10, 20, 30, 40, 50];
   for i in a.iter() {
       println!("值为 : {}", i);
   }
}

运行结果:

值为 : 10
值为 : 20
值为 : 30
值为 : 40
值为 : 50

这个程序中的 for 循环完成了对数组 a 的遍历。a.iter() 代表 a 的迭代器(iterator),在学习有关于对象的章节以前不做赘述。

当然,for 循环其实是可以通过下标来访问数组的:

实例

fn main() {
let a = [10, 20, 30, 40, 50];
   for i in 0..5 {
       println!("a[{}] = {}", i, a[i]);
   }
}

运行结果:

a[0] = 10
a[1] = 20
a[2] = 30
a[3] = 40
a[4] = 50

loop 循环

身经百战的开发者一定遇到过几次这样的情况:某个循环无法在开头和结尾判断是否继续进行循环,必须在循环体中间某处控制循环的进行。如果遇到这种情况,我们经常会在一个 while (true) 循环体里实现中途退出循环的操作。

Rust 语言有原生的无限循环结构 —— loop:

实例

fn main() {
   let s = ['R', 'U', 'N', 'O', 'O', 'B'];
   let mut i = 0;
   loop {
       let ch = s[i];
       if ch == 'O' {
           break;
       }
       println!("\'{}\'", ch);
       i += 1;
   }
}

运行结果:

'R'
'U'
'N'

loop 循环可以通过 break 关键字类似于 return 一样使整个循环退出并给予外部一个返回值。这是一个十分巧妙的设计,因为 loop 这样的循环常被用来当作查找工具使用,如果找到了某个东西当然要将这个结果交出去:

实例

fn main() {
   let s = ['R', 'U', 'N', 'O', 'O', 'B'];
   let mut i = 0;
   let location = loop {
       let ch = s[i];
       if ch == 'O' {
           break i;
       }
       i += 1;
   };
   println!(" \'O\' 的索引为 {}", location);
}

运行结果:

 'O' 的索引为 3

文章标题:详解Rust循环
本文链接:http://www.gawzjz.com/qtweb/news37/193187.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联