diff options
Diffstat (limited to 'src/api/traits.rs')
-rw-r--r-- | src/api/traits.rs | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/api/traits.rs b/src/api/traits.rs new file mode 100644 index 0000000..194d061 --- /dev/null +++ b/src/api/traits.rs @@ -0,0 +1,40 @@ +//! Struct definitions for the traits API endpoint. +//! +//! * [Example](https://api.guildwars2.com/v2/traits/214) +//! * [Wiki](https://wiki.guildwars2.com/wiki/API:2/traits) + +use super::HasId; +use serde::{Deserialize, Serialize}; + +#[derive(Deserialize, Serialize, Debug, Clone)] +pub struct Trait { + /// The trait id. + pub id: u32, + /// The trait name. + pub name: String, + /// The trait's icon URL. + pub icon: String, + /// The trait description. + pub description: String, + /// The id of the specialization this trait belongs to. + pub specialization: u32, + /// The trait's tier, as a value from 1-3. + /// + /// Elite specializations also contain a tier 0 minor trait, describing which weapon the elite + /// specialization gains access to. + pub tier: u32, + pub slot: Slot, +} + +impl HasId for Trait { + type Id = u32; + fn get_id(&self) -> u32 { + self.id + } +} + +#[derive(Deserialize, Serialize, Debug, PartialEq, Eq, Hash, Copy, Clone)] +pub enum Slot { + Major, + Minor, +} |