Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/ide_completion/src/render/compound.rs56
1 files changed, 24 insertions, 32 deletions
diff --git a/crates/ide_completion/src/render/compound.rs b/crates/ide_completion/src/render/compound.rs
index a1a199c6e2..c7f3bd1f79 100644
--- a/crates/ide_completion/src/render/compound.rs
+++ b/crates/ide_completion/src/render/compound.rs
@@ -22,24 +22,21 @@ pub(crate) fn render_record(
fields: &[hir::Field],
name: Option<&str>,
) -> RenderedCompound {
- let fields = fields.iter();
+ let completions = fields.iter().enumerate().format_with(", ", |(idx, field), f| {
+ if snippet_cap.is_some() {
+ f(&format_args!("{}: ${{{}:()}}", field.name(db), idx + 1))
+ } else {
+ f(&format_args!("{}: ()", field.name(db)))
+ }
+ });
+
+ let types = fields.iter().format_with(", ", |field, f| {
+ f(&format_args!("{}: {}", field.name(db), field.ty(db).display(db)))
+ });
- let (completions, types): (Vec<_>, Vec<_>) = fields
- .enumerate()
- .map(|(idx, field)| {
- (
- if snippet_cap.is_some() {
- format!("{}: ${{{}:()}}", field.name(db), idx + 1)
- } else {
- format!("{}: ()", field.name(db))
- },
- format!("{}: {}", field.name(db), field.ty(db).display(db)),
- )
- })
- .unzip();
RenderedCompound {
- literal: format!("{} {{ {} }}", name.unwrap_or(""), completions.iter().format(", ")),
- detail: format!("{} {{ {} }}", name.unwrap_or(""), types.iter().format(", ")),
+ literal: format!("{} {{ {} }}", name.unwrap_or(""), completions),
+ detail: format!("{} {{ {} }}", name.unwrap_or(""), types),
}
}
@@ -51,24 +48,19 @@ pub(crate) fn render_tuple(
fields: &[hir::Field],
name: Option<&str>,
) -> RenderedCompound {
- let fields = fields.iter();
+ let completions = fields.iter().enumerate().format_with(", ", |(idx, _), f| {
+ if snippet_cap.is_some() {
+ f(&format_args!("${{{}:()}}", idx + 1))
+ } else {
+ f(&format_args!("()"))
+ }
+ });
+
+ let types = fields.iter().format_with(", ", |field, f| f(&field.ty(db).display(db)));
- let (completions, types): (Vec<_>, Vec<_>) = fields
- .enumerate()
- .map(|(idx, field)| {
- (
- if snippet_cap.is_some() {
- format!("${{{}:()}}", (idx + 1).to_string())
- } else {
- "()".to_string()
- },
- field.ty(db).display(db).to_string(),
- )
- })
- .unzip();
RenderedCompound {
- literal: format!("{}({})", name.unwrap_or(""), completions.iter().format(", ")),
- detail: format!("{}({})", name.unwrap_or(""), types.iter().format(", ")),
+ literal: format!("{}({})", name.unwrap_or(""), completions),
+ detail: format!("{}({})", name.unwrap_or(""), types),
}
}