| Crates.io | tinycolors |
| lib.rs | tinycolors |
| version | 0.1.0 |
| created_at | 2025-05-21 20:24:47.492056+00 |
| updated_at | 2025-05-21 20:24:47.492056+00 |
| description | a tiny color management library focused on erganomics. |
| homepage | |
| repository | https://github.com/amitmaish/tinycolors |
| max_upload_size | |
| id | 1684097 |
| size | 25,677 |
this crate simplifies the process of working with different color spaces, it consists of two parts: color structs, and the color trait.
the structs in this module represent a color in a particular color space. all structs can be cast into each other, as well as casting to and from a [f32; 3]
use tinycolors::srgb;
let color0 = srgb{r: 1.0, g: 0.5, b: 0.25};
let color1: srgb = [1.0, 0.5, 0.25].into();
assert_eq!(color0, color1);
every color struct implements the color trait. the color trait ensures that every struct that implements it can be cast to all the colors. when writing functions that require a color, using a generic color allows the caller to store their colors in whatever format they want.
use tinycolors::{Color, srgb, rgb};
fn any_color_as_rgb<T: Color>(color: T) -> rgb {
color.into()
}
let color_srgb = srgb::WHITE;
let color_rgb = any_color_as_rgb(color_srgb);
assert_eq!(color_rgb, rgb::from(color_srgb));
NOTE: conversions to and from okhsl and okhsv are thin wrappers for the
okhslcrate. if that's all you're using, that crate might be a better choice for you.