pub use self::kinds::PrimaryColor;
pub use self::kinds::SecondaryColor;
pub use self::utils::mix;
pub mod kinds {
pub enum PrimaryColor {
Red,
Yellow,
Blue,
}
pub enum SecondaryColor {
Orange,
Green,
Purple,
}
}
pub mod utils {
use crate::kinds::*;
pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
use PrimaryColor::*;
use SecondaryColor::*;
match (c1, c2) {
(Red, Yellow) | (Yellow, Red) => Orange,
(Yellow, Blue) | (Blue, Yellow) => Green,
(Red, Blue) | (Blue, Red) => Purple,
_ => panic!("Cannot mix the same primary color to get a secondary color"),
}
}
}