Peternator7/strum (strum)
### [`v0.26.2`](https://togithub.com/Peternator7/strum/blob/HEAD/CHANGELOG.md#0262)
[Compare Source](https://togithub.com/Peternator7/strum/compare/v0.26.1...v0.26.2)
- [#337](https://togithub.com/Peternator7/strum/pull/337): Fix missing generic impls for `EnumTryAs`
- [#334](https://togithub.com/Peternator7/strum/pull/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`](https://togithub.com/Peternator7/strum/blob/HEAD/CHANGELOG.md#0261)
- [#325](https://togithub.com/Peternator7/strum/pull/325): use `core` instead of `std` in VariantArray.
### [`v0.26.0`](https://togithub.com/Peternator7/strum/blob/HEAD/CHANGELOG.md#0260)
##### 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.
```rust
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.
```rust
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.
##### PR's Merged
- [#322](https://togithub.com/Peternator7/strum/pull/322): avoid collisions on `std::fmt::Debug`
- [#321](https://togithub.com/Peternator7/strum/pull/321): avoid conflicts with consecutive underscores.
- [#314](https://togithub.com/Peternator7/strum/pull/314): add additional bounds to EnumIterator
- [#311](https://togithub.com/Peternator7/strum/pull/311): add FusedIterator bounds to EnumIterator
- [#297](https://togithub.com/Peternator7/strum/pull/297): New macro, add `VariantArray`
- [#296](https://togithub.com/Peternator7/strum/pull/296): adds prefix attribute to To/From String macros.
- [#294](https://togithub.com/Peternator7/strum/pull/294): use named enum fields in to_string macro.
- [#288](https://togithub.com/Peternator7/strum/pull/288): discriminant enums now inherit the repr from the original enum.
- [#279](https://togithub.com/Peternator7/strum/pull/279): Add `EnumTable` macro to generate a mapping between fieldless variants and data.
Configuration
š Schedule: Branch creation - "" in timezone Europe/Berlin, Automerge - At any time (no schedule defined).
š¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
ā» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
š» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
[ ] If you want to rebase/retry this PR, check this box
This PR contains the following updates:
0.25
->0.26
Release Notes
Peternator7/strum (strum)
### [`v0.26.2`](https://togithub.com/Peternator7/strum/blob/HEAD/CHANGELOG.md#0262) [Compare Source](https://togithub.com/Peternator7/strum/compare/v0.26.1...v0.26.2) - [#337](https://togithub.com/Peternator7/strum/pull/337): Fix missing generic impls for `EnumTryAs` - [#334](https://togithub.com/Peternator7/strum/pull/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`](https://togithub.com/Peternator7/strum/blob/HEAD/CHANGELOG.md#0261) - [#325](https://togithub.com/Peternator7/strum/pull/325): use `core` instead of `std` in VariantArray. ### [`v0.26.0`](https://togithub.com/Peternator7/strum/blob/HEAD/CHANGELOG.md#0260) ##### 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. ```rust 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. ```rust 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. ##### PR's Merged - [#322](https://togithub.com/Peternator7/strum/pull/322): avoid collisions on `std::fmt::Debug` - [#321](https://togithub.com/Peternator7/strum/pull/321): avoid conflicts with consecutive underscores. - [#314](https://togithub.com/Peternator7/strum/pull/314): add additional bounds to EnumIterator - [#311](https://togithub.com/Peternator7/strum/pull/311): add FusedIterator bounds to EnumIterator - [#297](https://togithub.com/Peternator7/strum/pull/297): New macro, add `VariantArray` - [#296](https://togithub.com/Peternator7/strum/pull/296): adds prefix attribute to To/From String macros. - [#294](https://togithub.com/Peternator7/strum/pull/294): use named enum fields in to_string macro. - [#288](https://togithub.com/Peternator7/strum/pull/288): discriminant enums now inherit the repr from the original enum. - [#279](https://togithub.com/Peternator7/strum/pull/279): Add `EnumTable` macro to generate a mapping between fieldless variants and data.Configuration
š Schedule: Branch creation - "" in timezone Europe/Berlin, Automerge - At any time (no schedule defined).
š¦ Automerge: Disabled by config. Please merge this manually once you are satisfied.
ā» Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
š» Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.