classer 0.1.0

A JVM Class File Parser and generator for Rust
Documentation
#[derive(Debug, Clone, PartialEq, Default)]
pub struct Flags<T>
where
    T: std::ops::BitAnd<Output = T> + std::ops::BitOr<Output = T> + PartialEq + Clone + Default,
{
    pub flags: T,
}

impl<T> Flags<T>
where
    T: std::ops::BitAnd<Output = T> + std::ops::BitOr<Output = T> + PartialEq + Clone + Default,
{
    pub fn new(flags: T) -> Flags<T> {
        Flags { flags }
    }
    pub fn is_set(&self, flag: T) -> bool {
        self.flags.clone() & flag.clone() == flag.clone()
    }

    pub fn set(&mut self, flag: T) {
        self.flags = self.flags.clone() | flag;
    }

    pub fn get_all_flags(&self, possible_flags: Vec<T>) -> Vec<T> {
        possible_flags
            .into_iter()
            .filter(|flag| self.is_set(flag.clone()))
            .collect()
    }
}