fix(deps): update rust crate strum to 0.26.0
This MR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| strum | dependencies | minor |
0.25.0 -> 0.26.0
|
Release Notes
Peternator7/strum (strum)
v0.26.3
-
#344: Hide
EnumTablebecause it's going to be deprecated in the next version. -
#357: Fixes an incompatiblity with
itertoolsby using the fully qualified name rather than the inherent method. -
#345: Allows unnamed tuple like variants to use their variants in
string interpolation.
#[strum(to_string = "Field 0: {0}, Field 1: {1})")]will now work for tuple variants
v0.26.2
-
#337: Fix missing generic impls for
EnumTryAs -
#334: Support prefix in
AsRefStr. Technically a breaking change, butprefixwas just added in0.26.0so it's a newer feature and it makes the feature more consisent in general.
v0.26.1
-
#325: use
coreinstead ofstdin VariantArray.
v0.26.0
Breaking Changes
- The
EnumVariantNamesmacro has been renamedVariantNames. The deprecation warning should steer you in the right direction for fixing the warning. - The Iterator struct generated by EnumIter now has new bounds on it. This shouldn't break code unless you manually added the implementation in your code.
-
Displaynow supports format strings using named fields in the enum variant. This should be a no-op for most code. However, if you were outputting a string like"Hello {field}", this will now be interpretted as a format string. - EnumDiscriminant now inherits the repr and discriminant values from your main enum. This makes the discriminant type closer to a mirror of the original and that's always the goal.
New features
-
The
VariantArraymacro has been added. This macro adds an associated constantVARIANTSto your enum. The constant is a&'static [Self]slice so that you can access all the variants of your enum. This only works on enums that only have unit variants.use strum::VariantArray; #[derive(Debug, VariantArray)] enum Color { Red, Blue, Green, } fn main() { println!("{:?}", Color::VARIANTS); // prints: ["Red", "Blue", "Green"] } -
The
EnumTablemacro has been experimentally added. This macro adds a new type that stores an item for each variant of the enum. This is useful for storing a value for each variant of an enum. This is an experimental feature because I'm not convinced the current api surface area is correct.use strum::EnumTable; #[derive(Copy, Clone, Debug, EnumTable)] enum Color { Red, Blue, Green, } fn main() { let mut counts = ColorTable::filled(0); for color in &[Color::Red, Color::Red, Color::Green]] { counts[color] += 1; } assert_eq!(counts[Color::Red], 2); assert_eq!(counts[Color::Blue], 0); assert_eq!(counts[Color::Green], 1); } -
Displayhas 2 new features:-
the
strum(prefix = "some_value")attribute on an enum now allows you to prepend a string onto every variant when you serialize it. -
Custom
to_stringandserializeattributes now support string interopolation on serialization.
-
MR's Merged
-
#322: avoid collisions on
std::fmt::Debug - #321: avoid conflicts with consecutive underscores.
- #314: add additional bounds to EnumIterator
- #311: add FusedIterator bounds to EnumIterator
-
#297: New macro, add
VariantArray - #296: adds prefix attribute to To/From String macros.
- #294: use named enum fields in to_string macro.
- #288: discriminant enums now inherit the repr from the original enum.
-
#279: Add
EnumTablemacro to generate a mapping between fieldless variants and data.
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.