pub fn remove_to<'s>(s: &'s str, c: char) -> &'s str { match s.rfind(c) { Some(pos) => &s[(pos + 1)..], None => s, } } pub fn remove_suffix<'s>(s: &'s str, suffix: &str) -> &'s str { if !s.ends_with(suffix) { s } else { &s[..(s.len() - suffix.len())] } } #[cfg(test)] mod test { use super::remove_suffix; use super::remove_to; #[test] fn test_remove_to() { assert_eq!("aaa", remove_to("aaa", '.')); assert_eq!("bbb", remove_to("aaa.bbb", '.')); assert_eq!("ccc", remove_to("aaa.bbb.ccc", '.')); } #[test] fn test_remove_suffix() { assert_eq!("bbb", remove_suffix("bbbaaa", "aaa")); assert_eq!("aaa", remove_suffix("aaa", "bbb")); } }