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

Enumeraciones de resultados y opciones

En esta guía, puedes aprender cómo trabajar con el Result y enumeraciones Option en el controlador de Rust.

Rust proporciona los enumerados Result y Option como salvaguardias para el código de tu aplicación. Muchos métodos ofrecidos por el controlador Rust devuelven valores encapsulados en uno de estos dos tipos.

La enumeración Result puede devolver las siguientes variantes:

  • Ok(T): envuelve el valor del resultado de la operación

  • Err(E): envuelve un valor de error si la operación no tiene éxito

Por ejemplo, el método insert_one() devuelve un tipo Result para envolver una respuesta exitosa o un error.

Para acceder al resultado sin envolver de insert_one(), utilice el operador ?. Si la operación es exitosa, el método devuelve la variante Ok(InsertOneResult) de la enumeración Result. En este caso, el operador ? desempaqueta el valor InsertOneResult y lo asigna a la variable insert_one_result. Si la operación falla, el método devuelve la variante de la enumeración Err(E), y el operador ? desempaqueta y devuelve el valor de error.

El siguiente código demuestra la sintaxis para usar el operador ? al manejar el resultado de una operación de inserción:

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

Alternativamente, puede crear una condicional para gestionar los valores desenvueltos de InsertOneResult. El siguiente código utiliza la palabra clave match para procesar el resultado 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");
}
}

La enumeración Option puede devolver las siguientes variantes:

  • None: representa un valor vacío devuelto por una operación

  • Some(T): envuelve un valor de retorno no vacío

Algunos métodos de los drivers de Rust devuelven un tipo Option, como el método read_concern(). Este método retorna un Option que contiene un valor vacío, si no existe un nivel de consistencia de lectura, o un valor ReadConcern.

Para acceder al resultado de read_concern(), puede usar la misma sintaxis match que se muestra en el ejemplo anterior para procesar las variantes None y Some(T). Alternativamente, puede usar la sintaxis if let para procesar solo la variante Some(T). El siguiente código desempaqueta e imprime el valor de retorno read_concern() no vacío, si existe:

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

Para obtener más información sobre los enums Result y Option, consulta los siguientes recursos en la documentación del lenguaje Rust:

  • Resultado

  • Opción

  • ? operador

  • Flujo de control conciso con if let

Volver

Límites y errores de límites

En esta página