Skip to main content

SaturatingAdd

Derive Macro SaturatingAdd 

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

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

ยงExample

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

adds

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

as can be seen in

โ“˜
std::assert_eq!(MyStruct(1, 1).saturating_add(MyStruct(2, 2)), MyStruct(3, 3));