use regex::Regex; const ACTION_REGEX: &str = r"/{0,1}(?P\w*)/(?P.+)"; pub enum Router { NotFound, Index, Post { page: String }, } impl Router { pub fn new(path: &str) -> Router { let re = Regex::new(ACTION_REGEX).unwrap(); let caps = re.captures(path); let action = match caps { Some(ref value) => &value["action"], None => "index", }; match action { "posts" => Router::Post { page: caps.unwrap()["id"].to_string(), }, "index" => Router::Index, _ => Router::NotFound, } } }