match variant.field_list() {
Some(ast::FieldList::RecordFieldList(list)) => {
- let mut pats = vec![];
-
// => f.debug_struct(name)
let target = make::expr_path(make::ext::ident_path("f"));
let method = make::name_ref("debug_struct");
let args = make::arg_list(Some(make::expr_literal(&struct_name).into()));
let mut expr = make::expr_method_call(target, method, args);
+ let mut pats = vec![];
for field in list.fields() {
- let name = field.name()?;
+ let field_name = field.name()?;
// create a field pattern for use in `MyStruct { fields.. }`
- let field_name = field.name()?;
let pat = make::ident_pat(false, false, field_name.clone());
pats.push(pat.into());
// => <expr>.field("field_name", field)
let method_name = make::name_ref("field");
- let field_name = make::expr_literal(&(format!("\"{}\"", name))).into();
- let field_path = &format!("{}", name);
- let field_path = make::expr_path(make::ext::ident_path(field_path));
- let args = make::arg_list(vec![field_name, field_path]);
+ let name = make::expr_literal(&(format!("\"{}\"", field_name))).into();
+ let path = &format!("{}", field_name);
+ let path = make::expr_path(make::ext::ident_path(path));
+ let args = make::arg_list(vec![name, path]);
expr = make::expr_method_call(expr, method_name, args);
}
arms.push(make::match_arm(Some(pat.into()), None, expr));
}
Some(ast::FieldList::TupleFieldList(list)) => {
- let mut pats = vec![];
-
// => f.debug_tuple(name)
let target = make::expr_path(make::ext::ident_path("f"));
let method = make::name_ref("debug_tuple");
let args = make::arg_list(Some(make::expr_literal(&struct_name).into()));
let mut expr = make::expr_method_call(target, method, args);
+ let mut pats = vec![];
for (i, _) in list.fields().enumerate() {
let name = format!("arg{}", i);
}
None => {
let fmt_string = make::expr_literal(&(format!("\"{}\"", name))).into();
- let args = make::arg_list(vec![target, fmt_string]);
+ let args = make::arg_list([target, fmt_string]);
let macro_name = make::expr_path(make::ext::ident_path("write"));
let macro_call = make::expr_macro_call(macro_name, args);
let f_path = make::expr_path(make::ext::ident_path("self"));
let f_path = make::expr_ref(f_path, false);
let f_path = make::expr_field(f_path, &format!("{}", name)).into();
- let args = make::arg_list(vec![f_name, f_path]);
+ let args = make::arg_list([f_name, f_path]);
expr = make::expr_method_call(expr, make::name_ref("field"), args);
}
expr