1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
use crate::mime::Mime; pub trait MimeExt { fn pure_type(&self) -> Self; } impl MimeExt for Mime { fn pure_type(&self) -> Self { let mut ret = format!("{}/{}", self.type_(), self.subtype()); match self.suffix() { Some(suffix) => { ret += "+"; ret += suffix.as_str(); } None => (), } ret.parse().unwrap() } } #[cfg(test)] mod test { use super::{Mime, MimeExt}; use std::str::FromStr; #[test] fn test_pure_type() { assert_eq!( &Mime::from_str("application/json; charset=utf-8; FOO=BAR") .unwrap() .pure_type(), &"application/json" ); assert_eq!( &Mime::from_str("image/svg+xml; FOO=BAR") .unwrap() .pure_type(), &"image/svg+xml" ); } }