Feature Request
struct_variant_align_threshold
Summary
For applicable, horizontally-formatted branches of an enum with struct variants, aligns them by adding padding space after each branch name, so all struct variants start at the same column (one space after the longest branch name). This is used in good combination with the stable option struct_variant_width.
When enabled, this is applied to all branches when their name is shorter than threshold, and adding the padding does not exceed max_width. The default value would be 0 to disable it, with any nonnegative integer as a possible value.
Motivation
A good example is an enum where many struct variants have the same or similar fields, allowing for much greater readability of the branch names. This is particularly common on enums that have many shared fields, and many, many variants. An example is the Instruction enum on uutils awk:
Original (snippet):
pub enum Instruction {
Record { dest: Reg, arg: Arg, ty: ArgTy },
Negation { dest: Reg, arg: Arg, ty: ArgTy },
ToInt { dest: Reg, arg: Arg, ty: ArgTy },
Negative { dest: Reg, arg: Arg, ty: ArgTy },
...
Matches { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
MatchesNot { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
Add { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
Subtract { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
...
}
Formatted (new):
pub enum Instruction {
Record { dest: Reg, arg: Arg, ty: ArgTy },
Negation { dest: Reg, arg: Arg, ty: ArgTy },
ToInt { dest: Reg, arg: Arg, ty: ArgTy },
Negative { dest: Reg, arg: Arg, ty: ArgTy },
...
Matches { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
MatchesNot { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
Add { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
Subtract { dest: Reg, lhs: Arg, rhs: Arg, tyr: ArgTy, tyl: ArgTy },
...
}
Note: I know this particular case can be solved using a newtype or an alias, but we have our reasons for it to be this way in the real codebase. Believe me, this enum was not born this way.
Related configuration options
struct_field_align_threshold, enum_discrim_align_threshold
Feature Request
struct_variant_align_thresholdSummary
For applicable, horizontally-formatted branches of an enum with struct variants, aligns them by adding padding space after each branch name, so all struct variants start at the same column (one space after the longest branch name). This is used in good combination with the stable option
struct_variant_width.When enabled, this is applied to all branches when their name is shorter than
threshold, and adding the padding does not exceedmax_width. The default value would be0to disable it, with any nonnegative integer as a possible value.Motivation
A good example is an enum where many struct variants have the same or similar fields, allowing for much greater readability of the branch names. This is particularly common on enums that have many shared fields, and many, many variants. An example is the
Instructionenum on uutils awk:Original (snippet):
Formatted (new):
Note: I know this particular case can be solved using a newtype or an alias, but we have our reasons for it to be this way in the real codebase. Believe me, this enum was not born this way.
Related configuration options
struct_field_align_threshold,enum_discrim_align_threshold