pix/
private.rs

1// private.rs     Private sealed trait
2//
3// Copyright (c) 2020  Douglas P Lau
4//
5//! Doc-tests that should fail...
6//!
7//! ```compile_fail
8//! use pix::*;
9//! Gray::value(Hsv8::new(0, 128, 255));
10//! ```
11//! ```compile_fail
12//! use pix::*;
13//! Hwb::hue(Rgb8::new(255, 255, 255));
14//! ```
15use crate::chan::{
16    Alpha, Ch16, Ch32, Ch8, Channel, Gamma, Linear, Premultiplied, Srgb,
17    Straight,
18};
19use crate::el::{Pix1, Pix2, Pix3, Pix4};
20use crate::ColorModel;
21use std::any::Any;
22
23/// Sealed trait to prevent outside crates from implementing traits
24pub trait Sealed: Any {}
25
26impl Sealed for Ch8 {}
27
28impl Sealed for Ch16 {}
29
30impl Sealed for Ch32 {}
31
32impl Sealed for Straight {}
33
34impl Sealed for Premultiplied {}
35
36impl Sealed for Linear {}
37
38impl Sealed for Srgb {}
39
40impl<C, M, A, G> Sealed for Pix1<C, M, A, G>
41where
42    C: Channel,
43    M: ColorModel,
44    A: Alpha,
45    G: Gamma,
46{
47}
48
49impl<C, M, A, G> Sealed for Pix2<C, M, A, G>
50where
51    C: Channel,
52    M: ColorModel,
53    A: Alpha,
54    G: Gamma,
55{
56}
57
58impl<C, M, A, G> Sealed for Pix3<C, M, A, G>
59where
60    C: Channel,
61    M: ColorModel,
62    A: Alpha,
63    G: Gamma,
64{
65}
66
67impl<C, M, A, G> Sealed for Pix4<C, M, A, G>
68where
69    C: Channel,
70    M: ColorModel,
71    A: Alpha,
72    G: Gamma,
73{
74}