use {
super::regex,
std::borrow::Cow,
};
#[must_use]
pub fn remove_match<'s>(
rex: ®ex::Regex,
text: &'s str,
) -> Cow<'s, str> {
let Some(m) = rex.find(text) else {
return Cow::Borrowed(text);
};
if m.start() == 0 {
return Cow::Borrowed(&text[m.end()..]);
}
if m.end() == text.len() {
return Cow::Borrowed(&text[..m.start()]);
}
let mut s = String::with_capacity(text.len() - m.len());
s.push_str(&text[..m.start()]);
s.push_str(&text[m.end()..]);
Cow::Owned(s)
}
#[must_use]
pub fn bytes_remove_match<'s>(
rex: ®ex::bytes::Regex,
text: &'s [u8],
) -> Cow<'s, [u8]> {
let Some(m) = rex.find(text) else {
return Cow::Borrowed(text);
};
if m.start() == 0 {
return Cow::Borrowed(&text[m.end()..]);
}
if m.end() == text.len() {
return Cow::Borrowed(&text[..m.start()]);
}
let mut s = Vec::with_capacity(text.len() - m.len());
s.extend_from_slice(&text[..m.start()]);
s.extend_from_slice(&text[m.end()..]);
Cow::Owned(s)
}