Skip to main content

SaturatingSub

Derive Macro SaturatingSub 

Source
#[derive(SaturatingSub)]
{
    // Attributes available to this derive:
    #[saturating_sub]
}
Expand description

Implements num::traits::SaturatingSub for a struct by delegating to each field. Supports setting bounds with #[saturating_sub(bound = "T: SomeTrait")]

ยงExample

โ“˜
#[derive(Debug, mkutils_macros::SaturatingSub, PartialEq)]
struct MyStruct(usize, usize);

adds

โ“˜
impl num::traits::SaturatingSub for MyStruct {
    fn saturating_sub(&self, v: &Self) -> Self {
        Self(self.0.saturating_sub(&v.0), self.1.saturating_sub(&v.1))
    }
}

as can be seen in

โ“˜
std::assert_eq!(MyStruct(1, 1).saturating_sub(MyStruct(2, 2)), MyStruct(0, 0));