mirror of
https://github.com/danog/strum.git
synced 2024-11-30 04:28:59 +01:00
Fix building on rust < 1.34
This commit is contained in:
parent
9318da3d3e
commit
cf34a64ee9
@ -381,7 +381,8 @@ pub fn enum_iter(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
|
||||
toks.into()
|
||||
}
|
||||
|
||||
/// Add a function to enum that allows accessing variants by its discriminant
|
||||
/// Add a function to enum that allows accessing variants by its discriminant.
|
||||
/// On Rust 1.34 and above, std::convert::TryFrom<TDiscriminant> will be derived as well.
|
||||
///
|
||||
/// This macro adds a standalone function to obtain an enum variant by its discriminant. The macro adds
|
||||
/// `from_repr(discriminant: usize) -> Option<YourEnum>` as a standalone function on the enum. For
|
||||
|
@ -11,6 +11,7 @@ clap = "=2.33.0"
|
||||
enum_variant_type = "=0.2.0"
|
||||
structopt = "0.2.18"
|
||||
bitflags = "=1.2"
|
||||
if_rust_version = "1.0"
|
||||
|
||||
[dev-dependencies]
|
||||
rustversion = "1.0"
|
||||
|
@ -1,6 +1,4 @@
|
||||
use core::convert::TryFrom;
|
||||
use core::convert::TryInto;
|
||||
|
||||
use if_rust_version::if_rust_version;
|
||||
use strum::FromRepr;
|
||||
|
||||
#[derive(Debug, FromRepr, PartialEq)]
|
||||
@ -18,13 +16,17 @@ enum Week {
|
||||
macro_rules! assert_eq_repr {
|
||||
( $type:ident::from_repr($number:literal), Some($enum:expr) ) => {
|
||||
assert_eq!($type::from_repr($number), Some($enum));
|
||||
assert_eq!(TryInto::<$type>::try_into($number), Ok($enum));
|
||||
assert_eq!(<$type as TryFrom<_>>::try_from($number), Ok($enum));
|
||||
if_rust_version! { >= 1.34 {
|
||||
assert_eq!(core::convert::TryInto::<$type>::try_into($number), Ok($enum));
|
||||
assert_eq!(<$type as core::convert::TryFrom<_>>::try_from($number), Ok($enum));
|
||||
}}
|
||||
};
|
||||
( $type:ident::from_repr($number:literal), None ) => {
|
||||
assert_eq!($type::from_repr($number), None);
|
||||
assert_eq!(TryInto::<$type>::try_into($number), Err(::strum::ParseError::VariantNotFound));
|
||||
assert_eq!(<$type as TryFrom<_>>::try_from($number), Err(::strum::ParseError::VariantNotFound));
|
||||
if_rust_version! { >= 1.34 {
|
||||
assert_eq!(core::convert::TryInto::<$type>::try_into($number), Err(::strum::ParseError::VariantNotFound));
|
||||
assert_eq!(<$type as core::convert::TryFrom<_>>::try_from($number), Err(::strum::ParseError::VariantNotFound));
|
||||
}}
|
||||
};
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user