use serde::{Deserialize, Serialize}; use serde_enum_str::{Deserialize_enum_str, Serialize_enum_str}; #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "lowercase")] pub enum Flag { Required, Optional, Included, Incompatible, Launch, Env, Expected, Patch, } #[derive(Debug, Deserialize_enum_str, Serialize_enum_str, PartialEq, Eq, Hash)] #[serde(rename_all = "lowercase")] pub enum InstallAction { Move, Extract, Rename, Inject, Library, #[serde(other)] Unknown(String), } #[derive(Debug, Deserialize_enum_str, Serialize_enum_str, PartialEq, Eq, Hash)] #[serde(rename_all = "lowercase")] pub enum APIFeature { Addons, Files, Env, #[serde(other)] Unofficial(String), } #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash, Default)] #[serde(rename_all = "lowercase")] pub enum Side { Client, Server, #[default] Both, } #[derive(Debug, Serialize, Deserialize, PartialEq, Eq, Hash)] #[serde(rename_all = "lowercase")] pub enum ArgumentMode { Replace, Append, Expand, Override, } impl Side { pub fn compatbile_with(&self, other: &Self) -> bool { match self { Side::Client => other == &Self::Client || other == &Self::Both, Side::Server => other == &Self::Server || other == &Self::Both, Side::Both => true, } } }