How to convert from HEX color to RGB in Rust

2 Answers

0 votes
fn hex_to_rgb(hex: &str) -> Result<(u8, u8, u8), String> {
    let hex = hex.trim_start_matches('#');
    if hex.len() != 6 {
        return Err("Invalid HEX color code".to_string());
    }

    let red = u8::from_str_radix(&hex[0..2], 16)
        .map_err(|_| "Failed to parse red component")?;
    let green = u8::from_str_radix(&hex[2..4], 16)
        .map_err(|_| "Failed to parse green component")?;
    let blue = u8::from_str_radix(&hex[4..6], 16)
        .map_err(|_| "Failed to parse blue component")?;

    Ok((red, green, blue))
}

fn main() {
    let hex_color = "#1E05FF";
    
    match hex_to_rgb(hex_color) {
        Ok((r, g, b)) => println!("RGB: ({}, {}, {})", r, g, b),
        Err(e) => eprintln!("Error: {}", e),
    }
}



/*
run:

RGB: (30, 5, 255)
     
*/

 



answered Mar 7, 2025 by avibootz
0 votes
fn hex_to_rgb(hex: &str) -> Result<(u8, u8, u8), String> {
    let hex = hex.trim_start_matches('#');

    let processed_hex = if hex.len() == 3 {
        hex.chars()
            .flat_map(|c| std::iter::repeat(c).take(2))
            .collect::<String>()
    } else {
        hex.to_string()
    };

    if processed_hex.len() != 6 {
        return Err("Invalid HEX color code".to_string());
    }

    let red = u8::from_str_radix(&processed_hex[0..2], 16)
        .map_err(|_| "Failed to parse red component")?;
    let green = u8::from_str_radix(&processed_hex[2..4], 16)
        .map_err(|_| "Failed to parse green component")?;
    let blue = u8::from_str_radix(&processed_hex[4..6], 16)
        .map_err(|_| "Failed to parse blue component")?;

    Ok((red, green, blue))
}

fn main() {
    let hex_color1 = "#1E05FF";
    match hex_to_rgb(hex_color1) {
        Ok((r, g, b)) => println!("RGB: ({}, {}, {})", r, g, b),
        Err(e) => eprintln!("Error: {}", e),
    }

    let hex_color2 = "#f00";
    match hex_to_rgb(hex_color2) {
        Ok((r, g, b)) => println!("RGB: ({}, {}, {})", r, g, b),
        Err(e) => eprintln!("Error: {}", e),
    }
}



/*
run:

RGB: (30, 5, 255)
RGB: (255, 0, 0)
     
*/
 

 



answered Mar 7, 2025 by avibootz

Related questions

1 answer 87 views
1 answer 102 views
102 views asked Jan 27, 2025 by avibootz
1 answer 71 views
1 answer 127 views
2 answers 128 views
2 answers 98 views
2 answers 113 views
113 views asked Mar 6, 2025 by avibootz
...