rand_hsv 0.1.1

Generate random HSV/HSVA colors with configurable ranges.
Documentation

rand_hsv

Generate random hsva(...) colors with configurable bounds.

Install

cargo add rand_hsv

Optional serde support:

cargo add rand_hsv --features serde

Quick start

use rand_hsv::random_hsv;

let color = random_hsv();
let formatted = color.to_hsva_string();

assert!((0.0..=360.0).contains(&color.hue));
assert!(formatted.starts_with("hsva("));

Custom ranges

use rand_hsv::{random_hsv_in, HsvRange};

let range = HsvRange::new(100.0, 200.0, 20.0, 80.0, 15.0, 60.0, 0.2, 0.8).unwrap();
let color = random_hsv_in(range).unwrap();

assert!((100.0..=200.0).contains(&color.hue));
assert!((0.2..=0.8).contains(&color.alpha));

Seeded deterministic generation

use rand::rngs::StdRng;
use rand::SeedableRng;
use rand_hsv::random_hsv_with_rng;

let mut rng_a = StdRng::seed_from_u64(42);
let mut rng_b = StdRng::seed_from_u64(42);

assert_eq!(random_hsv_with_rng(&mut rng_a), random_hsv_with_rng(&mut rng_b));

Caveats

  • Values are sampled from numeric component ranges; they are not gamut-checked, contrast-checked, palette-aware, or perceptually uniform.
  • hsva(...) is a stable crate compatibility format, not a browser-CSS guarantee.