gpt4 book ai didi

postgresql - 为什么以下内容在尝试连接到 Rust 中的 Postgres 时无法编译

转载 作者:行者123 更新时间:2023-11-29 08:25:45 26 4
gpt4 key购买 nike

当尝试连接到 Postgres 时,以下行与文档中的一样工作

let conn = PostgresConnection::connect("postgres://postgres@localhost",
&NoSsl).unwrap();

但是一旦我将其更改为:

let conn = try!(PostgresConnection::connect("postgres://postgres@localhost", &NoSsl));

我得到以下编译错误:

<std macros>:2:59: 2:65 error: mismatched types: expected `()` but found `core::result::Result<<generic #16>,postgres::error::PostgresConnectError>` (expected () but found enum core::result::Result)
<std macros>:2 ($e:expr) => (match $e { Ok(e) => e, Err(e) => return Err(e) })

最佳答案

try!()宏转换此代码:

let conn = try!(PostgresConnection::connect("postgres://postgres@localhost", &NoSsl));

进入这个:

let conn = match PostgresConnection::connect("postgres://postgres@localhost", &NoSsl) {
Ok(e) => e,
Err(e) => return Err(e)
};

也就是说,如果发生错误,它会从调用它的函数中返回。因此,此函数必须返回类型为 Result<..., PostgresConnectError> 的内容。 .但是,在您的情况下,您在其中调用此宏的函数似乎不返回任何内容(也就是说,它返回单位 () : fn whatever() { } - 无返回类型)。

Result::unwrap() ,另一方面,如果结果值为 Err,则会导致任务失败, 而且它是一个函数,所以它不依赖于函数返回类型。

关于postgresql - 为什么以下内容在尝试连接到 Rust 中的 Postgres 时无法编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24993199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com