use mime::Mime; use unix_path::Path; // Extremely manual; using `std::path` here would result in platform-dependent // behaviour when it's not appropriate (the URLs passed here always use `/` and // are parsed like URLs). Using `unix_path` might be an option, but it's not // clearly pub fn from_path

(path: P) -> Result where P: AsRef, { let path = path.as_ref(); let extension = path.extension().and_then(|ext| ext.to_str()); let mime = match extension { Some("css") => "text/css; charset=utf-8", Some("js") => "text/javascript; charset=utf-8", Some("json") => "application/json", Some("html") => "text/html; charset=utf-8", Some("png") => "image/png", _ => "application/octet-stream", }; let mime = mime.parse()?; Ok(mime) }