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
EnumTable
because it's going to be deprecated in the next version. -
#357: Fixes an incompatiblity with
itertools
by 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, butprefix
was just added in0.26.0
so it's a newer feature and it makes the feature more consisent in general.
v0.26.1
-
#325: use
core
instead ofstd
in VariantArray.
v0.26.0
Breaking Changes
- The
EnumVariantNames
macro 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.
-
Display
now 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
VariantArray
macro has been added. This macro adds an associated constantVARIANTS
to 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
EnumTable
macro 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); }
-
Display
has 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_string
andserialize
attributes 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
EnumTable
macro 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.