Update strum monorepo to 0.27.0 #31
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.19.5->0.27.00.19.4->0.27.00.20.1->0.27.0Release Notes
Peternator7/strum (strum)
v0.27.2Compare Source
#141: Adding support for doc comments on
EnumDiscriminantsgenerated type.#435:allow discriminants on empty enum.
#443: Change enum table callbacks to FnMut.
#444: Add
#[automatically_derived]to theimpls by @dandedotdev in #444#440: Implement a
suffixattribute for serialization of enum variants.#446: Drop needless
rustversiondependency.v0.27.1Compare Source
#414: Fix docrs build error.
#417: Mention
parse_error_tyandparse_error_fnthat had beenleft out of the docs accidentally.
#421#331: Implement
#[strum(transparent)]attribute onIntoStaticStr,DisplayandAsRefStrthat forwards the implmenentation tothe inner value. Note that for static strings, the inner value must be convertible to an
&'static str.v0.27.0Compare Source
Highlights
Displayis now correctly derived in[no_std]projects.EnumIternow implementsSend + SyncEnumTryAsnow handles attributes on variant fields correctly.strumis now on rust 2021EnumPropertiescorrectly implementsget_boolandget_intfinally. 🎉
FromStringnow supports 2 additional attributes,parse_error_tyand
parse_error_fnthat can be added to use a custom error type rather than the default strum error message.Pathrather than aStringto improve behavior with rust-analyzer.
Breaking Changes
EnumPropertiesdoesn't provide default implementations anymore.This would have required you to manually implement this trait which should be very uncommon.
v0.26.3Compare Source
EnumTablebecause it's going to be deprecated in the nextversion.
itertoolsby using the fullyqualified name rather than the inherent method.
string interpolation.
#[strum(to_string = "Field 0: {0}, Field 1: {1})")]will now work for tuple variantsv0.26.2Compare Source
EnumTryAsAsRefStr. Technically a breaking change,but
prefixwas just added in0.26.0so it's a newer feature and it makes the feature more consisent in general.v0.26.1coreinstead ofstdin VariantArray.v0.26.0Breaking Changes
EnumVariantNamesmacro has been renamedVariantNames. The deprecation warning should steer you inthe right direction for fixing the warning.
added the implementation in your code.
Displaynow 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.closer to a mirror of the original and that's always the goal.
New features
The
VariantArraymacro has been added. This macro adds an associated constantVARIANTSto your enum. The constantis a
&'static [Self]slice so that you can access all the variants of your enum. This only works on enums that onlyhave unit variants.
The
EnumTablemacro has been experimentally added. This macro adds a new type that stores an item for each variantof 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.
Displayhas 2 new features:the
strum(prefix = "some_value")attribute on an enum now allows you to prepend a string onto everyvariant when you serialize it.
Custom
to_stringandserializeattributes now support string interopolation on serialization.PR's Merged
std::fmt::DebugVariantArrayEnumTablemacro to generate a mapping between fieldless variants and data.v0.25.0Breaking 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_stringbehavior when usingdefault. Now, whenusing
default, thedisplaymethod will return the display version of the value contained in the enum rather thanthe name of the variant.
If you want the old behavior, you can use the
to_stringattribute to override this behavior. See the PR for an example.268 Update the behavior of
EnumCountto exclude variants that aredisabled. This is a breaking change, but the behavior makes it more consistent with other methods.New Features
#257 This PR adds the
EnumIsmacro that automatically implementsis_{variant_name}methods for each variant.v0.24.1EnumString(opt-in runtimeperformance improvements for large enums as
#[strum(use_phf)], requiresphffeature and increases MSRV to1.46)TryFrominFromRepr. This istechnically a breaking change, but the fix is to just remove the manual implementation of TryFrom so it shouldn't
be more than a minor inconvenience.
v0.24.0#212. Fix some clippy lints
#209. Use
coreinstead ofstdin a few places.#206. Add
get_documentation()toEnumMessage. This providesthe ability to get the doc comment for a variant. Currently, very little formatting is done. That is subject to change.
Please do not abuse this feature. Rust docs are meant for developer documentation, not long messages for users. However,
this may be useful in some situations so we've added support for it.
#202. Add a missing doc comment
#201. Upgrade Heck version
v0.23.0#185 Adds the
FromReprderive that adds afrom_repr(x: usize) -> Option<Self>method to your enum. This lets you convert integer values to your enum. If you specify a #[repr(..)] attribute on your enum, or use
an explicit discriminant, this will be incorporated into the derive.
from_reprwill beconstif you use a recent rust version.const.#186 Automatically implement
TryFrom<str>for enums that implementEnumString.This is only enabled for rustc >= 1.34 which is when `TryFrom was stabilized.
TryFrom<str>for your enum, this will cause a conflict. Youcan probably remove your manual implementation.
#189 Use
core::result::Resultinstead ofstd::result::Result. This should bemore portable in no-std environments.
v0.22.0#180: Deprecates
ToStringderive. You should useDisplayinstead.
#178: Deprecates AsStaticStr. This has been undocumented for a while.
The recommended method is to derive
IntoStaticStrinstead.#171: Improve
no-stdsupport.#170: enable changing the path to strum traits. This is necessary
if you re-export strum as a submodule in another crate.
v0.21.0Replace
std::withcore::to support no-std projects. #145Breaking Changes
heckdoes not work in1.31.1anymore. Rust 1.32 came out Jan 2019 so hopefullyteams have moved to an equal or newer version.
imported using a qualified path to avoid collisions.
strum_macros::EnumStringrather than using the "Rename"feature to avoid collisions.
is
fn get_message(&self) -> Option<&'static str>.Added support for ascii_case_insensitive string comparisons. #157
This feature allows
FromStringimpls to match strings that differ in case from the expected variant.v0.20.0Refactors to do better error handling. Thanks @jplatte for these changes
Adding
vis(scope)to EnumDiscriminants. #137earlier versions.
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.
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 PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR was generated by Mend Renovate. View the repository job log.