1use stepflow::data::VarId;
2use stepflow::step::StepId;
3use stepflow::action::ActionId;
4use stepflow::SessionId;
5use stepflow::object::IdError;
6use stepflow::Error;
7
8#[derive(Debug)]
9pub enum SerdeError<T> {
10 Error(Error),
11 MissingRootStep,
12 InvalidFormat(T),
13}
14
15impl<T> From<Error> for SerdeError<T> {
16 fn from(err: Error) -> Self {
17 SerdeError::Error(err)
18 }
19}
20
21macro_rules! from_id_error {
22 ($id_type:ident) => {
23 impl<T> From<IdError<$id_type>> for SerdeError<T> {
24 fn from(err: IdError<$id_type>) -> Self {
25 SerdeError::Error(Error::$id_type(err))
26 }
27 }
28 };
29}
30
31from_id_error!(VarId);
32from_id_error!(StepId);
33from_id_error!(ActionId);
34from_id_error!(SessionId);