fix(deps): update rust crate strum to 0.26.2 - autoclosed
This MR contains the following updates:
Package | Type | Update | Change |
---|---|---|---|
strum | dependencies | minor |
0.24.1 -> 0.26.2
|
Release Notes
Peternator7/strum (strum)
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.
v0.25.0
Breaking Changes
-
#261 Upgrade syn dependency to version 2. This bumps the msrv to 1.56. It's impractical to maintain a package where a core dependency of the ecosystem has a different msrv than this one.
-
270 Change the
to_string
behavior when usingdefault
. Now, when usingdefault
, thedisplay
method will return the display version of the value contained in the enum rather than the name of the variant.#[derive(strum::Display)] enum Color { Red, Blue, Green, #[strum(default)] Other(String) } fn main() { // This used to print "Other", now it prints "Purple" assert_eq!(Color::Other("Purple".to_string()).to_string(), "Purple"); }
If you want the old behavior, you can use the
to_string
attribute to override this behavior. See the MR for an example. -
268 Update the behavior of
EnumCount
to exclude variants that aredisabled
. This is a breaking change, but the behavior makes it more consistent with other methods.
New Features
-
#257 This MR adds the
EnumIs
macro that automatically implementsis_{variant_name}
methods for each variant.#[derive(EnumIs)] enum Color { Red, Blue, Green, } #[test] fn simple_test() { assert!(Color::Red.is_red()); }
Configuration
-
If you want to rebase/retry this MR, check this box
This MR has been generated by Renovate Bot.