Функция Rust требует возврата ключевого слова. Почему? - PullRequest
0 голосов
/ 11 октября 2019

Я немного играл с 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 Ответ

2 голосов
/ 11 октября 2019
fn connect() -> Connection {
    sqlite::open(":memory:").unwrap()
}

Удаление точки с запятой заменяет строку из оператора на выражение , которое имеет возвращаемое значение, которое Rust может затем вывести как возвращаемое значение дляфункция.

Это рассматривается в самом конце Глава 3 книги Rust language в качестве конкретного примера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...