serde_dynamo/ser/
serializer_struct.rs

1use 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}