Keyword return[][src]

Expand description

从函数返回值。

return 在函数中标记执行路径的结尾:

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

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

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

return 立即从函数 (“early 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