serde_dynamo/ser/
serializer_struct.rs1use super::{AttributeValue, Error, Result, Serializer};
2use serde_core::{ser, Serialize};
3use std::collections::HashMap;
4
5pub struct SerializerStruct {
6 item: HashMap<String, AttributeValue>,
7}
8
9impl SerializerStruct {
10 pub fn new(len: usize) -> Self {
11 SerializerStruct {
12 item: HashMap::with_capacity(len),
13 }
14 }
15}
16
17impl ser::SerializeStruct for SerializerStruct {
18 type Ok = AttributeValue;
19 type Error = Error;
20
21 fn serialize_field<F>(&mut self, key: &'static str, value: &F) -> Result<(), Self::Error>
22 where
23 F: ?Sized,
24 F: Serialize,
25 {
26 let serializer = Serializer;
27 let value = value.serialize(serializer)?;
28 self.item.insert(key.to_string(), value);
29 Ok(())
30 }
31
32 fn end(self) -> Result<Self::Ok, Self::Error> {
33 Ok(AttributeValue::M(self.item))
34 }
35}