Skip to content

Regex::replace* methods taking &str rather than Cow<str> harms efficiency #676

Closed
@chris-morgan

Description

@chris-morgan

The Regex::replace* methods return a Cow<str> for efficiency, but can't take a Cow<str>. This harms efficiency in cases like multiple sequential regular expressions:

|text: &str /* or Cow<str> even */| -> Cow<str> {
    let text = regex1.replace(text, replacement);
    let text = regex2.replace(text, replacement);
    text
}

Instead you’re stuck with this which necessarily wastes an allocation:

|text: &str| -> String {
    let text = regex1.replace(text, replacement);
    let text = regex2.replace(&text, replacement);
    text.into_owned()
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions