Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs 菜单
Docs 主页
/ /

结果和选项枚举

在本指南中,您可以学习;了解如何在Rust驾驶员中使用 ResultOption 枚举。

Rust 提供ResultOption枚举作为应用程序代码的保护措施。 Rust 驱动程序提供的许多方法都会返回以这两种类型之一包装的值。

Result枚举可以返回以下变体:

  • Ok(T):封装操作结果的值

  • Err(E):如果操作不成功,则会封装一个错误值

例如, insert_one()方法返回Result类型以包装成功响应或错误。

要访问权限insert_one() 的解包结果,请使用 ?操作符。如果操作成功,该方法将返回 Result枚举的 Ok(InsertOneResult) 变体。在本例中,?操作符会解包 InsertOneResult 值并将其赋值给 insert_one_result 变量。如果操作不成功,该方法将返回 Err(E)枚举变体,?操作符会解包并返回错误值。

以下代码演示了在处理插入操作结果时使用 ?操作符的语法:

let insert_one_result = my_coll.insert_one(doc).await?;

或者,您可以创建一个条件来处理InsertOneResult的展开值。 以下代码使用match关键字处理insert_one()结果:

let insert_one_result = my_coll.insert_one(doc).await;
match insert_one_result {
Ok(val) => {
println!("Document inserted with ID: {}", val.inserted_id);
},
Err(err) => {
println!("Operation not successful");
}
}

Option枚举可以返回以下变体:

  • None:表示操作返回的空值

  • Some(T):封装非空返回值

某些 Rust 驱动程序方法会返回Option类型,例如read_concern()方法。 此方法返回一个Option ,如果不存在读关注,则它会包装一个空值,或者一个ReadConcern值。

要访问read_concern()的结果,可以使用与上例所示相同的match语法来处理NoneSome(T)变体。 或者,您可以使用if let语法仅处理Some(T)变体。 以下代码将打开并打印非空read_concern()返回值(如果存在):

if let Some(rc) = my_coll.read_concern() {
println!("Read concern: {:?}", rc);
}

有关ResultOption枚举的更多信息,请参阅 Rust 语言文档中的以下资源:

  • 结果

  • 选项

  • ?操作符

  • 使用 if let 的简洁控制流

后退

边界和边界错误

在此页面上