Releases: Peternator7/strum
v0.27.1
What's Changed
- Fix docsrs build error regarding IntoDiscriminant trait by @tveness in #414
- Update docs to actually include new features by @Peternator7 in #417
- Use _ to silence warnings about unused fields by @Peternator7 in #418
- Add
#[strum(transparent)]
attribute by @bobozaur in #331 - Fix warnings in tests from variants by @Peternator7 in #419
- Peternator7/fix transparent typo by @Peternator7 in #421
New Contributors
Full Changelog: v0.27.0...v0.27.1
v0.27.0
What's Changed
- Fix the unconditional usage of string interpolation in strum by @Peternator7 in #360
- fix: require strum_macros 0.26.3 by @joshka in #365
- docs(strum_macros): fix word error in doc by @leaf-potato in #370
- Add EnumDiscriminants Trait and related Macro impl by @vpochapuis in #377
- macros: Stop using syn's extra-traits feature by @svix-jplatte in #378
- docs(strum_macros): fix typo in
enum_iter
docs by @cenviity in #387 - Inline generated functions by @marc0246 in #389
- Peternator7/update msrv to 1.66.1 by @Peternator7 in #384
- Update appveyor.yml to VS 2022 by @Peternator7 in #383
- feat: FromStr derive could support setting the error type by @JimChenWYU in #380
- Add support for
const_into_str
attribute to enable static string conversions in const contexts by @biryukovmaxim in #353 - fix typo by @JimChenWYU in #393
- Implement
get_int
/get_bool
for properties by @marxin in #391 - deps: bumped phf to 0.11 by @jqnatividad in #401
- Quality of life changes by @MHS-0 in #398
- fix EnumTryAs to allow attributes on enum variant fields by @phsym in #400
- Using fn() -> T instead of T in the phantom data will make all EnumIterator types Send + Sync. by @Peternator7 in #402
- Use asserts instead of println in Display docstrings by @sukhmel in #403
- Fix
Display
macro in#![no_std]
programs by @bugadani in #407 - Fix potential errors from vis diffs by @Peternator7 in #409
- Use a "Path" instead of "String" for FromStr's error methods by @Peternator7 in #410
- Per cargo docs, this should fix the circular dep when publishing strum by @Peternator7 in #411
- Remove gnu toolchains from appveyor by @Peternator7 in #412
New Contributors
- @leaf-potato made their first contribution in #370
- @vpochapuis made their first contribution in #377
- @svix-jplatte made their first contribution in #378
- @cenviity made their first contribution in #387
- @marc0246 made their first contribution in #389
- @JimChenWYU made their first contribution in #380
- @biryukovmaxim made their first contribution in #353
- @marxin made their first contribution in #391
- @jqnatividad made their first contribution in #401
- @MHS-0 made their first contribution in #398
- @phsym made their first contribution in #400
- @sukhmel made their first contribution in #403
- @bugadani made their first contribution in #407
Full Changelog: v0.26.3...v0.27.0
v0.26.3
What's Changed
- Fix typos & misspellings in docs by @5-pebbles in #347
- Update
heck
requirement by @smoelius in #346 - Fix broken links by @rainbowatcher in #350
- Interpolate unnamed enum variant fields in to_string attribute by @gin-ahirsch in #345
- add hyperlinks to documentation and clarify derive macros by @lolbinarycat in #355
- Use fully qualified syntax for calling
get
on anEnumIter
, eliminating ambiguities by @bluurryy in #357
New Contributors
- @5-pebbles made their first contribution in #347
- @rainbowatcher made their first contribution in #350
- @gin-ahirsch made their first contribution in #345
- @lolbinarycat made their first contribution in #355
- @bluurryy made their first contribution in #357
Full Changelog: v0.26.2...v0.26.3
v0.26.2
What's Changed
- Fix AsRefStr docs to specify lifetime constraints by @DTrippe in #330
- Fix missing generics on impl for EnumTryAs by @hasali19 in #337
- feat(as_ref_str): enable
prefix
attribute forAsRefStr
derive by @vbrvk in #334 - Add dependabot by @oriontvv in #333
- Fix docs that say array instead of slice by @Peternator7 in #343
- Hide EnumTable by @Peternator7 in #344
- EnumTable will likely be deprecated.
New Contributors
- @DTrippe made their first contribution in #330
- @hasali19 made their first contribution in #337
- @vbrvk made their first contribution in #334
- @oriontvv made their first contribution in #333
Full Changelog: v0.26.1...v0.26.2
v0.26.1
0.26.1
- #325: use
core
instead ofstd
in VariantArray.
0.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.
-
PR'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.