From d35534c0795caeda46e57fc515b74eba701110a2 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Fri, 6 Dec 2019 18:00:04 +0100 Subject: initial commit --- src/api/traits.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/api/traits.rs (limited to 'src/api/traits.rs') 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, +} -- cgit v1.2.3