pub trait Replacer {
// Required method
fn replace_append(&mut self, caps: &Captures<'_>, dst: &mut String);
// Provided methods
fn no_expansion(&mut self) -> Option<Cow<'_, str>> { ... }
fn by_ref(&mut self) -> ReplacerRef<'_, Self> { ... }
}Expand description
Replacer describes types that can be used to replace matches in a string.
In general, users of this crate shouldn’t need to implement this trait,
since implementations are already provided for &str along with other
variants of string types and FnMut(&Captures) -> String (or any
FnMut(&Captures) -> T where T: AsRef<str>), which covers most use cases.
Required Methods§
Sourcefn replace_append(&mut self, caps: &Captures<'_>, dst: &mut String)
fn replace_append(&mut self, caps: &Captures<'_>, dst: &mut String)
Appends text to dst to replace the current match.
The current match is represented by caps, which is guaranteed to
have a match at capture group 0.
For example, a no-op replacement would be
dst.push_str(caps.get(0).unwrap().as_str()).
Provided Methods§
Sourcefn no_expansion(&mut self) -> Option<Cow<'_, str>>
fn no_expansion(&mut self) -> Option<Cow<'_, str>>
Return a fixed unchanging replacement string.
When doing replacements, if access to Captures is not needed (e.g.,
the replacement byte string does not need $ expansion), then it can
be beneficial to avoid finding sub-captures.
In general, this is called once for every call to replacen.
Sourcefn by_ref(&mut self) -> ReplacerRef<'_, Self>
fn by_ref(&mut self) -> ReplacerRef<'_, Self>
Return a Replacer that borrows and wraps this Replacer.
This is useful when you want to take a generic Replacer (which might
not be cloneable) and use it without consuming it, so it can be used
more than once.
§Example
use fancy_regex::{Regex, Replacer};
fn replace_all_twice<R: Replacer>(
re: Regex,
src: &str,
mut rep: R,
) -> String {
let dst = re.replace_all(src, rep.by_ref());
let dst = re.replace_all(&dst, rep.by_ref());
dst.into_owned()
}Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.