lib

Core libraries for Radroots
git clone https://radroots.dev/git/lib.git
Log | Files | Refs | README

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 }