#[derive(Debug, PartialEq, Eq, Clone)] pub enum ResourceState { Parsed(bool), Unparsed, } #[derive(Debug, PartialEq, Eq)] pub struct Icon { pub name: String, pub url: String, pub width: u32, pub height: u32, pub content_type: String, } impl Clone for Icon { fn clone(&self) -> Self { Icon { name: self.name.clone(), url: self.url.clone(), width: self.width, height: self.height, content_type: self.content_type.clone(), } } } #[derive(Debug, PartialEq, Eq, Clone)] pub struct Resource { pub name: String, pub title: String, pub url: Option, pub icon: Option, pub state: ResourceState, } #[derive(Debug, PartialEq, Eq, Clone)] pub struct Ingredient { pub resource: Resource, pub quantity: u32, } #[derive(Debug, PartialEq, Eq, Clone)] pub enum RecipeType { Production, Refining, Cooking, } #[derive(Debug, PartialEq, Eq, Clone)] pub struct Duration { pub millis: u64, pub unit: String, } #[derive(Debug, PartialEq, Eq, Clone)] pub struct Recipe { pub recipe_type: RecipeType, pub resource: Ingredient, pub duration: Duration, pub ingredients: Vec, }