Crate erased_discriminant

Crate erased_discriminant 

Source
Expand description

githubcrates-iodocs-rs

This crate provides a Discriminant type that behaves like core::mem::Discriminant<T> but without the generic type parameter T. With this, we can build collections such as HashSet that contain discriminants from a mixture of different enum types.

use erased_discriminant::Discriminant;
use std::collections::HashSet;

enum Enum {
    A(i32),
    B,
}

enum DifferentEnum {
    A,
}

let mut set = HashSet::new();
set.insert(Discriminant::of(&Enum::A(99)));
set.insert(Discriminant::of(&Enum::B));
set.insert(Discriminant::of(&DifferentEnum::A));
assert_eq!(set.len(), 3);

Structs§

Discriminant
A type-erased version of core::mem::Discriminant<T>.