Rust 流程控制和函数

简介: 本文介绍了 Rust 中的流程控制语句,主要包括 if 条件判断、for 循环、loop 循环、while 循环。同时也会然后 Rust 函数的使用。

流程控制

Rust 的流程控制分为两类:

  • 条件判断(if)
  • 循环(for、loop、while)

主要涉及到四个语法:ifforloopwhile

if 条件判断

和大多数语言不同的是,Rust 的条件判断并不需要加上小括号 (),是可以省略的。

fn main() {
  let num = 10;
  if num > 8 {
    println!("num 大于 8");
  } else {
    println!("num 小于 8");
  }
}

如果写上括号,编译器会提示“warning: unnecessary parentheses around if condition”,也就是不必要的插入语。

同时,Rust 中也不存在强制类型转换,在写判断条件时,必须是准确的 true 或者 false:

let num = 10
if num > 10 {} // √

if num {} // 在 JS 中 10 会类型转换为 true

for 循环

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

for 循环遍历数组:

fn main() {
    let a = [1, 2, 3, 4, 5];
    // a.iter() 代表 a 的迭代器(iterator)
    for i in a.iter() {
        println!("{}", i); // 1,2,3,4,5
    }
}

loop 循环

loop 用于创建无限循环,使用 break 关键字来跳出循环。

// 无限循环下去
loop {
    println!("旋转,跳跃,我不停歇!");
}


// 无限循环下去
loop {
    println!("旋转,跳跃,我不停歇!");
    // 跳累了,要歇会
    break;
}

break 关键字在结束循环时还可以返回一个值:

let mut count = 1;

let loop_count = loop {
    count += 1;
    if count > 100 {
        // 循环了 101 次,跳出循环,并返回一个结果
        break count;
    }
};

println!("一共循环了:{} 次", loop_count);
// 一共循环了:101 次

while 循环

while 循环是最典型的条件语句循环。 只要条件表达式保持为 true,就会一直循环下去

结束循环的调节就是将条件设为 false。

let mut count = 0
while count < 5 {
    println!("我们跳啊跳,跳啊条...");
    count += 1;
}
println!("结束循环");

函数

正如 Hello World 示例中的那样:

fn main() {
  println!("Hello, world!");
}

Rust 中使用关键字 fn 来声明一个函数。一般函数都会有入参和返回值。函数体包含了一系列的语句和表达式。

函数返回值可以使用 return 语句,也可以使用表达式。

函数的名字和变量一样,遵循蛇形命名法(snake case):

fn getPersonList () {} //  ×
fn get_person_list () {} // √

函数可以定义在任意位置,好似 JS 中的函数声明提升。

Rust 是强类型语言,声明函数时如果有参数,参数必须指定类型

fn main() {
    add(10, 20); // 30
}

// 两个参数都是 i32 类型的整数
fn add(a: i32, b: i32) {
   println!("{}", a + b);
}

函数若有返回值,必须通过 ->指明返回值的类型

fn main() {
    let res = add(10, 10);

    println!("函数 add 执行的结果是: {}", res);
}

// 两个参数都是 i32 类型的整数,返回值也是 i32
fn add(a:i32, b:i32) -> i32 {
   return a + b;
}

关于函数的返回值,容易发生混乱:

在 JS 中,使用 return 关键字来结束函数的执行,并将 return 后面的结果作为函数的返回值。

在 Rust 中,基本和 JS 差不多,可以使用 return 来返回函数的执行结果,就像上面那样。也可以使用一个表达式来作为函数的返回内容:

fn main() {
    let res = add(10, 10);

    println!("函数 add 执行的结果是: {}", res);
}

fn add(a:i32, b:i32) -> i32 {
    // `a + b` 是一条表达式,求值后,返回一个值.因为它是函数的最后一行,因此该表达式的值也就是函数的返回值。
    a + b
}

如果函数没有返回值,返回值的类型可以不写,也可以写成 -> ()

fn main() {
  foo(10);
}

fn foo(a:i32) ->() {
  println!("{}", a);
}

小结

本文介绍了 Rust 中的流程控制语句,主要包括了:

  • if 条件判断
  • for 循环
  • loop 循环
  • while 循环

使用时要注意,if 条件表达式不存在类型转换;在做循环是根据需求选择合适的循环语句。

然后介绍了 Rust 函数的声名方式,主要注意事项是参数和返回值的类型。如果有参数,一定要指定类型;如果有返回值,也要指定返回值的类型。

目录
相关文章
|
3月前
|
存储 Rust 编译器
30天拿下Rust之函数详解
在Rust中,函数是程序的基本构建块,是代码复用的基本单位,用于封装一系列执行特定操作和计算的语句。函数是可重用的代码片段,可以接受输入参数并产生输出。通过合理使用函数,可以提高代码的可读性、可维护性和可重用性。
45 4
|
4月前
|
Rust 编译器 测试技术
Rust与C++的区别及使用问题之Rust中函数参数传递的问题如何解决
Rust与C++的区别及使用问题之Rust中函数参数传递的问题如何解决
|
5月前
|
Rust 开发者
Rust函数入门与函数重载
Rust函数入门与函数重载
120 0
|
6月前
|
Rust 编译器 容器
|
6月前
|
Rust
|
6月前
|
存储 Rust 程序员
rust中的函数:定义、调用与闭包
本文将深入探讨Rust编程语言中函数的定义、调用方式,以及闭包(closures)的概念和应用。我们将从函数的基本语法出发,逐步深入到函数的参数传递、返回值,再进一步介绍闭包及其捕获环境的能力,帮助读者全面理解并熟练运用Rust中的函数与闭包。
|
6月前
|
Rust 编译器
【Rust】——函数(所有权)以及借用或引用
【Rust】——函数(所有权)以及借用或引用
|
6月前
|
Rust 编译器
【Rust】——函数
【Rust】——函数
|
6月前
|
Rust Java 编译器
【一起学Rust | 基础篇】rust函数与流程控制详解
【一起学Rust | 基础篇】rust函数与流程控制详解
90 0
【一起学Rust | 基础篇】rust函数与流程控制详解
|
Rust 安全 编译器
Rust 基础入门 —— 函数
当用 ! 作函数返回类型的时候,表示该函数永不返回( diverge function ),特别的,这种语法往往用做会导致程序崩溃的函数:
52 0