Rollup merge of #95909 - vacuus:theme-build-rule, r=GuillaumeGomez

rustdoc: Reduce allocations in a `theme` function

`str::replace` allocates a new `String`...

This could probably be made more efficient, but I think it'd have to be clunky imperative code to achieve that.
This commit is contained in:
Matthias Krüger 2022-04-12 08:46:58 +02:00 committed by GitHub
commit 2836143380
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -173,15 +173,17 @@ fn build_rule(v: &[u8], positions: &[usize]) -> String {
.map(|x| ::std::str::from_utf8(&v[x[0]..x[1]]).unwrap_or(""))
.collect::<String>()
.trim()
.replace('\n', " ")
.replace('/', "")
.replace('\t', " ")
.replace('{', "")
.replace('}', "")
.chars()
.filter_map(|c| match c {
'\n' | '\t' => Some(' '),
'/' | '{' | '}' => None,
c => Some(c),
})
.collect::<String>()
.split(' ')
.filter(|s| !s.is_empty())
.collect::<Vec<&str>>()
.join(" "),
.intersperse(" ")
.collect::<String>(),
)
.unwrap_or_else(|_| String::new())
}