in gazebo/src/ext/str.rs [155:164]
fn trim_end_match_opt<'a, P>(&'a self, pat: P) -> Option<&'a Self>
where
P: Pattern<'a, Searcher: ReverseSearcher<'a>>,
{
let mut matcher = pat.into_searcher(self);
match matcher.next_back() {
SearchStep::Match(n, _) => Some(&self[0..n]),
_ => None,
}
}