41 stable releases (3 major)
4.2.14 | Apr 1, 2024 |
---|---|
4.2.13 | Nov 27, 2023 |
4.2.7 | Oct 10, 2023 |
4.2.3 | May 24, 2023 |
1.0.0 | Dec 21, 2020 |
#142 in Encoding
94,156 downloads per month
Used in 10 crates
(8 directly)
290KB
5.5K
SLoC
DynamoDB is an AWS database that stores key/value and document data.
serde_dynamo provides a way to serialize and deserialize between data stored in these items and strongly-typed Rust data structures.
You may be looking for
Features
Support for aws-sdk-dynamodb, aws_lambda_events, and rusoto_dynamodb is provided via features. See the docs for more details.
Examples
See the docs for more examples.
Parsing items as strongly-typed data structures.
Items received from a aws-sdk-dynamodb call can be run through from_items
.
#[derive(Serialize, Deserialize)]
pub struct User {
id: String,
name: String,
age: u8,
};
// Get documents from DynamoDB
let result = client.scan().table_name("user").send().await?;
// And deserialize them as strongly-typed data structures
if let Some(items) = result.items {
let users: Vec<User> = from_items(items)?;
println!("Got {} users", users.len());
}
Alternatively, to deserialize one item at a time, from_item
can be used.
for item in result.items.unwrap() {
let user: User = from_item(item)?;
println!("{} is {}", user.name, user.age);
}
Creating items by serializing data structures
Writing an entire data structure to DynamoDB typically involves using to_item
to serialize
it.
#[derive(Serialize, Deserialize)]
pub struct User {
id: String,
name: String,
age: u8,
};
// Create a user
let user = User {
id: "fSsgVtal8TpP".to_string(),
name: "Arthur Dent".to_string(),
age: 42,
};
// Turn it into an item that aws-sdk-dynamodb understands
let item = to_item(user)?;
// And write it!
client.put_item().table_name("users").set_item(Some(item)).send().await?;
Dependencies
~0.3–15MB
~200K SLoC