【发布时间】:2021-10-10 18:35:35
【问题描述】:
我是 Rust 新手,具有 Java、Groovy 和 C 方面的背景。在我的 Rust 旅程中,我什至不知道如何在 Google 中表达这个问题。
我的问题是,有人可以给我一个惯用的 Rust 示例来替换下面我丑陋的代码 sn-p 吗?真难闻。
目标是在将新行插入 AWS DynamoDb 时检测到 ConditionalCheckFailedException,然后相应地处理错误 - 而不是将其冒泡到最终调用者。
我下面的代码大致基于此处找到的示例:https://github.com/awslabs/aws-sdk-rust/blob/c0905d9c991bb38a9738f1ffcb74e200772afc12/sdk/examples/dynamo-add-item/src/main.rs#L128
use dynamodb::model::AttributeValue;
use dynamodb::Client;
use aws_hyper::SdkError;
...
match request.send().await {
Ok(_) => {
println!("Added new row.");
println!("");
}
Err(e) => {
match e {
SdkError::ConstructionFailure(ce) => eprintln!("ConstructionFailure:\n{:?}", ce),
SdkError::DispatchFailure(df) => eprintln!("DispatchFailure:\n{:?}", df),
SdkError::ResponseError{raw, err} => eprintln!("ResponseError:\n{:?}\n\n{:?}", raw, err),
SdkError::ServiceError{raw: _, err} => {
match err.kind {
dynamodb::error::PutItemErrorKind::ConditionalCheckFailedException(ccfe) =>
eprintln!("ConditionalCheckFailedException: {:?}", ccfe),
_ => eprintln!("Don't know what kind.")
}
},
};
process::exit(1);
}
};
...
谢谢!!
【问题讨论】:
标签: amazon-web-services rust amazon-dynamodb