Skip to content
Snippets Groups Projects
path.rs 500 B
Newer Older
Stephen D's avatar
Stephen D committed
use std::fmt::{Debug, Display};

#[derive(Eq, PartialEq, Hash, Debug)]
pub struct UrlPath {
    parts: Vec<String>,
}

impl UrlPath {
    pub fn new(s: &str) -> Self {
        let parts = s
            .split('/')
            .filter(|x| !x.is_empty())
            .map(|x| x.to_string())
            .collect();

        Self { parts }
    }
}

impl Display for UrlPath {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", self.parts.join("/"))
    }
}