Keyword return

source ·
Expand description

从函数返回一个值。

return 标志着函数中执行路径的结束:

fn foo() -> i32 {
    return 3;
}
assert_eq!(foo(), 3);
Run

当返回值是函数中的最后一个表达式时,就不需要写 return。 在这种情况下,将省略 ;

fn foo() -> i32 {
    3
}
assert_eq!(foo(), 3);
Run

return 会立即从函数返回 (是一个提前返回):

use std::fs::File;
use std::io::{Error, ErrorKind, Read, Result};

fn main() -> Result<()> {
    let mut file = match File::open("foo.txt") {
        Ok(f) => f,
        Err(e) => return Err(e),
    };

    let mut contents = String::new();
    let size = match file.read_to_string(&mut contents) {
        Ok(s) => s,
        Err(e) => return Err(e),
    };

    if contents.contains("impossible!") {
        return Err(Error::new(ErrorKind::Other, "oh no!"));
    }

    if size > 9000 {
        return Err(Error::new(ErrorKind::Other, "over 9000!"));
    }

    assert_eq!(contents, "Hello, world!");
    Ok(())
}
Run