use items::{span_hi_for_arg, span_lo_for_arg};
use lists::{definitive_tactic, itemize_list, shape_for_tactic, struct_lit_formatting,
struct_lit_shape, struct_lit_tactic, write_list, DefinitiveListTactic, ListFormatting,
- ListItem, ListTactic, SeparatorTactic};
+ ListItem, ListTactic, Separator, SeparatorTactic};
use macros::{rewrite_macro, MacroPosition};
use patterns::{can_be_overflowed_pat, TuplePatField};
use rewrite::{Rewrite, RewriteContext};
Some(width) => {
let tactic =
ListTactic::LimitedHorizontalVertical(context.config.array_width());
- definitive_tactic(&items, tactic, 2, width)
+ definitive_tactic(&items, tactic, Separator::Comma, width)
}
None => DefinitiveListTactic::Vertical,
}
definitive_tactic(
&items,
ListTactic::LimitedHorizontalVertical(context.config.array_width()),
- 2,
+ Separator::Comma,
nested_shape.width,
)
} else {
let tactic = definitive_tactic(
&item_vec,
ListTactic::HorizontalVertical,
- 2,
+ Separator::Comma,
horizontal_budget,
);
let arg_shape = match tactic {
);
let items: Vec<_> = pat_strs.into_iter().map(ListItem::from_str).collect();
- let tactic = definitive_tactic(&items, ListTactic::HorizontalVertical, 3, pat_shape.width);
+ let tactic = definitive_tactic(
+ &items,
+ ListTactic::HorizontalVertical,
+ Separator::VerticalBar,
+ pat_shape.width,
+ );
let fmt = ListFormatting {
tactic: tactic,
separator: " |",
let tactic = definitive_tactic(
&*item_vec,
ListTactic::LimitedHorizontalVertical(args_max_width),
- 2,
+ Separator::Comma,
one_line_width,
);
let tactic = definitive_tactic(
&item_vec,
ListTactic::HorizontalVertical,
- 2,
+ Separator::Comma,
nested_shape.width,
);
let fmt = ListFormatting {
use codemap::SpanUtils;
use config::IndentStyle;
use lists::{definitive_tactic, itemize_list, write_list, DefinitiveListTactic, ListFormatting,
- ListItem, SeparatorTactic};
+ ListItem, Separator, SeparatorTactic};
use rewrite::{Rewrite, RewriteContext};
use types::{rewrite_path, PathContext};
use utils;
let tactic = definitive_tactic(
&items[first_index..],
context.config.imports_layout(),
- 2,
+ Separator::Comma,
remaining_width,
);
use expr::{format_expr, is_empty_block, is_simple_block_stmt, rewrite_assign_rhs,
rewrite_call_inner, ExprType};
use lists::{definitive_tactic, itemize_list, write_list, DefinitiveListTactic, ListFormatting,
- ListItem, ListTactic, SeparatorTactic};
+ ListItem, ListTactic, Separator, SeparatorTactic};
use rewrite::{Rewrite, RewriteContext};
use types::join_bounds;
use utils::{colon_spaces, contains_skip, end_typaram, format_defaultness, format_mutability,
let tactic = definitive_tactic(
&arg_items,
context.config.fn_args_density().to_list_tactic(),
- 2,
+ Separator::Comma,
one_line_budget,
);
let budget = match tactic {
let tactic = definitive_tactic(
&item_vec,
ListTactic::HorizontalVertical,
- 2,
+ Separator::Comma,
one_line_budget,
);
let fmt = ListFormatting {
let item_vec = items.collect::<Vec<_>>();
// FIXME: we don't need to collect here if the where_layout isn't
// HorizontalVertical.
- let tactic = definitive_tactic(&item_vec, context.config.where_layout(), 2, budget);
+ let tactic = definitive_tactic(
+ &item_vec,
+ context.config.where_layout(),
+ Separator::Comma,
+ budget,
+ );
let mut comma_tactic = context.config.trailing_comma();
// Kind of a hack because we don't usually have trailing commas in where clauses.
}
}
+/// The type of separator for lists.
+#[derive(Eq, PartialEq, Debug)]
+pub enum Separator {
+ Comma,
+ VerticalBar,
+}
+
+impl Separator {
+ pub fn len(&self) -> usize {
+ match *self {
+ // 2 = `, `
+ Separator::Comma => 2,
+ // 3 = ` | `
+ Separator::VerticalBar => 3,
+ }
+ }
+}
+
pub fn definitive_tactic<I, T>(
items: I,
tactic: ListTactic,
- sep_len: usize,
+ sep: Separator,
width: usize,
) -> DefinitiveListTactic
where
};
let (sep_count, total_width) = calculate_width(items.clone());
- let total_sep_len = sep_len * sep_count.checked_sub(1).unwrap_or(0);
+ let total_sep_len = sep.len() * sep_count.checked_sub(1).unwrap_or(0);
let real_total = total_width + total_sep_len;
if real_total <= limit && !pre_line_comments &&
(IndentStyle::Visual, 1) => ListTactic::HorizontalVertical,
_ => context.config.struct_lit_multiline_style().to_list_tactic(),
};
- definitive_tactic(items, prelim_tactic, 2, h_shape.width)
+ definitive_tactic(items, prelim_tactic, Separator::Comma, h_shape.width)
} else {
DefinitiveListTactic::Vertical
}
use config::{IndentStyle, Style, TypeDensity};
use expr::{rewrite_pair, rewrite_tuple, rewrite_unary_prefix, wrap_args_with_parens};
use items::{format_generics_item_list, generics_shape_from_config};
-use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, ListTactic,
+use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, ListTactic, Separator,
SeparatorTactic};
use rewrite::{Rewrite, RewriteContext};
use utils::{colon_spaces, extra_offset, format_mutability, last_line_width, mk_sp, wrap_str};
let item_vec: Vec<_> = items.collect();
- let tactic = definitive_tactic(&*item_vec, ListTactic::HorizontalVertical, 2, budget);
+ let tactic = definitive_tactic(
+ &*item_vec,
+ ListTactic::HorizontalVertical,
+ Separator::Comma,
+ budget,
+ );
let fmt = ListFormatting {
tactic: tactic,
use comment::contains_comment;
use expr::rewrite_field;
use items::{rewrite_struct_field, rewrite_struct_field_prefix};
-use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, ListTactic};
+use lists::{definitive_tactic, itemize_list, write_list, ListFormatting, ListTactic, Separator};
use rewrite::{Rewrite, RewriteContext};
use utils::{contains_skip, mk_sp};
span.hi,
).collect::<Vec<_>>();
- let tactic = definitive_tactic(&items, ListTactic::HorizontalVertical, 2, one_line_width);
+ let tactic = definitive_tactic(
+ &items,
+ ListTactic::HorizontalVertical,
+ Separator::Comma,
+ one_line_width,
+ );
let fmt = ListFormatting {
tactic: tactic,