函数 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 函数

函数使用 `fn` 关键字声明。函数参数需要标注类型，就像变量一样。如果函数返回值，则必须在箭头 `->` 后指定返回类型。

函数的最后一个表达式将作为返回值。另外，可以使用 `return` 语句在函数内部提前返回值，甚至可以在循环或 `if` 语句内部使用。

让我们用函数重写 FizzBuzz 吧！

    // 与 C/C++ 不同，Rust 中函数定义的顺序没有限制
    fn main() {
        // 我们可以在这里使用函数，并在稍后的某处定义它
        fizzbuzz_to(100);
    }

    // 返回布尔值的函数
    fn is_divisible_by(lhs: u32, rhs: u32) -> bool {
        // 特殊情况，提前返回
        if rhs == 0 {
            return false;
        }

        // 这是一个表达式，此处不需要 `return` 关键字
        lhs % rhs == 0
    }

    // "无返回值"的函数实际上返回单元类型 `()`
    fn fizzbuzz(n: u32) -> () {
        if is_divisible_by(n, 15) {
            println!("fizzbuzz");
        } else if is_divisible_by(n, 3) {
            println!("fizz");
        } else if is_divisible_by(n, 5) {
            println!("buzz");
        } else {
            println!("{}", n);
        }
    }

    // 当函数返回 `()` 时，可以在函数签名中省略返回类型
    fn fizzbuzz_to(n: u32) {
        for n in 1..=n {
            fizzbuzz(n);
        }
    }