pokeapi_model/
utility.rs

1//! Utility types.
2
3use std::marker::PhantomData;
4
5use pokeapi_macro::pokeapi_struct;
6
7use crate::{EncounterConditionValue, EncounterMethod, Generation, Machine, Version, VersionGroup};
8
9#[pokeapi_struct]
10struct APIResource<T> {
11    url: String,
12    _resource_type: PhantomData<*const T>,
13}
14
15#[pokeapi_struct]
16struct Language {
17    id: i32,
18    name: String,
19    official: bool,
20    iso639: String,
21    iso3166: String,
22    names: Vec<Name>,
23}
24
25#[pokeapi_struct]
26struct Description {
27    description: String,
28    language: NamedAPIResource<Language>,
29}
30
31#[pokeapi_struct]
32struct Effect {
33    effect: String,
34    language: NamedAPIResource<Language>,
35}
36
37#[pokeapi_struct]
38struct Encounter {
39    min_level: i32,
40    max_level: i32,
41    condition_values: Vec<NamedAPIResource<EncounterConditionValue>>,
42    chance: i32,
43    method: NamedAPIResource<EncounterMethod>,
44}
45
46#[pokeapi_struct]
47struct FlavorText {
48    flavor_text: String,
49    language: NamedAPIResource<Language>,
50    version: NamedAPIResource<Version>,
51}
52
53#[pokeapi_struct]
54struct GenerationGameIndex {
55    game_index: i32,
56    generation: NamedAPIResource<Generation>,
57}
58
59#[pokeapi_struct]
60struct MachineVersionDetail {
61    machine: APIResource<Machine>,
62    version_group: NamedAPIResource<VersionGroup>,
63}
64
65#[pokeapi_struct]
66struct Name {
67    name: String,
68    language: NamedAPIResource<Language>,
69}
70
71#[pokeapi_struct]
72struct NamedAPIResource<T> {
73    name: String,
74    url: String,
75    _resource_type: PhantomData<*const T>,
76}
77
78#[pokeapi_struct]
79struct VerboseEffect {
80    effect: String,
81    short_effect: String,
82    language: NamedAPIResource<Language>,
83}
84
85#[pokeapi_struct]
86struct VersionEncounterDetail {
87    version: NamedAPIResource<Version>,
88    max_chance: i32,
89    encounter_details: Vec<Encounter>,
90}
91
92#[pokeapi_struct]
93struct VersionGameIndex {
94    game_index: i32,
95    version: NamedAPIResource<Version>,
96}
97
98#[pokeapi_struct]
99struct VersionGroupFlavorText {
100    text: String,
101    language: NamedAPIResource<Language>,
102    version_group: NamedAPIResource<VersionGroup>,
103}