blender_armature/action/action_keyframes/action_keyframes_serde/
serialize.rs

1use crate::action::action_keyframes::ActionKeyframes;
2use serde::ser::SerializeSeq;
3use serde::{Serialize, Serializer};
4
5impl Serialize for ActionKeyframes {
6    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
7    where
8        S: Serializer,
9    {
10        let mut seq = serializer.serialize_seq(Some(self.keyframes.len()))?;
11
12        for k in self.keyframes.iter() {
13            seq.serialize_element(k)?;
14        }
15
16        seq.end()
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use super::*;
23    use crate::Keyframe;
24
25    /// Verify that we properly serialize action keyframes
26    #[test]
27    fn serialize() {
28        let action_keyframes = ActionKeyframes::new(vec![Keyframe::new(5, vec![])]);
29        let serialized = serde_yaml::to_string(&action_keyframes).unwrap();
30
31        assert_eq!(
32            serialized,
33            r#"---
34- frame: 5
35  bones: []"#
36        )
37    }
38}