diff options
| author | ljedrz <ljedrz@gmail.com> | 2018-11-05 15:30:04 +0100 |
|---|---|---|
| committer | ljedrz <ljedrz@gmail.com> | 2018-11-13 08:42:48 +0100 |
| commit | 0c085299344d9af4e9bfd892a15d746b116ebe00 (patch) | |
| tree | 8d3fe36c6f9c7b130a1414cdc0113f60039e125c /src/libsyntax_ext | |
| parent | c4371c854f5c7f734563f61a666e0ae230024c17 (diff) | |
| download | rust-0c085299344d9af4e9bfd892a15d746b116ebe00.tar.gz rust-0c085299344d9af4e9bfd892a15d746b116ebe00.zip | |
A few tweaks to iterations/collecting
Diffstat (limited to 'src/libsyntax_ext')
| -rw-r--r-- | src/libsyntax_ext/deriving/generic/mod.rs | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/libsyntax_ext/deriving/generic/mod.rs b/src/libsyntax_ext/deriving/generic/mod.rs index dd90ef06c39..bfdb53a9d9e 100644 --- a/src/libsyntax_ext/deriving/generic/mod.rs +++ b/src/libsyntax_ext/deriving/generic/mod.rs @@ -1200,16 +1200,14 @@ impl<'a> MethodDef<'a> { let sp = trait_.span; let variants = &enum_def.variants; - let self_arg_names = self_args.iter() - .enumerate() - .map(|(arg_count, _self_arg)| { - if arg_count == 0 { - "__self".to_string() - } else { + let self_arg_names = iter::once("__self".to_string()).chain( + self_args.iter() + .enumerate() + .skip(1) + .map(|(arg_count, _self_arg)| format!("__arg_{}", arg_count) - } - }) - .collect::<Vec<String>>(); + ) + ).collect::<Vec<String>>(); let self_arg_idents = self_arg_names.iter() .map(|name| cx.ident_of(&name[..])) @@ -1218,7 +1216,7 @@ impl<'a> MethodDef<'a> { // The `vi_idents` will be bound, solely in the catch-all, to // a series of let statements mapping each self_arg to an int // value corresponding to its discriminant. - let vi_idents: Vec<ast::Ident> = self_arg_names.iter() + let vi_idents = self_arg_names.iter() .map(|name| { let vi_suffix = format!("{}_vi", &name[..]); cx.ident_of(&vi_suffix[..]).gensym() |
