pub fn after<'a>(s: &'a str, target: &str) -> Option<&'a str> {
if let Some(idx) = s.find(target) {
Some(&s[(idx + target.len())..])
} else {
None
}
}
pub fn word_after(txt: &str, target: &str) -> Option<String> {
if let Some(txt) = after(txt, target) {
let start = txt.find(|c: char| c.is_alphanumeric()).unwrap();
let end = txt.find(|c: char| c == ';' || c.is_whitespace()).unwrap();
Some((&txt[start..end]).to_string())
} else {
None
}
}
pub fn split(txt: &str, delim: char) -> (&str, &str) {
if let Some(idx) = txt.find(delim) {
(&txt[0..idx], &txt[idx + 1..])
} else {
(txt, "")
}
}