From 75e0734e2b50572f1e678d94c48c18a888e38881 Mon Sep 17 00:00:00 2001 From: Djeeberjr Date: Mon, 5 May 2025 15:22:38 +0200 Subject: [PATCH] improved Color enum --- src/color.rs | 49 +++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/src/color.rs b/src/color.rs index 93961d9..4a8fd67 100644 --- a/src/color.rs +++ b/src/color.rs @@ -1,17 +1,6 @@ -#[derive(Clone, Copy)] -pub struct Color { - pub r: u8, - pub g: u8, - pub b: u8, -} +use rgb::Rgb; -impl Color { - pub fn to_grb(self) -> [u8; 3] { - [self.g, self.r, self.b] - } -} - -#[derive(Debug, Clone, Copy)] +#[derive(Debug)] pub enum NamedColor { Red, Green, @@ -23,29 +12,29 @@ pub enum NamedColor { Magenta, } -impl From for Color { - fn from(named: NamedColor) -> Self { - match named { - NamedColor::Red => Color { r: 255, g: 0, b: 0 }, - NamedColor::Green => Color { r: 0, g: 255, b: 0 }, - NamedColor::Blue => Color { r: 0, g: 0, b: 255 }, - NamedColor::White => Color { +impl Into> for NamedColor { + fn into(self) -> Rgb { + match self { + NamedColor::Red => Rgb { r: 255, g: 0, b: 0 }, + NamedColor::Green => Rgb { r: 0, g: 255, b: 0 }, + NamedColor::Blue => Rgb { r: 0, g: 0, b: 255 }, + NamedColor::White => Rgb { r: 255, g: 255, b: 255, }, - NamedColor::Off => Color { r: 0, g: 0, b: 0 }, - NamedColor::Yellow => Color { + NamedColor::Off => Rgb { r: 0, g: 0, b: 0 }, + NamedColor::Yellow => Rgb { r: 255, g: 255, b: 0, }, - NamedColor::Cyan => Color { + NamedColor::Cyan => Rgb { r: 0, g: 255, b: 255, }, - NamedColor::Magenta => Color { + NamedColor::Magenta => Rgb { r: 255, g: 0, b: 255, @@ -53,3 +42,15 @@ impl From for Color { } } } + + +impl IntoIterator for NamedColor { + type Item = Self; + + type IntoIter = std::vec::IntoIter; + + fn into_iter(self) -> Self::IntoIter { + vec![self].into_iter() + } +} +