resource_cap.rs (1477B)
1 #![forbid(unsafe_code)] 2 3 use radroots_core::{Decimal, Quantity, Unit}; 4 5 use crate::farm::resource_area::ResourceAreaRef; 6 7 #[cfg(not(feature = "std"))] 8 use alloc::{string::String, vec::Vec}; 9 10 #[cfg_attr(all(test, feature = "std"), derive(dto_bindgen::Dto))] 11 #[cfg_attr(all(test, feature = "std"), dto(export))] 12 #[cfg_attr( 13 any(feature = "serde", test), 14 derive(serde::Serialize, serde::Deserialize) 15 )] 16 #[derive(Clone, Debug)] 17 pub struct ResourceHarvestProduct { 18 pub key: String, 19 pub category: Option<String>, 20 } 21 22 #[cfg_attr( 23 any(feature = "serde", test), 24 derive(serde::Serialize, serde::Deserialize) 25 )] 26 #[cfg_attr(all(test, feature = "std"), derive(dto_bindgen::Dto))] 27 #[cfg_attr(all(test, feature = "std"), dto(export))] 28 #[derive(Clone, Debug)] 29 pub struct ResourceHarvestCap { 30 pub d_tag: String, 31 pub resource_area: ResourceAreaRef, 32 pub product: ResourceHarvestProduct, 33 #[cfg_attr(all(test, feature = "std"), dto(int = "json_string"))] 34 pub start: u64, 35 #[cfg_attr(all(test, feature = "std"), dto(int = "json_string"))] 36 pub end: u64, 37 #[cfg_attr(all(test, feature = "std"), dto(ts(type = "Quantity")))] 38 pub cap_quantity: Quantity, 39 #[cfg_attr(all(test, feature = "std"), dto(ts(type = "Decimal")))] 40 pub display_amount: Option<Decimal>, 41 #[cfg_attr(all(test, feature = "std"), dto(ts(type = "Unit")))] 42 pub display_unit: Option<Unit>, 43 pub display_label: Option<String>, 44 pub tags: Option<Vec<String>>, 45 }