cog_task/action/
de.rs

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}