osmgraphing 1.1.1

Playing around with graphs created via parsing OpenStreetMap data
Documentation
use crate::configs::SimpleId;
use serde::Deserialize;

#[derive(Clone, Debug)]
pub struct Config {
    pub ids: Vec<Option<SimpleId>>,
}

impl From<ProtoConfig> for Config {
    fn from(proto_cfg: ProtoConfig) -> Config {
        Config { ids: proto_cfg.ids }
    }
}

#[derive(Debug)]
pub struct ProtoConfig {
    pub ids: Vec<Option<SimpleId>>,
}

impl From<RawConfig> for ProtoConfig {
    fn from(raw_cfg: RawConfig) -> ProtoConfig {
        ProtoConfig {
            ids: raw_cfg
                .0
                .into_iter()
                .map(|category| match category {
                    RawCategory::Id(id) => Some(id),
                    RawCategory::Ignored => None,
                })
                .collect(),
        }
    }
}

#[derive(Debug, Deserialize)]
pub struct RawConfig(pub Vec<RawCategory>);

#[derive(Debug, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum RawCategory {
    Id(SimpleId),
    Ignored,
}