Skip to content

fix(deps): update rust crate strum to 0.26.0

renovate requested to merge renovate/strum-monorepo into main

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

Compare Source

  • #​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

Compare Source

  • #​337: Fix missing generic impls for EnumTryAs
  • #​334: Support prefix in AsRefStr. Technically a breaking change, but prefix was just added in 0.26.0 so it's a newer feature and it makes the feature more consisent in general.

v0.26.1

  • #​325: use core instead of std in VariantArray.

v0.26.0

Breaking Changes
  • The EnumVariantNames macro has been renamed VariantNames. 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 constant VARIANTS 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 and serialize 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

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this MR and you won't be reminded about this update again.


  • If you want to rebase/retry this MR, check this box

This MR has been generated by Renovate Bot.

Edited by renovate

Merge request reports

Loading