#[derive(StrictIntegralEnum)]
{
    // Attributes available to this derive:
    #[enum_impl]
}
Expand description

Strict version of the IntegralEnum. It implements only specified implementations, for example this compiles and successfully exits:

use integral_enum::StrictIntegralEnum;

#[derive(StrictIntegralEnum)]
#[enum_impl(display, partial_eq, try_from)]
enum MusicGenre {
    SynthWave,
    HeavyMetal,
}

assert!(MusicGenre::try_from(0) == Ok(MusicGenre::SynthWave));
assert!(format!("{}", MusicGenre::SynthWave) == "SynthWave");

And this will fail:

use integral_enum::StrictIntegralEnum;

#[derive(StrictIntegralEnum)]
#[enum_impl(try_from)]
enum MusicGenre {
    SynthWave,
    HeavyMetal,
}

assert!(MusicGenre::try_from(0) == Ok(MusicGenre::SynthWave));
assert!(format!("{}", MusicGenre::SynthWave) == "SynthWave");