1pub type Tags = Vec<(String,String)>;
2
3#[derive(Debug,Clone,PartialEq)]
4pub enum Element {
5 Node(Node),
6 Way(Way),
7 Relation(Relation),
8}
9
10#[derive(Debug,Clone,PartialEq)]
11pub struct Info {
12 pub version: i32,
13 pub timestamp: Option<i64>,
14 pub changeset: Option<i64>,
15 pub uid: Option<i32>,
16 pub user: Option<String>,
17 pub visible: Option<bool>,
18}
19
20#[derive(Debug,Clone,PartialEq)]
21pub struct Node {
22 pub id: i64,
23 pub tags: Tags,
24 pub info: Option<Info>,
25 pub lon: f64,
26 pub lat: f64,
27}
28
29#[derive(Debug,Clone,PartialEq)]
30pub struct Way {
31 pub id: i64,
32 pub tags: Tags,
33 pub info: Option<Info>,
34 pub refs: Vec<i64>,
35}
36
37#[derive(Debug,Clone,PartialEq)]
38pub struct Relation {
39 pub id: i64,
40 pub tags: Tags,
41 pub info: Option<Info>,
42 pub members: Vec<Member>,
43}
44
45#[derive(Debug,Clone,PartialEq)]
46pub struct Member {
47 pub id: i64,
48 pub role: String,
49 pub member_type: MemberType,
50}
51
52#[derive(Debug,Clone,PartialEq)]
53pub enum MemberType {
54 Node,
55 Way,
56 Relation,
57}