support_kit/
structures.rs

1mod config_or_preset {
2    use serde::{Deserialize, Serialize};
3
4    // Either a configuration (struct) or a preset (enum).
5    #[derive(Clone, Debug, Deserialize, Serialize, PartialEq)]
6    #[serde(untagged)]
7    pub enum ConfigOrPreset<Config, Preset> {
8        Config(Config),
9        Preset(Preset),
10    }
11}
12
13mod one_or_many {
14
15    use serde::{Deserialize, Serialize};
16
17    #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
18    #[serde(untagged)]
19    pub enum OneOrMany<Contents> {
20        Many(Vec<Contents>),
21        One(Contents),
22    }
23
24    impl<Contents> From<Vec<Contents>> for OneOrMany<Contents> {
25        fn from(value: Vec<Contents>) -> Self {
26            Self::Many(value)
27        }
28    }
29
30    impl<Contents> From<Contents> for OneOrMany<Contents> {
31        fn from(value: Contents) -> Self {
32            Self::One(value)
33        }
34    }
35}
36
37pub use config_or_preset::ConfigOrPreset;
38pub use one_or_many::OneOrMany;