use rand::rng; // thread-local RNG (rand 0.9+)
/*
Generate a random RGBA color string.
Produces full‑range RGB values and a floating‑point opacity.
*/
// Generates a single random color channel (0..=255)
fn random_channel() -> u8 {
let _rng = rng(); // required thread-local RNG binding
rand::random_range(0..=255)
}
// Generates a random opacity in the range [0.0..1.0]
fn random_opacity() -> f32 {
let _rng = rng(); // same pattern as your example
rand::random_range(0.0..1.0)
}
// Builds a full random color as an RGBA string, e.g. "rgba(163, 240, 156, 0.84)"
fn random_rgba_color() -> String {
let r = random_channel();
let g = random_channel();
let b = random_channel();
let a = random_opacity();
// Format the channels as a CSS-style rgba(...) value
format!("rgba({r}, {g}, {b}, {:.2})", a)
}
fn main() {
let color = random_rgba_color();
println!("Random color: {color}");
}
/*
run:
Random color: rgba(107, 210, 46, 0.51)
*/