name old2 ns/iter new2 ns/iter diff ns/iter diff % speedup
fmt::write_str_macro1 12,295 12,308 13 0.11% x 1.00
fmt::write_str_macro2 24,079 21,451 -2,628 -10.91% x 1.12
fmt::write_str_macro_debug 238,363 230,807 -7,556 -3.17% x 1.03
fmt::write_str_ref 6,203 6,064 -139 -2.24% x 1.02
fmt::write_str_value 6,225 6,075 -150 -2.41% x 1.02
fmt::write_vec_macro1 17,144 17,121 -23 -0.13% x 1.00
fmt::write_vec_macro2 29,845 26,703 -3,142 -10.53% x 1.12
fmt::write_vec_macro_debug 248,840 242,117 -6,723 -2.70% x 1.03
fmt::write_vec_ref 5,954 6,438 484 8.13% x 0.92
fmt::write_vec_value 5,959 6,439 480 8.06% x 0.93
ArgumentNamed(&'a str),
}
+impl Position<'_> {
+ pub fn index(&self) -> Option<usize> {
+ match self {
+ ArgumentIs(i) | ArgumentImplicitlyIs(i) => Some(*i),
+ _ => None,
+ }
+ }
+}
+
/// Enum of alignments which are supported.
#[derive(Copy, Clone, PartialEq)]
pub enum Alignment {
let fill = arg.format.fill.unwrap_or(' ');
- if *arg != simple_arg || fill != ' ' {
+ let pos_simple =
+ arg.position.index() == simple_arg.position.index();
+
+ if !pos_simple || arg.format != simple_arg.format || fill != ' ' {
self.all_pieces_simple = false;
}