1
0
mirror of https://github.com/danog/strum.git synced 2024-11-30 04:28:59 +01:00
strum/CHANGELOG.md
2021-05-31 14:46:53 -07:00

7.5 KiB

Changelog

0.21.0

  • Replace std:: with core:: to support no-std projects. #145

  • Breaking Changes

    • MSRV is updated to 1.32 because heck does not work in 1.31.1 anymore. Rust 1.32 came out Jan 2019 so hopefully teams have moved to an equal or newer version.
    • #149 Remove the "rename" feature. In Rust 2018, macros should be imported using a qualified path to avoid collisions. strum_macros::EnumString rather than using the "Rename" feature to avoid collisions.
    • #160 enum messages: Make the returned values all 'static
      • It is unlikely this will break anyone, but the new signature for functions generated by EnumMessage is fn get_message(&self) -> Option<&'static str>.
  • Added support for ascii_case_insensitive string comparisons. #157 This feature allows FromString impls to match strings that differ in case from the expected variant.

0.20.0

  • Refactors to do better error handling. Thanks @jplatte for these changes

  • Adding vis(scope) to EnumDiscriminants. #137

    • This feature works best with versions of rust >= 1.34 due to a rustc parsing error in earlier versions.
    • Earlier versions can still use vis(r#pub)
  • These changes should not be breaking, but the amount of code modified was significant.

  • FYI about #122. The macro renames feature will be removed in early 2021. This feature was only necessary in rust 2015 because macros didn't support qualified imports so macro names could collide between crates.

0.19.4 / 0.19.5

  • Updated docs

0.19.3

  • Properly error on malformed strum attributes. #119
    • These types of inputs have historically been ignore silently. This may break code that is already incorrect.
  • Move docs back to rust docs. #121
  • Updated the docs a second time to improve discoverability.

0.19.2

0.19.1

  • Breaking Change: EnumVariantNames now properly adjusts to the to_string and serialize attributes.
  • There's a regression in this release that may make strum imcompatible with other plugins if those plugins use non-rust syntax in their attributes. #104

0.19.0

  • Fixed a regression using nth_back. #85

  • Added repository to Cargo.toml. #90

  • Correctly handle fill align in Display impls. #95

  • Breaking Change: Use Associated Constant for EnumCount instead of const fn and free constant. #99 This behavior is consistent with the other derives.

  • Breaking Change. default and disabled should now be written as markers instead of key value pairs. Here is the old way of adding these attributes to a variant.

    // OLD WAY
    enum Test {
      #[strum(disabled = "true", default = "true")]
      Variant(String)
    }
    

    Here is the new way. There is less ambiguity in the new syntax.

    enum Test {
      #[strum(disabled, default)]
      Variant(String)
    }
    
  • Breaking Change. Most of the strum plugins will now error more aggresively on invalid options being used. Historically, the plugins have ignore invalid options, but most of these should error now. Silent errors are a rust anti-pattern.

0.18.0

  • Only copy across "doc", "cfg", "allow", "deny" attributes from main enum variants to discriminant variants. #73
  • The formatting of generated serialization variants returned by get_serializations() from an enum that derives EnumMessage is now affected by the serialize_all property on the enum. #84
  • IntoEnumIterator now has the constraint IntoEnumIterator::Iterator<Item=Self> and Self: Sized. This makes it much easier to be generic over IntoEnumIterator and enum variants must be sized. [#80]

0.17.1

  • Fixed an issue caused by combining #60 and #76

0.17.0

  • Breaking Change. Enum variant names now exports an associated constant VARIANTS in the strum::VariantNames trait instead of adding a variants method directly to the enum. The fix is to use strum::VariantNames in your module and replace occurrances of variants() with VARIANTS.
  • 🐛 fix - stop incrementing iterator index after we reach the end. #76
  • Strum iterators now implemented DoubleEndedIterator. #60

0.16.0

  • Added serialize UPPERCASE
  • Added "case-styles" to match the formatting convention they imply such as kebab-case and camelCase.
  • Added Enum Variant Names to improve compatibility with structopt and clap. #56
  • Added derive re-export to strum to allow re-exporting macros from main crate. #57
  • Bumped syn and quote to 1.0. This raises minimal compatible rust version to 1.31.
  • Did internal refactoring to improve organization of code. Shouldn't change user-facing api though.
  • Added license file to subdirectories so they are included in crate distros.

0.15.0

Added

  • Added Feature flags to rename macros. This is to improve compatibility with older versions of rust. Wiki

0.14.0

Added

  • Allow Missing Docs on EnumCount. PR #43
  • Fix serialize_all in AsRefStr, AsStaticStr and IntoStaticStr. PR #42
    • This is a bug fix, but it may break code that was relying on the incorrect behavior.

0.13.0

Added

  • Added a derive to implement From<YourEnum> for &'static str. This deprecates AsStaticStr since the new solution doesn't require a strum specific trait to use.

0.12.0

Added

  • Serialization case can be controlled using #[strum(serialize_all = "snake_case")]. (#21)
  • #[derive(EnumDiscriminants)] generates enum with variants without fields. (#33)

0.10.0

Added

  • Implemented Clone for EnumIters. (#18)
  • Added AsStaticRef derive to allow enums to impl AsStaticRef<str>. (#23)

Fixed

  • #[allow(missing_docs)] on generated EnumIters. (#19)