palette::cast

Trait UintsFrom

source
pub trait UintsFrom<C> {
    // Required method
    fn uints_from(colors: C) -> Self;
}
Expand description

Trait for casting a collection of unsigned integers from a collection of colors without copying.

This trait is meant as a more convenient alternative to the free functions in cast, to allow method chaining among other things.

§Examples

use palette::{cast::UintsFrom, rgb::PackedArgb, Srgba};

let array: [PackedArgb; 2] = [
    Srgba::new(0x17, 0xC6, 0x4C, 0xFF).into(),
    Srgba::new(0x5D, 0x12, 0xD6, 0xFF).into()
];
let slice: &[PackedArgb] = &[
    Srgba::new(0x17, 0xC6, 0x4C, 0xFF).into(),
    Srgba::new(0x5D, 0x12, 0xD6, 0xFF).into()
];
let slice_mut: &mut [PackedArgb] = &mut [
    Srgba::new(0x17, 0xC6, 0x4C, 0xFF).into(),
    Srgba::new(0x5D, 0x12, 0xD6, 0xFF).into()
];
let vec: Vec<PackedArgb> = vec![
    Srgba::new(0x17, 0xC6, 0x4C, 0xFF).into(),
    Srgba::new(0x5D, 0x12, 0xD6, 0xFF).into()
];

assert_eq!(<[_; 2]>::uints_from(array), [0xFF17C64C, 0xFF5D12D6]);
assert_eq!(<&[_]>::uints_from(slice), [0xFF17C64C, 0xFF5D12D6]);
assert_eq!(<&mut [_]>::uints_from(slice_mut), [0xFF17C64C, 0xFF5D12D6]);
assert_eq!(Vec::<_>::uints_from(vec), vec![0xFF17C64C, 0xFF5D12D6]);

Owning types can be cast as slices, too:

use palette::{cast::UintsFrom, rgb::PackedArgb, Srgba};

let array: [PackedArgb; 2] = [
    Srgba::new(0x17, 0xC6, 0x4C, 0xFF).into(),
    Srgba::new(0x5D, 0x12, 0xD6, 0xFF).into()
];
let mut vec: Vec<PackedArgb> = vec![
    Srgba::new(0x17, 0xC6, 0x4C, 0xFF).into(),
    Srgba::new(0x5D, 0x12, 0xD6, 0xFF).into()
];

assert_eq!(<&[_]>::uints_from(&array), [0xFF17C64C, 0xFF5D12D6]);
assert_eq!(<&mut [_]>::uints_from(&mut vec), [0xFF17C64C, 0xFF5D12D6]);

Required Methods§

source

fn uints_from(colors: C) -> Self

Cast a collection of colors into a collection of unsigned integers.

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,