diff options
| author | Lukas Wirth <lukastw97@gmail.com> | 2025-03-16 14:56:36 +0100 |
|---|---|---|
| committer | Lukas Wirth <lukastw97@gmail.com> | 2025-03-16 15:19:25 +0100 |
| commit | a51070ba88bb846fae253bf905a98654804dc62c (patch) | |
| tree | b570af1d443d3f3c5084a5240aeb668b65323a24 | |
| parent | 98f346f46a5405cdd96e7fb497c8623588a69401 (diff) | |
| download | rust-a51070ba88bb846fae253bf905a98654804dc62c.tar.gz rust-a51070ba88bb846fae253bf905a98654804dc62c.zip | |
minor: Remove unnecessary allocations in `function::params_display`
| -rw-r--r-- | src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs b/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs index e013fe4cb7f..2fe517fa8cd 100644 --- a/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs +++ b/src/tools/rust-analyzer/crates/ide-completion/src/render/function.rs @@ -320,7 +320,9 @@ fn detail(ctx: &CompletionContext<'_>, func: hir::Function) -> String { format_to!(detail, "unsafe "); } - format_to!(detail, "fn({})", params_display(ctx, func)); + detail.push_str("fn("); + params_display(ctx, &mut detail, func); + detail.push(')'); if !ret_ty.is_unit() { format_to!(detail, " -> {}", ret_ty.display(ctx.db, ctx.display_target)); } @@ -342,31 +344,29 @@ fn detail_full(ctx: &CompletionContext<'_>, func: hir::Function) -> String { detail } -fn params_display(ctx: &CompletionContext<'_>, func: hir::Function) -> String { - let mut params = if let Some(self_param) = func.self_param(ctx.db) { +fn params_display(ctx: &CompletionContext<'_>, detail: &mut String, func: hir::Function) { + if let Some(self_param) = func.self_param(ctx.db) { + format_to!(detail, "{}", self_param.display(ctx.db, ctx.display_target)); let assoc_fn_params = func.assoc_fn_params(ctx.db); let params = assoc_fn_params .iter() .skip(1) // skip the self param because we are manually handling that .map(|p| p.ty().display(ctx.db, ctx.display_target)); - format!( - "{}{}", - self_param.display(ctx.db, ctx.display_target), - params.format_with("", |display, f| { - f(&", ")?; - f(&display) - }) - ) + for param in params { + format_to!(detail, ", {}", param); + } } else { let assoc_fn_params = func.assoc_fn_params(ctx.db); - assoc_fn_params.iter().map(|p| p.ty().display(ctx.db, ctx.display_target)).join(", ") - }; + format_to!( + detail, + "{}", + assoc_fn_params.iter().map(|p| p.ty().display(ctx.db, ctx.display_target)).format(", ") + ); + } if func.is_varargs(ctx.db) { - params.push_str(", ..."); + detail.push_str(", ..."); } - - params } fn params( |
