filterable_enum/
lib.rs

1#![warn(clippy::all, clippy::nursery)]
2
3pub use enumflags2;
4
5pub use filterable_enum_derive::FilterableEnum;
6
7pub trait FilterableEnum<Enum> {
8    type Id;
9    type Filter: EnumFilter<Self::Id>;
10    fn filterable_id(&self) -> Self::Id;
11    fn filter_ref(&self, filter: impl Into<Self::Filter>) -> Option<&Enum>;
12    fn filter_and_take(self, filter: impl Into<Self::Filter>) -> Option<Enum>;
13}
14
15pub trait EnumFilter<Id> {
16    fn contains(&self, id: Id) -> bool;
17}