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 next_2<T, I: Iterator<Item=T>> (mut iter: I) -> (T,T) {
(iter.next().unwrap(), iter.next().unwrap())
}
pub fn split(txt: &str, delim: char) -> (&str,&str) {
if let Some(idx) = txt.find(delim) {
(&txt[0..idx], &txt[idx+1..])
} else {
(txt,"")
}
}