}
// FIXME(#2743)
ast::ExprKind::ObsoleteInPlace(..) => unimplemented!(),
- // FIXME(topecongiro) Format async block.
- ast::ExprKind::Async(..) => None,
+ ast::ExprKind::Async(capture_by, _node_id, ref block) => {
+ let mover = if capture_by == ast::CaptureBy::Value {
+ "move "
+ } else {
+ ""
+ };
+ if let rw @ Some(_) = rewrite_single_line_block(
+ context,
+ format!("{}{}", "async ", mover).as_str(),
+ block,
+ Some(&expr.attrs),
+ None,
+ shape,
+ ) {
+ rw
+ } else {
+ // 6 = `async `
+ let budget = shape.width.saturating_sub(6);
+ Some(format!(
+ "{}{}{}",
+ "async ",
+ mover,
+ rewrite_block(
+ block,
+ Some(&expr.attrs),
+ None,
+ context,
+ Shape::legacy(budget, shape.indent)
+ )?
+ ))
+ }
+ }
};
expr_rw
new_indent.to_string(context.config),
line.trim_left()
)
- })
- .collect::<Vec<_>>()
+ }).collect::<Vec<_>>()
.join("\n")
.trim_left(),
);
if !attrs_str.is_empty() {
attrs_str.push_str(&shape.indent.to_string_with_newline(context.config));
};
- let name = &field.ident.name.to_string();
+ let name = context.snippet(field.ident.span);
if field.is_shorthand {
Some(attrs_str + &name)
} else {