art_yyyrrr/
lib.rs

1//! # Art
2//! 
3//! A library for modeling artistic concepts.
4
5pub use kinds::PrimaryColor;
6pub use kinds::SecondaryColor;
7pub use utils::mix;
8
9pub mod kinds {
10    /// The primary colors according to the RYB color model.
11    pub enum PrimaryColor {
12        Red,
13        Yellow,
14        Blue,
15    }
16
17    /// The secondary colors according to the RYB color model.
18    pub enum SecondaryColor {
19        Orange,
20        Green,
21        Purple,
22    }
23}
24
25pub mod utils {
26    use crate::kinds::*;
27
28    /// Combines two primary colors in equal amounts to create a secondary color.
29    pub fn mix(c1: PrimaryColor, c2: PrimaryColor) -> SecondaryColor {
30        match (c1, c2) {
31            (PrimaryColor::Red, PrimaryColor::Yellow) => SecondaryColor::Orange,
32            (PrimaryColor::Red, PrimaryColor::Blue) => SecondaryColor::Purple,
33            (PrimaryColor::Yellow, PrimaryColor::Blue) => SecondaryColor::Green,
34            _ => panic!("Invalid color combination!"),
35        }
36    }
37}