1use crate::action::{Action, ActionEnum, ActionEnumAsRef};
2use serde::{Deserialize, Deserializer, Serialize, Serializer};
3
4impl<'de> Deserialize<'de> for Box<dyn Action> {
5 fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
6 where
7 D: Deserializer<'de>,
8 {
9 ActionEnum::deserialize(deserializer)?
10 .unwrap()
11 .map_err(|e| serde::de::Error::custom(format!("{e:#?}")))
12 }
13}
14
15impl Serialize for Box<dyn Action> {
16 fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
17 where
18 S: Serializer,
19 {
20 ActionEnumAsRef::from(self.as_ref()).serialize(serializer)
21 }
22}