Trait regex::bytes::Replacer

pub trait Replacer {    
    fn replace_append(
        &mut Self,
        caps: &Captures<'_>,
        dst: &mut Vec<u8>
    );
    
    fn no_expansion<'r>(&'r mut Self) -> Option<Cow<'r, [u8]>> { ... }
    
    fn by_ref<'r>(&'r mut Self) -> ReplacerRef<'r, Self> { ... }
}
Documentation

Replacer describes types that can be used to replace matches in a byte string.

In general, users of this crate shouldn’t need to implement this trait, since implementations are already provided for &[u8] along with other variants of bytes types and FnMut(&Captures) -> Vec<u8> (or any FnMut(&Captures) -> T where T: AsRef<[u8]>), which covers most use cases.

Required Methods

fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)

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.extend(&caps[0]).

Provided Methods

fn by_ref<'r>(&'r mut Self) -> ReplacerRef<'r, 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 regex::bytes::{Regex, Replacer};

fn replace_all_twice<R: Replacer>(
    re: Regex,
    src: &[u8],
    mut rep: R,
) -> Vec<u8> {
    let dst = re.replace_all(src, rep.by_ref());
    let dst = re.replace_all(&dst, rep.by_ref());
    dst.into_owned()
}
fn no_expansion<'r>(&'r mut Self) -> Option<Cow<'r, [u8]>>

Return a fixed unchanging replacement byte 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.

Implementations on Foreign Types

impl<'a> Replacer for &'a Cow<'a, [u8]>
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion(&mut Self) -> Option<Cow<'_, [u8]>>
impl<'a> Replacer for &'a Vec<u8>
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion(&mut Self) -> Option<Cow<'_, [u8]>>
impl<'a> Replacer for &'a [u8]
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion(&mut Self) -> Option<Cow<'_, [u8]>>
impl<'a> Replacer for Cow<'a, [u8]>
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion(&mut Self) -> Option<Cow<'_, [u8]>>
impl Replacer for Vec<u8>
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion(&mut Self) -> Option<Cow<'_, [u8]>>

Implementors

impl<F, T> Replacer for F
where
    F: FnMut(&Captures<'_>) -> T,
    T: AsRef<[u8]>,
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
impl<'t> Replacer for NoExpand<'t>
fn replace_append(
    &mut Self,
    _: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion(&mut Self) -> Option<Cow<'_, [u8]>>
impl<'a, R: Replacer + ?Sized + 'a> Replacer for ReplacerRef<'a, R>
fn replace_append(
    &mut Self,
    caps: &Captures<'_>,
    dst: &mut Vec<u8>
)
fn no_expansion<'r>(&'r mut Self) -> Option<Cow<'r, [u8]>>