Rust 函数


Rust 函数是一种执行特定任务的代码块,用于将一组指令或操作封装在一起。在 Rust 语言中,函数定义使用 fn 关键字。

函数定义的语法格式如下:

fn function_name(parameters: Type) -> Return_Type {
    // Function body
    // Code to be executed
    // Return statement (if any)
}

我们可以解释一下定义中各种语法要素的作用:

  • fn: 这是一个 Rust 关键字,用于告诉编译器定义的东西是一个函数。
  • function_name: 函数的名称,可以根据需要进行随意设置,但是需要遵循 rust 语言的命名规范。
  • parameters: 函数接受的参数,可以接受任何类型的数据,每个参数都需要指定其类型。
  • Return_Type: 函数返回值的类型,需要指定函数执行的结果类型,可以是任何类型的数据,或者是空(即不返回值)。
  • Function Body: 函数体,包含执行特定任务的代码块,应当包括功能描述、局部变量、逻辑判断、循环控制、错误处理等内容。

函数体中包含多个语句,这些语句按顺序执行,直到函数返回结果或者遇到 return 关键字。在返回表达式时,可以不加 return 关键字,但如果省略,函数将在最后使用表达式的值返回。

Rust 语言中有多种类型的函数,具体如下:

函数

Rust 中最基本的函数类型,它可以接受0个或多个参数,不返回任何值。

fn basic_function (parameter1: Type1, parameter2: Type2, ...) {
    // Function body
}

有返回值的函数

该类型函数接受0个或多个参数,并返回指定的结果类型。

fn return_function(parameter1: Type1, parameter2: Type2, ...) -> Return_type {
    // Function body
    return result;
}

在函数体中的最后一个语句实现返回表达式的值,如果遇到了符合相应类型的非返回语句,则必须加上 return 关键字来使函数返回结果。

Lambda 函数

Rust 也支持 Lambda 函数,这是一种不需要命名的、函数作为数据的某一部分的函数。

let lambda = |parameter1: Type1, parameter2: Type2| -> Return_Type {
    // Function body
};

递归函数

递归函数是一种可以调用自身的函数类型。可以使用 loop 关键字来实现递归调用。

fn factorial(n: i32) -> i32 {
    if n == 0 {
      1
    } else {
      n * factorial(n-1)
    }
}

上面的代码演示了一个计算阶乘的递归函数,如果 n 为 0,返回 1,否则将递归调用自己计算 n-1 阶乘的结果,并将其与 n 相乘。

函数是 Rust 代码的基础组建,它使我们可以轻松组合代码块并将其重复使用。通过定义和调用不同类型的函数,可以轻松优化和扩展您的 Rust 代码。