diff options
| author | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-07-27 10:50:06 +1000 |
|---|---|---|
| committer | Nicholas Nethercote <n.nethercote@gmail.com> | 2023-07-27 11:58:42 +1000 |
| commit | 853f453d576ab18e2282b2d8c64cd7e37dd30382 (patch) | |
| tree | 021fda6bceb1179e9c09231f4257ba13a23e802c | |
| parent | 55a732461dcd104311b24cc048dcef2ed0c9d57c (diff) | |
| download | rust-853f453d576ab18e2282b2d8c64cd7e37dd30382.tar.gz rust-853f453d576ab18e2282b2d8c64cd7e37dd30382.zip | |
Avoid some token cloning in `filter_tokens_from_list`.
Now the cloning only happens on some paths, instead of all paths.
| -rw-r--r-- | src/librustdoc/clean/mod.rs | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index d14953f1bb7..bf6b1184639 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -2347,19 +2347,19 @@ fn get_all_import_attributes<'hir>( } fn filter_tokens_from_list( - args_tokens: TokenStream, + args_tokens: &TokenStream, should_retain: impl Fn(&TokenTree) -> bool, ) -> Vec<TokenTree> { let mut tokens = Vec::with_capacity(args_tokens.len()); let mut skip_next_comma = false; - for token in args_tokens.into_trees() { + for token in args_tokens.trees() { match token { TokenTree::Token(Token { kind: TokenKind::Comma, .. }, _) if skip_next_comma => { skip_next_comma = false; } - token if should_retain(&token) => { + token if should_retain(token) => { skip_next_comma = false; - tokens.push(token); + tokens.push(token.clone()); } _ => { skip_next_comma = true; @@ -2417,7 +2417,7 @@ fn add_without_unwanted_attributes<'hir>( match normal.item.args { ast::AttrArgs::Delimited(ref mut args) => { let tokens = - filter_tokens_from_list(args.tokens.clone(), |token| { + filter_tokens_from_list(&args.tokens, |token| { !matches!( token, TokenTree::Token( |
