Sha256: 4db1edcaff986c69420f995429afd24006e274e1c821238461ed12910fe06af8

Contents?: true

Size: 888 Bytes

Versions: 395

Compression:

Stored size: 888 Bytes

Contents

pub struct Allergies(pub usize);

#[derive(PartialEq, Debug)]
pub enum Allergen { Eggs, Peanuts, Shellfish, Strawberries, Tomatoes, Chocolate, Pollen, Cats }

impl Allergies {
    pub fn new(score: usize) -> Allergies {
        Allergies(score)
    }

    pub fn is_allergic_to(&self, allergen: &Allergen) -> bool {
        let allergens = Allergies::allergens();
        let index = allergens.iter().position(|x: &Allergen| x == allergen).unwrap();
        (self.0 & (1 << index)) != 0
    }

    pub fn allergies(&self) -> Vec<Allergen> {
        Allergies::allergens().into_iter().filter(|allergen| self.is_allergic_to(allergen)).collect()
    }

    fn allergens() -> Vec<Allergen> {
        vec![Allergen::Eggs, Allergen::Peanuts, Allergen::Shellfish,
            Allergen::Strawberries, Allergen::Tomatoes, Allergen::Chocolate,
            Allergen::Pollen, Allergen::Cats]
    }
}

Version data entries

395 entries across 395 versions & 1 rubygems

Version Path
trackler-2.2.1.138 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.137 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.136 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.135 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.134 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.133 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.132 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.131 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.130 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.129 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.128 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.127 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.126 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.125 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.124 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.123 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.122 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.121 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.120 tracks/rust/exercises/allergies/example.rs
trackler-2.2.1.119 tracks/rust/exercises/allergies/example.rs