Rust函数需要return关键字。为什么?

时间:2019-10-11 16:23:22

标签: rust

我一直在与Rust一起玩,并且我正在尝试消除不必要的return语句。在一种情况下,我觉得这里不需要return语句,但是我抱怨“身体没有尾巴”。似乎应该使用以下代码:

use sqlite;
use sqlite::Connection

fn main() {
    let connection = connect();

    query(connection);
}

// The offending function
fn connect() -> Connection {
    // Simple example, shouldn't use unwrap
    sqlite::open(":memory:").unwrap();
}

我可以将return语句添加到有问题的函数中,如下所示:

fn connect() -> Connection {
    return sqlite::open(":memory:").unwrap();
}

但是我很好奇为什么这不起作用。

1 个答案:

答案 0 :(得分:2)

fn connect() -> Connection {
    sqlite::open(":memory:").unwrap()
}

删除分号,将行从statement更改为expression,该行具有返回值,然后Rust可以将其推断为该函数的返回值。

Chapter 3 of the Rust language这本书的最后部分将作为一个具体示例进行介绍。