Skip to content

Commit 5f480fd

Browse files
committed
Improve debug str generator
Generates more optimized code per https://rust-lang.github.io/rust-clippy/master/index.html#format_collect
1 parent 061cc5e commit 5f480fd

File tree

4 files changed

+44
-25
lines changed

4 files changed

+44
-25
lines changed

bindgen-tests/tests/expectations/tests/derive-bitfield-method-same-name.rs

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/derive-debug-bitfield.rs

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen-tests/tests/expectations/tests/derive-debug-function-pointer.rs

Lines changed: 11 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bindgen/codegen/impl_debug.rs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -191,13 +191,17 @@ impl<'a> ImplDebug<'a> for Item {
191191
// Let's implement our own print function
192192
Some((
193193
format!("{name}: [{{}}]"),
194-
vec![quote! {
195-
self.#name_ident
196-
.iter()
197-
.enumerate()
198-
.map(|(i, v)| format!("{}{:?}", if i > 0 { ", " } else { "" }, v))
199-
.collect::<String>()
200-
}],
194+
vec![quote! {{
195+
let mut output = String::new();
196+
let mut iter = self.#name_ident.iter();
197+
if let Some(value) = iter.next() {
198+
let _ = write!(output, "{value:?}");
199+
for value in iter {
200+
let _ = write!(output, ", {value:?}");
201+
}
202+
}
203+
output
204+
}}],
201205
))
202206
}
203207
}

0 commit comments

Comments
 (0)