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}