1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//! Geospatial structs and data structures

pub mod prelude {
    pub use crate::geo::geospatial_whole_island::*;
}

pub mod geospatial_whole_island {
    use std::default;

    use serde::{Deserialize, Serialize};

    #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
    pub struct GeospatialWholeIslandRawResp {
        pub value: Vec<GeospatialLink>,
    }

    #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)]
    #[serde(rename_all = "PascalCase")]
    pub struct GeospatialLink {
        pub link: String,
    }

    #[derive(Debug, Clone, PartialEq, Deserialize, Serialize, Default)]
    pub enum GeospatialLayerId {
        ArrowMarking,
        Bollard,
        BusStopLocation,
        ControlBox,
        ConvexMirror,
        CoveredLinkWay,
        CyclingPath,
        CyclingPathConstruction,
        DetectorLoop,
        EmergencyGate,
        ERPGantry,
        Footpath,
        GuardRail,
        KerbLine,
        LampPost,
        LaneMarking,
        ParkingStandardsZone,
        PassengerPickupBay,
        #[serde(alias = "PedestrainOverheadbridge_UnderPass")]
        PedestrianOverheadBridgeOrUnderPass,
        RailConstruction,
        Railing,
        RetainingWall,
        RoadConstruction,
        RoadCrossing,
        RoadHump,
        RoadSectionLine,
        SchoolZone,
        SilverZone,
        SpeedRegulatingStrip,
        StreetPaint,
        TaxiStand,
        TrafficLight,
        TrafficSign,
        TrainStation,
        TrainStationExit,
        #[serde(alias = "VehicularBridge_Flyover_Underpass")]
        VehicularBridgeOrFlyoverOrUnderpass,
        WordMarking,

        #[default]
        #[serde(other)]
        Unknown
    }

    impl From<GeospatialWholeIslandRawResp> for Vec<String> {
        fn from(data: GeospatialWholeIslandRawResp) -> Self {
            data.value.into_iter().map(|v| v.link).collect()
        }
    }
}