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

Enums de resultados e opções

Neste guia, você aprenderá a trabalhar com os enums Result e Option no driver Rust.

O Rust fornece os enums Result e Option como proteção para o código do seu aplicativo. Muitos métodos oferecidos pelo driver Rust retornam valores envoltos em um desses dois tipos.

A enumeração Result pode retornar as seguintes variantes:

  • Ok(T): envolve o valor do resultado da operação

  • Err(E): envolve um valor de erro se a operação não for bem-sucedida

Por exemplo, o método insert_one() retorna um tipo Result para envolver uma resposta bem-sucedida ou um erro.

Para acessar o resultado não agrupado de insert_one(), use o operador ?. Se a operação for bem-sucedida, o método retornará a variante Ok(InsertOneResult) do enumeração Result. Nesse caso, o operador ? desembrulha o valor InsertOneResult e o atribui à variável insert_one_result. Se a operação não for bem-sucedida, o método retornará a variante de enumeração Err(E), e o operador ? desembrulhar e retornar o valor de erro.

O código a seguir demonstra a sintaxe para usar o operador ? ao lidar com um resultado de operação de inserção:

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

Alternativamente, você pode criar um condicional para lidar com os valores não agrupados de InsertOneResult. O código a seguir usa a palavra-chave match para processar o 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");
}
}

A enumeração Option pode retornar as seguintes variantes:

  • None: representa um valor vazio retornado por uma operação

  • Some(T): envolve um valor de retorno não vazio

Alguns métodos de driver Rust retornam um tipo de Option , como o método read_concern() . Este método retorna um Option que envolve um valor vazio, se não existir nenhuma referência de leitura, ou um valor ReadConcern .

Para acessar o resultado de read_concern(), você pode usar a mesma sintaxe match mostrada no exemplo anterior para processar as variantes None e Some(T) . Como alternativa, você pode usar a sintaxe if let para processar somente a variante Some(T) . O seguinte código desembrulha e imprime o valor de retorno read_concern() não vazio, se existir:

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

Para obter mais informações sobre os enums Result e Option , consulte os seguintes recursos na documentação da linguagem Rust:

  • Resultado

  • Opção

  • ? Operador

  • Fluxo de controle conciso com se permitido

Voltar

Limites e erros de limites

Nesta página