diff --git a/src/expr.rs b/src/expr.rs index d1303d95276..e7418562770 100644 --- a/src/expr.rs +++ b/src/expr.rs @@ -63,7 +63,7 @@ pub fn format_expr( let expr_rw = match expr.node { ast::ExprKind::Array(ref expr_vec) => rewrite_array( - expr_vec.iter().map(|e| &**e), + &ptr_vec_to_ref_vec(expr_vec), mk_sp(context.codemap.span_after(expr.span, "["), expr.span.hi()), context, shape, @@ -397,16 +397,13 @@ where )) } -pub fn rewrite_array<'a, I>( - expr_iter: I, +pub fn rewrite_array( + exprs: &[&T], span: Span, context: &RewriteContext, shape: Shape, trailing_comma: bool, -) -> Option -where - I: Iterator, -{ +) -> Option { let bracket_size = if context.config.spaces_within_parens_and_brackets() { 2 // "[ " } else { @@ -426,11 +423,11 @@ where let items = itemize_list( context.codemap, - expr_iter, + exprs.iter(), "]", ",", - |item| item.span.lo(), - |item| item.span.hi(), + |item| item.span().lo(), + |item| item.span().hi(), |item| item.rewrite(context, nested_shape), span.lo(), span.hi(), diff --git a/src/macros.rs b/src/macros.rs index 8c8b50b7ca3..6d115e155d0 100644 --- a/src/macros.rs +++ b/src/macros.rs @@ -255,24 +255,14 @@ pub fn rewrite_macro( trailing_comma = false; } // Convert `MacroArg` into `ast::Expr`, as `rewrite_array` only accepts the latter. - let expr_vec: Vec<_> = arg_vec - .iter() - .filter_map(|e| match *e { - MacroArg::Expr(ref e) => Some(e.clone()), - _ => None, - }) - .collect(); - if expr_vec.len() != arg_vec.len() { - return Some(context.snippet(mac.span)); - } let sp = mk_sp( context .codemap .span_after(mac.span, original_style.opener()), mac.span.hi() - BytePos(1), ); - let rewrite = - rewrite_array(expr_vec.iter(), sp, context, mac_shape, trailing_comma)?; + let arg_vec = &arg_vec.iter().map(|e| &*e).collect::>()[..]; + let rewrite = rewrite_array(arg_vec, sp, context, mac_shape, trailing_comma)?; Some(format!("{}{}", macro_name, rewrite)) }