#[derive(ZeroablePixel)]
{
// Attributes available to this derive:
#[zero]
}
Expand description
Derive macro for ZeroablePixel trait.
Generates zero() by calling ZeroablePixel::zero() on each field’s type.
§Requirements
- Must be a struct (not enum or union)
- Must have at least one field
- By default, all field types must implement
ZeroablePixel
§Per-Field Control with #[zero(...)]
You can override the zero-initialization strategy for individual fields:
- No attribute (default): uses
<T as ZeroablePixel>::zero() #[zero(default)]: uses<T as Default>::default()#[zero(<expr>)]: uses the given expression verbatim
§Example
ⓘ
#[derive(Clone, Copy, PlainPixel, ZeroablePixel)]
#[repr(C)]
pub struct Rgb8 {
pub r: Saturating<u8>,
pub g: Saturating<u8>,
pub b: Saturating<u8>,
}§Example with #[zero(...)] attributes
ⓘ
#[derive(Clone, Copy, ZeroablePixel)]
#[repr(C)]
pub struct PixelWithMeta {
pub r: u8,
pub g: u8,
pub b: u8,
#[zero(default)]
pub metadata: SomeDefaultType,
#[zero(MyTag::new(42))]
pub tag: MyTag,
}§Generated Implementation
ⓘ
impl ZeroablePixel for Rgb8 {
fn zero() -> Self {
Rgb8 {
r: <Saturating<u8> as ZeroablePixel>::zero(),
g: <Saturating<u8> as ZeroablePixel>::zero(),
b: <Saturating<u8> as ZeroablePixel>::zero(),
}
}
}