Open
Description
Take the following Rust code:
fn main() {
println!("Hello, world!");
}
macro_rules! trigger {
(KeyBinding, $key:literal, $location:expr) => {{ BindingKey::Keycode { key: Key::Character($key.into()), location: $location } }};
(KeyBinding, $key:literal,) => {{ BindingKey::Keycode { key: Key::Character($key.into()), location: KeyLocation::Any } }};
(KeyBinding, $key:ident, $location:expr) => {{ BindingKey::Keycode { key: Key::Named(NamedKey::$key), location: $location } }};
(KeyBinding, $key:ident,) => {{ BindingKey::Keycode { key: Key::Named(NamedKey::$key), location: KeyLocation::Any } }};
(MouseBinding, $base:ident::$button:ident,) => {{ $base::$button }};
}
enum Key {
Named(NamedKey),
Character(char),
}
enum NamedKey {}
enum KeyLocation {
Any,
}
When formatted with the default formatter, this works properly and fixes the overly long lines in the macro.
However when then switching to the following rustfmt.toml
:
use_small_heuristics = "Max"
max_width = 100 # Optional, just for clarity
Suddenly the macro match arms are all reformatted to a single line, even though use_small_heuristics = "Max"
is supposed to max out at max_width
and not just allow infinitely long lines.
I've had this break one of my macros during the 2024 edition migration, so I believe there might be a regression somewhere?