I'm new to Rust with a background in Java, Groovy, and C. At this point in my Rust journey, I don't even know how to phrase the question in Google yet.
My question is, can someone give me an example of idiomatic Rust to replace my ugly code snippet below? It smells really bad.
The goal is to detect a ConditionalCheckFailedException
when inserting a new row into AWS DynamoDb and then handle the error accordingly - not to bubble it up to the ultimate caller.
My code below is roughly based on an example found here: 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);
}
};
...
Thanks!!