rustmax::cxx::core::ops

Trait Add

1.6.0 · Source
pub trait Add<Rhs = Self> {
    type Output;

    // Required method
    fn add(self, rhs: Rhs) -> Self::Output;
}
Expand description

The addition operator +.

Note that Rhs is Self by default, but this is not mandatory. For example, std::time::SystemTime implements Add<Duration>, which permits operations of the form SystemTime = SystemTime + Duration.

§Examples

§Addable points

use std::ops::Add;

#[derive(Debug, Copy, Clone, PartialEq)]
struct Point {
    x: i32,
    y: i32,
}

impl Add for Point {
    type Output = Self;

    fn add(self, other: Self) -> Self {
        Self {
            x: self.x + other.x,
            y: self.y + other.y,
        }
    }
}

assert_eq!(Point { x: 1, y: 0 } + Point { x: 2, y: 3 },
           Point { x: 3, y: 3 });

§Implementing Add with generics

Here is an example of the same Point struct implementing the Add trait using generics.

use std::ops::Add;

#[derive(Debug, Copy, Clone, PartialEq)]
struct Point<T> {
    x: T,
    y: T,
}

// Notice that the implementation uses the associated type `Output`.
impl<T: Add<Output = T>> Add for Point<T> {
    type Output = Self;

    fn add(self, other: Self) -> Self::Output {
        Self {
            x: self.x + other.x,
            y: self.y + other.y,
        }
    }
}

assert_eq!(Point { x: 1, y: 0 } + Point { x: 2, y: 3 },
           Point { x: 3, y: 3 });

Required Associated Types§

1.0.0 · Source

type Output

The resulting type after applying the + operator.

Required Methods§

1.0.0 · Source

fn add(self, rhs: Rhs) -> Self::Output

Performs the + operation.

§Example
assert_eq!(12 + 1, 13);

Implementors§

1.0.0 · Source§

impl Add for f16

1.0.0 · Source§

impl Add for f32

1.0.0 · Source§

impl Add for f64

1.0.0 · Source§

impl Add for f128

1.0.0 · Source§

impl Add for i8

1.0.0 · Source§

impl Add for i16

1.0.0 · Source§

impl Add for i32

1.0.0 · Source§

impl Add for i64

1.0.0 · Source§

impl Add for i128

1.0.0 · Source§

impl Add for isize

1.0.0 · Source§

impl Add for u8

1.0.0 · Source§

impl Add for u16

1.0.0 · Source§

impl Add for u32

1.0.0 · Source§

impl Add for u64

1.0.0 · Source§

impl Add for u128

1.0.0 · Source§

impl Add for usize

Source§

impl Add for TimeSpec

Source§

impl Add for TimeVal

Source§

impl Add for LengthHint

Source§

impl Add for TimeDelta

Source§

impl Add for SignedDuration

Source§

impl Add for BigInt

Source§

impl Add for BigUint

Source§

impl Add for ATerm

Source§

impl Add for Assume

1.74.0 · Source§

impl Add for Saturating<i8>

1.74.0 · Source§

impl Add for Saturating<i16>

1.74.0 · Source§

impl Add for Saturating<i32>

1.74.0 · Source§

impl Add for Saturating<i64>

1.74.0 · Source§

impl Add for Saturating<i128>

1.74.0 · Source§

impl Add for Saturating<isize>

1.74.0 · Source§

impl Add for Saturating<u8>

1.74.0 · Source§

impl Add for Saturating<u16>

1.74.0 · Source§

impl Add for Saturating<u32>

1.74.0 · Source§

impl Add for Saturating<u64>

1.74.0 · Source§

impl Add for Saturating<u128>

1.74.0 · Source§

impl Add for Saturating<usize>

1.0.0 · Source§

impl Add for Wrapping<i8>

1.0.0 · Source§

impl Add for Wrapping<i16>

1.0.0 · Source§

impl Add for Wrapping<i32>

1.0.0 · Source§

impl Add for Wrapping<i64>

1.0.0 · Source§

impl Add for Wrapping<i128>

1.0.0 · Source§

impl Add for Wrapping<isize>

1.0.0 · Source§

impl Add for Wrapping<u8>

1.0.0 · Source§

impl Add for Wrapping<u16>

1.0.0 · Source§

impl Add for Wrapping<u32>

1.0.0 · Source§

impl Add for Wrapping<u64>

1.0.0 · Source§

impl Add for Wrapping<u128>

1.0.0 · Source§

impl Add for Wrapping<usize>

1.3.0 · Source§

impl Add for Duration

1.0.0 · Source§

impl Add<&f16> for &f16

1.0.0 · Source§

impl Add<&f16> for f16

1.0.0 · Source§

impl Add<&f32> for &f32

1.0.0 · Source§

impl Add<&f32> for f32

1.0.0 · Source§

impl Add<&f64> for &f64

1.0.0 · Source§

impl Add<&f64> for f64

1.0.0 · Source§

impl Add<&f128> for &f128

1.0.0 · Source§

impl Add<&f128> for f128

1.0.0 · Source§

impl Add<&i8> for &i8

Source§

impl Add<&i8> for &BigInt

1.0.0 · Source§

impl Add<&i8> for i8

Source§

impl Add<&i8> for BigInt

1.0.0 · Source§

impl Add<&i16> for &i16

Source§

impl Add<&i16> for &BigInt

1.0.0 · Source§

impl Add<&i16> for i16

Source§

impl Add<&i16> for BigInt

1.0.0 · Source§

impl Add<&i32> for &i32

Source§

impl Add<&i32> for &BigInt

1.0.0 · Source§

impl Add<&i32> for i32

Source§

impl Add<&i32> for BigInt

1.0.0 · Source§

impl Add<&i64> for &i64

Source§

impl Add<&i64> for &BigInt

1.0.0 · Source§

impl Add<&i64> for i64

Source§

impl Add<&i64> for BigInt

1.0.0 · Source§

impl Add<&i128> for &i128

Source§

impl Add<&i128> for &BigInt

1.0.0 · Source§

impl Add<&i128> for i128

Source§

impl Add<&i128> for BigInt

1.0.0 · Source§

impl Add<&isize> for &isize

Source§

impl Add<&isize> for &BigInt

1.0.0 · Source§

impl Add<&isize> for isize

Source§

impl Add<&isize> for BigInt

1.0.0 · Source§

impl Add<&str> for String

Implements the + operator for concatenating two strings.

This consumes the String on the left-hand side and re-uses its buffer (growing it if necessary). This is done to avoid allocating a new String and copying the entire contents on every operation, which would lead to O(n^2) running time when building an n-byte string by repeated concatenation.

The string on the right-hand side is only borrowed; its contents are copied into the returned String.

§Examples

Concatenating two Strings takes the first by value and borrows the second:

let a = String::from("hello");
let b = String::from(" world");
let c = a + &b;
// `a` is moved and can no longer be used here.

If you want to keep using the first String, you can clone it and append to the clone instead:

let a = String::from("hello");
let b = String::from(" world");
let c = a.clone() + &b;
// `a` is still valid here.

Concatenating &str slices can be done by converting the first to a String:

let a = "hello";
let b = " world";
let c = a.to_string() + b;
1.0.0 · Source§

impl Add<&u8> for &u8

Source§

impl Add<&u8> for &BigInt

Source§

impl Add<&u8> for &BigUint

1.0.0 · Source§

impl Add<&u8> for u8

Source§

impl Add<&u8> for BigInt

Source§

impl Add<&u8> for BigUint

1.0.0 · Source§

impl Add<&u16> for &u16

Source§

impl Add<&u16> for &BigInt

Source§

impl Add<&u16> for &BigUint

1.0.0 · Source§

impl Add<&u16> for u16

Source§

impl Add<&u16> for BigInt

Source§

impl Add<&u16> for BigUint

1.0.0 · Source§

impl Add<&u32> for &u32

Source§

impl Add<&u32> for &BigInt

Source§

impl Add<&u32> for &BigUint

1.0.0 · Source§

impl Add<&u32> for u32

Source§

impl Add<&u32> for BigInt

Source§

impl Add<&u32> for BigUint

1.0.0 · Source§

impl Add<&u64> for &u64

Source§

impl Add<&u64> for &BigInt

Source§

impl Add<&u64> for &BigUint

1.0.0 · Source§

impl Add<&u64> for u64

Source§

impl Add<&u64> for BigInt

Source§

impl Add<&u64> for BigUint

1.0.0 · Source§

impl Add<&u128> for &u128

Source§

impl Add<&u128> for &BigInt

Source§

impl Add<&u128> for &BigUint

1.0.0 · Source§

impl Add<&u128> for u128

Source§

impl Add<&u128> for BigInt

Source§

impl Add<&u128> for BigUint

1.0.0 · Source§

impl Add<&usize> for &usize

Source§

impl Add<&usize> for &BigInt

Source§

impl Add<&usize> for &BigUint

1.0.0 · Source§

impl Add<&usize> for usize

Source§

impl Add<&usize> for BigInt

Source§

impl Add<&usize> for BigUint

Source§

impl Add<&BigNumRef> for &BigNumRef

Source§

impl Add<&BigInt> for &i8

Source§

impl Add<&BigInt> for &i16

Source§

impl Add<&BigInt> for &i32

Source§

impl Add<&BigInt> for &i64

Source§

impl Add<&BigInt> for &i128

Source§

impl Add<&BigInt> for &isize

Source§

impl Add<&BigInt> for &u8

Source§

impl Add<&BigInt> for &u16

Source§

impl Add<&BigInt> for &u32

Source§

impl Add<&BigInt> for &u64

Source§

impl Add<&BigInt> for &u128

Source§

impl Add<&BigInt> for &usize

Source§

impl Add<&BigInt> for &BigInt

Source§

impl Add<&BigInt> for i8

Source§

impl Add<&BigInt> for i16

Source§

impl Add<&BigInt> for i32

Source§

impl Add<&BigInt> for i64

Source§

impl Add<&BigInt> for i128

Source§

impl Add<&BigInt> for isize

Source§

impl Add<&BigInt> for u8

Source§

impl Add<&BigInt> for u16

Source§

impl Add<&BigInt> for u32

Source§

impl Add<&BigInt> for u64

Source§

impl Add<&BigInt> for u128

Source§

impl Add<&BigInt> for usize

Source§

impl Add<&BigInt> for BigInt

Source§

impl Add<&BigUint> for &u8

Source§

impl Add<&BigUint> for &u16

Source§

impl Add<&BigUint> for &u32

Source§

impl Add<&BigUint> for &u64

Source§

impl Add<&BigUint> for &u128

Source§

impl Add<&BigUint> for &usize

Source§

impl Add<&BigUint> for &BigUint

Source§

impl Add<&BigUint> for u8

Source§

impl Add<&BigUint> for u16

Source§

impl Add<&BigUint> for u32

Source§

impl Add<&BigUint> for u64

Source§

impl Add<&BigUint> for u128

Source§

impl Add<&BigUint> for usize

Source§

impl Add<&BigUint> for BigUint

1.74.0 · Source§

impl Add<&Saturating<i8>> for &Saturating<i8>

1.74.0 · Source§

impl Add<&Saturating<i8>> for Saturating<i8>

1.74.0 · Source§

impl Add<&Saturating<i16>> for &Saturating<i16>

1.74.0 · Source§

impl Add<&Saturating<i16>> for Saturating<i16>

1.74.0 · Source§

impl Add<&Saturating<i32>> for &Saturating<i32>

1.74.0 · Source§

impl Add<&Saturating<i32>> for Saturating<i32>

1.74.0 · Source§

impl Add<&Saturating<i64>> for &Saturating<i64>

1.74.0 · Source§

impl Add<&Saturating<i64>> for Saturating<i64>

1.74.0 · Source§

impl Add<&Saturating<i128>> for &Saturating<i128>

1.74.0 · Source§

impl Add<&Saturating<i128>> for Saturating<i128>

1.74.0 · Source§

impl Add<&Saturating<isize>> for &Saturating<isize>

1.74.0 · Source§

impl Add<&Saturating<isize>> for Saturating<isize>

1.74.0 · Source§

impl Add<&Saturating<u8>> for &Saturating<u8>

1.74.0 · Source§

impl Add<&Saturating<u8>> for Saturating<u8>

1.74.0 · Source§

impl Add<&Saturating<u16>> for &Saturating<u16>

1.74.0 · Source§

impl Add<&Saturating<u16>> for Saturating<u16>

1.74.0 · Source§

impl Add<&Saturating<u32>> for &Saturating<u32>

1.74.0 · Source§

impl Add<&Saturating<u32>> for Saturating<u32>

1.74.0 · Source§

impl Add<&Saturating<u64>> for &Saturating<u64>

1.74.0 · Source§

impl Add<&Saturating<u64>> for Saturating<u64>

1.74.0 · Source§

impl Add<&Saturating<u128>> for &Saturating<u128>

1.74.0 · Source§

impl Add<&Saturating<u128>> for Saturating<u128>

1.74.0 · Source§

impl Add<&Saturating<usize>> for &Saturating<usize>

1.74.0 · Source§

impl Add<&Saturating<usize>> for Saturating<usize>

1.14.0 · Source§

impl Add<&Wrapping<i8>> for &Wrapping<i8>

1.14.0 · Source§

impl Add<&Wrapping<i8>> for Wrapping<i8>

1.14.0 · Source§

impl Add<&Wrapping<i16>> for &Wrapping<i16>

1.14.0 · Source§

impl Add<&Wrapping<i16>> for Wrapping<i16>

1.14.0 · Source§

impl Add<&Wrapping<i32>> for &Wrapping<i32>

1.14.0 · Source§

impl Add<&Wrapping<i32>> for Wrapping<i32>

1.14.0 · Source§

impl Add<&Wrapping<i64>> for &Wrapping<i64>

1.14.0 · Source§

impl Add<&Wrapping<i64>> for Wrapping<i64>

1.14.0 · Source§

impl Add<&Wrapping<i128>> for &Wrapping<i128>

1.14.0 · Source§

impl Add<&Wrapping<i128>> for Wrapping<i128>

1.14.0 · Source§

impl Add<&Wrapping<isize>> for &Wrapping<isize>

1.14.0 · Source§

impl Add<&Wrapping<isize>> for Wrapping<isize>

1.14.0 · Source§

impl Add<&Wrapping<u8>> for &Wrapping<u8>

1.14.0 · Source§

impl Add<&Wrapping<u8>> for Wrapping<u8>

1.14.0 · Source§

impl Add<&Wrapping<u16>> for &Wrapping<u16>

1.14.0 · Source§

impl Add<&Wrapping<u16>> for Wrapping<u16>

1.14.0 · Source§

impl Add<&Wrapping<u32>> for &Wrapping<u32>

1.14.0 · Source§

impl Add<&Wrapping<u32>> for Wrapping<u32>

1.14.0 · Source§

impl Add<&Wrapping<u64>> for &Wrapping<u64>

1.14.0 · Source§

impl Add<&Wrapping<u64>> for Wrapping<u64>

1.14.0 · Source§

impl Add<&Wrapping<u128>> for &Wrapping<u128>

1.14.0 · Source§

impl Add<&Wrapping<u128>> for Wrapping<u128>

1.14.0 · Source§

impl Add<&Wrapping<usize>> for &Wrapping<usize>

1.14.0 · Source§

impl Add<&Wrapping<usize>> for Wrapping<usize>

Source§

impl Add<Weekday> for i8

Source§

impl Add<Weekday> for i16

Source§

impl Add<Weekday> for i32

Source§

impl Add<Weekday> for i64

Source§

impl Add<i8> for &BigInt

Source§

impl Add<i8> for Weekday

Source§

impl Add<i8> for BigInt

Source§

impl Add<i16> for &BigInt

Source§

impl Add<i16> for Weekday

Source§

impl Add<i16> for BigInt

Source§

impl Add<i32> for &BigInt

Source§

impl Add<i32> for Weekday

Source§

impl Add<i32> for BigInt

Source§

impl Add<i64> for &BigInt

Source§

impl Add<i64> for Weekday

Source§

impl Add<i64> for BigInt

Source§

impl Add<i128> for &BigInt

Source§

impl Add<i128> for BigInt

Source§

impl Add<isize> for &BigInt

Source§

impl Add<isize> for BigInt

Source§

impl Add<u8> for &BigInt

Source§

impl Add<u8> for &BigUint

Source§

impl Add<u8> for BigInt

Source§

impl Add<u8> for BigUint

Source§

impl Add<u16> for &BigInt

Source§

impl Add<u16> for &BigUint

Source§

impl Add<u16> for BigInt

Source§

impl Add<u16> for BigUint

Source§

impl Add<u32> for &BigInt

Source§

impl Add<u32> for &BigUint

Source§

impl Add<u32> for BigInt

Source§

impl Add<u32> for BigUint

Source§

impl Add<u64> for &BigInt

Source§

impl Add<u64> for &BigUint

Source§

impl Add<u64> for BigInt

Source§

impl Add<u64> for BigUint

Source§

impl Add<u128> for &BigInt

Source§

impl Add<u128> for &BigUint

Source§

impl Add<u128> for BigInt

Source§

impl Add<u128> for BigUint

Source§

impl Add<usize> for &BigInt

Source§

impl Add<usize> for &BigUint

Source§

impl Add<usize> for LengthHint

Source§

impl Add<usize> for BigInt

Source§

impl Add<usize> for BigUint

Source§

impl Add<usize> for SizeRange

Adds usize to both start and end of the bounds.

Panics if adding to either end overflows usize.

Source§

impl Add<Days> for NaiveDate

Add Days to NaiveDate.

§Panics

Panics if the resulting date would be out of range. Consider using NaiveDate::checked_add_days to get an Option instead.

Source§

impl Add<Days> for NaiveDateTime

Add Days to NaiveDateTime.

§Panics

Panics if the resulting date would be out of range. Consider using checked_add_days to get an Option instead.

Source§

impl Add<FixedOffset> for NaiveDateTime

Add FixedOffset to NaiveDateTime.

§Panics

Panics if the resulting date would be out of range. Consider using checked_add_offset to get an Option instead.

Source§

impl Add<FixedOffset> for NaiveTime

Add FixedOffset to NaiveTime.

This wraps around and never overflows or underflows. In particular the addition ignores integral number of days.

Source§

impl Add<Months> for NaiveDate

Add Months to NaiveDate.

The result will be clamped to valid days in the resulting month, see checked_add_months for details.

§Panics

Panics if the resulting date would be out of range. Consider using NaiveDate::checked_add_months to get an Option instead.

§Example

use chrono::{Months, NaiveDate};

let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();

assert_eq!(from_ymd(2014, 1, 1) + Months::new(1), from_ymd(2014, 2, 1));
assert_eq!(from_ymd(2014, 1, 1) + Months::new(11), from_ymd(2014, 12, 1));
assert_eq!(from_ymd(2014, 1, 1) + Months::new(12), from_ymd(2015, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + Months::new(13), from_ymd(2015, 2, 1));
assert_eq!(from_ymd(2014, 1, 31) + Months::new(1), from_ymd(2014, 2, 28));
assert_eq!(from_ymd(2020, 1, 31) + Months::new(1), from_ymd(2020, 2, 29));
Source§

impl Add<Months> for NaiveDateTime

Add Months to NaiveDateTime.

The result will be clamped to valid days in the resulting month, see checked_add_months for details.

§Panics

Panics if the resulting date would be out of range. Consider using checked_add_months to get an Option instead.

§Example

use chrono::{Months, NaiveDate};

assert_eq!(
    NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(1, 0, 0).unwrap() + Months::new(1),
    NaiveDate::from_ymd_opt(2014, 2, 1).unwrap().and_hms_opt(1, 0, 0).unwrap()
);
assert_eq!(
    NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 2, 0).unwrap()
        + Months::new(11),
    NaiveDate::from_ymd_opt(2014, 12, 1).unwrap().and_hms_opt(0, 2, 0).unwrap()
);
assert_eq!(
    NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 0, 3).unwrap()
        + Months::new(12),
    NaiveDate::from_ymd_opt(2015, 1, 1).unwrap().and_hms_opt(0, 0, 3).unwrap()
);
assert_eq!(
    NaiveDate::from_ymd_opt(2014, 1, 1).unwrap().and_hms_opt(0, 0, 4).unwrap()
        + Months::new(13),
    NaiveDate::from_ymd_opt(2015, 2, 1).unwrap().and_hms_opt(0, 0, 4).unwrap()
);
assert_eq!(
    NaiveDate::from_ymd_opt(2014, 1, 31).unwrap().and_hms_opt(0, 5, 0).unwrap()
        + Months::new(1),
    NaiveDate::from_ymd_opt(2014, 2, 28).unwrap().and_hms_opt(0, 5, 0).unwrap()
);
assert_eq!(
    NaiveDate::from_ymd_opt(2020, 1, 31).unwrap().and_hms_opt(6, 0, 0).unwrap()
        + Months::new(1),
    NaiveDate::from_ymd_opt(2020, 2, 29).unwrap().and_hms_opt(6, 0, 0).unwrap()
);
Source§

impl Add<TimeDelta> for NaiveDate

Add TimeDelta to NaiveDate.

This discards the fractional days in TimeDelta, rounding to the closest integral number of days towards TimeDelta::zero().

§Panics

Panics if the resulting date would be out of range. Consider using NaiveDate::checked_add_signed to get an Option instead.

§Example

use chrono::{NaiveDate, TimeDelta};

let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();

assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::zero(), from_ymd(2014, 1, 1));
assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::try_seconds(86399).unwrap(), from_ymd(2014, 1, 1));
assert_eq!(
    from_ymd(2014, 1, 1) + TimeDelta::try_seconds(-86399).unwrap(),
    from_ymd(2014, 1, 1)
);
assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::try_days(1).unwrap(), from_ymd(2014, 1, 2));
assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::try_days(-1).unwrap(), from_ymd(2013, 12, 31));
assert_eq!(from_ymd(2014, 1, 1) + TimeDelta::try_days(364).unwrap(), from_ymd(2014, 12, 31));
assert_eq!(
    from_ymd(2014, 1, 1) + TimeDelta::try_days(365 * 4 + 1).unwrap(),
    from_ymd(2018, 1, 1)
);
assert_eq!(
    from_ymd(2014, 1, 1) + TimeDelta::try_days(365 * 400 + 97).unwrap(),
    from_ymd(2414, 1, 1)
);
Source§

impl Add<TimeDelta> for NaiveDateTime

Add TimeDelta to NaiveDateTime.

As a part of Chrono’s leap second handling, the addition assumes that there is no leap second ever, except when the NaiveDateTime itself represents a leap second in which case the assumption becomes that there is exactly a single leap second ever.

§Panics

Panics if the resulting date would be out of range. Consider using NaiveDateTime::checked_add_signed to get an Option instead.

§Example

use chrono::{NaiveDate, TimeDelta};

let from_ymd = |y, m, d| NaiveDate::from_ymd_opt(y, m, d).unwrap();

let d = from_ymd(2016, 7, 8);
let hms = |h, m, s| d.and_hms_opt(h, m, s).unwrap();
assert_eq!(hms(3, 5, 7) + TimeDelta::zero(), hms(3, 5, 7));
assert_eq!(hms(3, 5, 7) + TimeDelta::try_seconds(1).unwrap(), hms(3, 5, 8));
assert_eq!(hms(3, 5, 7) + TimeDelta::try_seconds(-1).unwrap(), hms(3, 5, 6));
assert_eq!(hms(3, 5, 7) + TimeDelta::try_seconds(3600 + 60).unwrap(), hms(4, 6, 7));
assert_eq!(
    hms(3, 5, 7) + TimeDelta::try_seconds(86_400).unwrap(),
    from_ymd(2016, 7, 9).and_hms_opt(3, 5, 7).unwrap()
);
assert_eq!(
    hms(3, 5, 7) + TimeDelta::try_days(365).unwrap(),
    from_ymd(2017, 7, 8).and_hms_opt(3, 5, 7).unwrap()
);

let hmsm = |h, m, s, milli| d.and_hms_milli_opt(h, m, s, milli).unwrap();
assert_eq!(hmsm(3, 5, 7, 980) + TimeDelta::try_milliseconds(450).unwrap(), hmsm(3, 5, 8, 430));

Leap seconds are handled, but the addition assumes that it is the only leap second happened.

let leap = hmsm(3, 5, 59, 1_300);
assert_eq!(leap + TimeDelta::zero(), hmsm(3, 5, 59, 1_300));
assert_eq!(leap + TimeDelta::try_milliseconds(-500).unwrap(), hmsm(3, 5, 59, 800));
assert_eq!(leap + TimeDelta::try_milliseconds(500).unwrap(), hmsm(3, 5, 59, 1_800));
assert_eq!(leap + TimeDelta::try_milliseconds(800).unwrap(), hmsm(3, 6, 0, 100));
assert_eq!(leap + TimeDelta::try_seconds(10).unwrap(), hmsm(3, 6, 9, 300));
assert_eq!(leap + TimeDelta::try_seconds(-10).unwrap(), hmsm(3, 5, 50, 300));
assert_eq!(leap + TimeDelta::try_days(1).unwrap(),
           from_ymd(2016, 7, 9).and_hms_milli_opt(3, 5, 59, 300).unwrap());
Source§

impl Add<TimeDelta> for NaiveTime

Add TimeDelta to NaiveTime.

This wraps around and never overflows or underflows. In particular the addition ignores integral number of days.

As a part of Chrono’s leap second handling, the addition assumes that there is no leap second ever, except when the NaiveTime itself represents a leap second in which case the assumption becomes that there is exactly a single leap second ever.

§Example

use chrono::{NaiveTime, TimeDelta};

let from_hmsm = |h, m, s, milli| NaiveTime::from_hms_milli_opt(h, m, s, milli).unwrap();

assert_eq!(from_hmsm(3, 5, 7, 0) + TimeDelta::zero(), from_hmsm(3, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + TimeDelta::try_seconds(1).unwrap(), from_hmsm(3, 5, 8, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + TimeDelta::try_seconds(-1).unwrap(), from_hmsm(3, 5, 6, 0));
assert_eq!(
    from_hmsm(3, 5, 7, 0) + TimeDelta::try_seconds(60 + 4).unwrap(),
    from_hmsm(3, 6, 11, 0)
);
assert_eq!(
    from_hmsm(3, 5, 7, 0) + TimeDelta::try_seconds(7 * 60 * 60 - 6 * 60).unwrap(),
    from_hmsm(9, 59, 7, 0)
);
assert_eq!(
    from_hmsm(3, 5, 7, 0) + TimeDelta::try_milliseconds(80).unwrap(),
    from_hmsm(3, 5, 7, 80)
);
assert_eq!(
    from_hmsm(3, 5, 7, 950) + TimeDelta::try_milliseconds(280).unwrap(),
    from_hmsm(3, 5, 8, 230)
);
assert_eq!(
    from_hmsm(3, 5, 7, 950) + TimeDelta::try_milliseconds(-980).unwrap(),
    from_hmsm(3, 5, 6, 970)
);

The addition wraps around.

assert_eq!(from_hmsm(3, 5, 7, 0) + TimeDelta::try_seconds(22*60*60).unwrap(), from_hmsm(1, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + TimeDelta::try_seconds(-8*60*60).unwrap(), from_hmsm(19, 5, 7, 0));
assert_eq!(from_hmsm(3, 5, 7, 0) + TimeDelta::try_days(800).unwrap(), from_hmsm(3, 5, 7, 0));

Leap seconds are handled, but the addition assumes that it is the only leap second happened.

let leap = from_hmsm(3, 5, 59, 1_300);
assert_eq!(leap + TimeDelta::zero(), from_hmsm(3, 5, 59, 1_300));
assert_eq!(leap + TimeDelta::try_milliseconds(-500).unwrap(), from_hmsm(3, 5, 59, 800));
assert_eq!(leap + TimeDelta::try_milliseconds(500).unwrap(), from_hmsm(3, 5, 59, 1_800));
assert_eq!(leap + TimeDelta::try_milliseconds(800).unwrap(), from_hmsm(3, 6, 0, 100));
assert_eq!(leap + TimeDelta::try_seconds(10).unwrap(), from_hmsm(3, 6, 9, 300));
assert_eq!(leap + TimeDelta::try_seconds(-10).unwrap(), from_hmsm(3, 5, 50, 300));
assert_eq!(leap + TimeDelta::try_days(1).unwrap(), from_hmsm(3, 5, 59, 300));
Source§

impl Add<SignedDuration> for rustmax::jiff::civil::Date

Adds a signed duration of time to a date.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Date::checked_add.

Source§

impl Add<SignedDuration> for rustmax::jiff::civil::DateTime

Adds a signed duration of time to a datetime.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use DateTime::checked_add.

Source§

impl Add<SignedDuration> for Time

Adds a signed duration of time. This uses wrapping arithmetic.

For checked arithmetic, see Time::checked_add.

Source§

impl Add<SignedDuration> for Timestamp

Adds a signed duration of time to a timestamp.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Timestamp::checked_add.

Source§

impl Add<SignedDuration> for Offset

Adds a signed duration of time to an offset. This panics on overflow.

For checked arithmetic, see Offset::checked_add.

Source§

impl Add<Span> for rustmax::jiff::civil::Date

Adds a span of time to a date.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Date::checked_add.

Source§

impl Add<Span> for rustmax::jiff::civil::DateTime

Adds a span of time to a datetime.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use DateTime::checked_add.

Source§

impl Add<Span> for Time

Adds a span of time. This uses wrapping arithmetic.

For checked arithmetic, see Time::checked_add.

Source§

impl Add<Span> for Timestamp

Adds a span of time to a timestamp.

This uses checked arithmetic and panics when it fails. To handle arithmetic without panics, use Timestamp::checked_add. Note that the failure condition includes overflow and using a Span with non-zero units greater than hours.

Source§

impl Add<Span> for Offset

Adds a span of time to an offset. This panics on overflow.

For checked arithmetic, see Offset::checked_add.

Source§

impl Add<BigInt> for &i8

Source§

impl Add<BigInt> for &i16

Source§

impl Add<BigInt> for &i32

Source§

impl Add<BigInt> for &i64

Source§

impl Add<BigInt> for &i128

Source§

impl Add<BigInt> for &isize

Source§

impl Add<BigInt> for &u8

Source§

impl Add<BigInt> for &u16

Source§

impl Add<BigInt> for &u32

Source§

impl Add<BigInt> for &u64

Source§

impl Add<BigInt> for &u128

Source§

impl Add<BigInt> for &usize

Source§

impl Add<BigInt> for &BigInt

Source§

impl Add<BigInt> for i8

Source§

impl Add<BigInt> for i16

Source§

impl Add<BigInt> for i32

Source§

impl Add<BigInt> for i64

Source§

impl Add<BigInt> for i128

Source§

impl Add<BigInt> for isize

Source§

impl Add<BigInt> for u8

Source§

impl Add<BigInt> for u16

Source§

impl Add<BigInt> for u32

Source§

impl Add<BigInt> for u64

Source§

impl Add<BigInt> for u128

Source§

impl Add<BigInt> for usize

Source§

impl Add<BigUint> for &u8

Source§

impl Add<BigUint> for &u16

Source§

impl Add<BigUint> for &u32

Source§

impl Add<BigUint> for &u64

Source§

impl Add<BigUint> for &u128

Source§

impl Add<BigUint> for &usize

Source§

impl Add<BigUint> for &BigUint

Source§

impl Add<BigUint> for u8

Source§

impl Add<BigUint> for u16

Source§

impl Add<BigUint> for u32

Source§

impl Add<BigUint> for u64

Source§

impl Add<BigUint> for u128

Source§

impl Add<BigUint> for usize

Source§

impl Add<B0> for UTerm

UTerm + B0 = UTerm

Source§

impl Add<B1> for UTerm

UTerm + B1 = UInt<UTerm, B1>

Source§

impl Add<Duration> for NaiveDateTime

Add std::time::Duration to NaiveDateTime.

As a part of Chrono’s [leap second handling], the addition assumes that there is no leap second ever, except when the NaiveDateTime itself represents a leap second in which case the assumption becomes that there is exactly a single leap second ever.

§Panics

Panics if the resulting date would be out of range. Consider using NaiveDateTime::checked_add_signed to get an Option instead.

Source§

impl Add<Duration> for NaiveTime

Add std::time::Duration to NaiveTime.

This wraps around and never overflows or underflows. In particular the addition ignores integral number of days.

Source§

impl Add<Duration> for rustmax::jiff::civil::Date

Adds an unsigned duration of time to a date.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Date::checked_add.

Source§

impl Add<Duration> for rustmax::jiff::civil::DateTime

Adds an unsigned duration of time to a datetime.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use DateTime::checked_add.

Source§

impl Add<Duration> for Time

Adds an unsigned duration of time. This uses wrapping arithmetic.

For checked arithmetic, see Time::checked_add.

Source§

impl Add<Duration> for Timestamp

Adds an unsigned duration of time to a timestamp.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Timestamp::checked_add.

Source§

impl Add<Duration> for Offset

Adds an unsigned duration of time to an offset. This panics on overflow.

For checked arithmetic, see Offset::checked_add.

1.8.0 · Source§

impl Add<Duration> for rustmax::std::time::Instant

1.8.0 · Source§

impl Add<Duration> for SystemTime

Source§

impl Add<Duration> for rustmax::tokio::time::Instant

1.14.0 · Source§

impl<'a> Add for Cow<'a, str>

Source§

type Output = Cow<'a, str>

1.14.0 · Source§

impl<'a> Add<&'a str> for Cow<'a, str>

Source§

type Output = Cow<'a, str>

1.0.0 · Source§

impl<'a> Add<f16> for &'a f16

1.0.0 · Source§

impl<'a> Add<f32> for &'a f32

1.0.0 · Source§

impl<'a> Add<f64> for &'a f64

1.0.0 · Source§

impl<'a> Add<f128> for &'a f128

1.0.0 · Source§

impl<'a> Add<i8> for &'a i8

1.0.0 · Source§

impl<'a> Add<i16> for &'a i16

1.0.0 · Source§

impl<'a> Add<i32> for &'a i32

1.0.0 · Source§

impl<'a> Add<i64> for &'a i64

1.0.0 · Source§

impl<'a> Add<i128> for &'a i128

1.0.0 · Source§

impl<'a> Add<isize> for &'a isize

1.0.0 · Source§

impl<'a> Add<u8> for &'a u8

1.0.0 · Source§

impl<'a> Add<u16> for &'a u16

1.0.0 · Source§

impl<'a> Add<u32> for &'a u32

1.0.0 · Source§

impl<'a> Add<u64> for &'a u64

1.0.0 · Source§

impl<'a> Add<u128> for &'a u128

1.0.0 · Source§

impl<'a> Add<usize> for &'a usize

Source§

impl<'a> Add<SignedDuration> for &'a Zoned

Adds a signed duration of time to a zoned datetime.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Zoned::checked_add.

Source§

impl<'a> Add<Span> for &'a Zoned

Adds a span of time to a zoned datetime.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Zoned::checked_add.

1.74.0 · Source§

impl<'a> Add<Saturating<i8>> for &'a Saturating<i8>

1.74.0 · Source§

impl<'a> Add<Saturating<i16>> for &'a Saturating<i16>

1.74.0 · Source§

impl<'a> Add<Saturating<i32>> for &'a Saturating<i32>

1.74.0 · Source§

impl<'a> Add<Saturating<i64>> for &'a Saturating<i64>

1.74.0 · Source§

impl<'a> Add<Saturating<i128>> for &'a Saturating<i128>

1.74.0 · Source§

impl<'a> Add<Saturating<isize>> for &'a Saturating<isize>

1.74.0 · Source§

impl<'a> Add<Saturating<u8>> for &'a Saturating<u8>

1.74.0 · Source§

impl<'a> Add<Saturating<u16>> for &'a Saturating<u16>

1.74.0 · Source§

impl<'a> Add<Saturating<u32>> for &'a Saturating<u32>

1.74.0 · Source§

impl<'a> Add<Saturating<u64>> for &'a Saturating<u64>

1.74.0 · Source§

impl<'a> Add<Saturating<u128>> for &'a Saturating<u128>

1.74.0 · Source§

impl<'a> Add<Saturating<usize>> for &'a Saturating<usize>

1.14.0 · Source§

impl<'a> Add<Wrapping<i8>> for &'a Wrapping<i8>

1.14.0 · Source§

impl<'a> Add<Wrapping<i16>> for &'a Wrapping<i16>

1.14.0 · Source§

impl<'a> Add<Wrapping<i32>> for &'a Wrapping<i32>

1.14.0 · Source§

impl<'a> Add<Wrapping<i64>> for &'a Wrapping<i64>

1.14.0 · Source§

impl<'a> Add<Wrapping<i128>> for &'a Wrapping<i128>

1.14.0 · Source§

impl<'a> Add<Wrapping<isize>> for &'a Wrapping<isize>

1.14.0 · Source§

impl<'a> Add<Wrapping<u8>> for &'a Wrapping<u8>

1.14.0 · Source§

impl<'a> Add<Wrapping<u16>> for &'a Wrapping<u16>

1.14.0 · Source§

impl<'a> Add<Wrapping<u32>> for &'a Wrapping<u32>

1.14.0 · Source§

impl<'a> Add<Wrapping<u64>> for &'a Wrapping<u64>

1.14.0 · Source§

impl<'a> Add<Wrapping<u128>> for &'a Wrapping<u128>

1.14.0 · Source§

impl<'a> Add<Wrapping<usize>> for &'a Wrapping<usize>

Source§

impl<'a> Add<Duration> for &'a Zoned

Adds an unsigned duration of time to a zoned datetime.

This uses checked arithmetic and panics on overflow. To handle overflow without panics, use Zoned::checked_add.

Source§

impl<'a, 'b> Add<&'b BigNum> for &'a BigNum

Source§

impl<'a, 'b> Add<&'b BigNum> for &'a BigNumRef

Source§

impl<'a, 'b> Add<&'b BigNumRef> for &'a BigNum

Source§

impl<'a, T> Add<&'a Histogram<T>> for Histogram<T>
where T: Counter,

Source§

impl<'lhs, 'rhs, T, const N: usize> Add<&'rhs Simd<T, N>> for &'lhs Simd<T, N>
where T: SimdElement, Simd<T, N>: Add<Output = Simd<T, N>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

impl<Al, Vl, Ar, Vr> Add<TArr<Vr, Ar>> for TArr<Vl, Al>
where Al: Add<Ar>, Vl: Add<Vr>,

Source§

type Output = TArr<<Vl as Add<Vr>>::Output, <Al as Add<Ar>>::Output>

Source§

impl<I> Add<I> for Z0
where I: Integer,

Z0 + I = I

Source§

impl<O> Add for zerocopy::byteorder::F32<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::F32<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::F64<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::F64<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I16<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I16<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I32<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I32<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I64<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I64<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I128<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::I128<O>
where O: ByteOrder,

Source§

impl<O> Add for Isize<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U16<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U16<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U32<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U32<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U64<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U64<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U128<O>
where O: ByteOrder,

Source§

impl<O> Add for zerocopy::byteorder::U128<O>
where O: ByteOrder,

Source§

impl<O> Add for Usize<O>
where O: ByteOrder,

Source§

impl<O> Add<f32> for zerocopy::byteorder::F32<O>
where O: ByteOrder,

Source§

impl<O> Add<f64> for zerocopy::byteorder::F64<O>
where O: ByteOrder,

Source§

impl<O> Add<i16> for zerocopy::byteorder::I16<O>
where O: ByteOrder,

Source§

impl<O> Add<i32> for zerocopy::byteorder::I32<O>
where O: ByteOrder,

Source§

impl<O> Add<i64> for zerocopy::byteorder::I64<O>
where O: ByteOrder,

Source§

impl<O> Add<i128> for zerocopy::byteorder::I128<O>
where O: ByteOrder,

Source§

impl<O> Add<isize> for Isize<O>
where O: ByteOrder,

Source§

impl<O> Add<u16> for zerocopy::byteorder::U16<O>
where O: ByteOrder,

Source§

impl<O> Add<u32> for zerocopy::byteorder::U32<O>
where O: ByteOrder,

Source§

impl<O> Add<u64> for zerocopy::byteorder::U64<O>
where O: ByteOrder,

Source§

impl<O> Add<u128> for zerocopy::byteorder::U128<O>
where O: ByteOrder,

Source§

impl<O> Add<usize> for Usize<O>
where O: ByteOrder,

Source§

impl<O> Add<F32<O>> for f32
where O: ByteOrder,

Source§

impl<O> Add<F64<O>> for f64
where O: ByteOrder,

Source§

impl<O> Add<I16<O>> for i16
where O: ByteOrder,

Source§

impl<O> Add<I32<O>> for i32
where O: ByteOrder,

Source§

impl<O> Add<I64<O>> for i64
where O: ByteOrder,

Source§

impl<O> Add<I128<O>> for i128
where O: ByteOrder,

Source§

impl<O> Add<Isize<O>> for isize
where O: ByteOrder,

Source§

impl<O> Add<U16<O>> for u16
where O: ByteOrder,

Source§

impl<O> Add<U32<O>> for u32
where O: ByteOrder,

Source§

impl<O> Add<U64<O>> for u64
where O: ByteOrder,

Source§

impl<O> Add<U128<O>> for u128
where O: ByteOrder,

Source§

impl<O> Add<Usize<O>> for usize
where O: ByteOrder,

Source§

impl<T> Add for Histogram<T>
where T: Counter,

Source§

impl<T, const N: usize> Add<&Simd<T, N>> for Simd<T, N>
where T: SimdElement, Simd<T, N>: Add<Output = Simd<T, N>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

impl<T, const N: usize> Add<Simd<T, N>> for &Simd<T, N>
where T: SimdElement, Simd<T, N>: Add<Output = Simd<T, N>>, LaneCount<N>: SupportedLaneCount,

Source§

type Output = Simd<T, N>

Source§

impl<Tz> Add<Days> for rustmax::chrono::DateTime<Tz>
where Tz: TimeZone,

Add Days to NaiveDateTime.

§Panics

Panics if:

  • The resulting date would be out of range.
  • The local time at the resulting date does not exist or is ambiguous, for example during a daylight saving time transition.

Strongly consider using DateTime<Tz>::checked_add_days to get an Option instead.

Source§

impl<Tz> Add<FixedOffset> for rustmax::chrono::DateTime<Tz>
where Tz: TimeZone,

Add FixedOffset to the datetime value of DateTime (offset remains unchanged).

§Panics

Panics if the resulting date would be out of range.

Source§

impl<Tz> Add<Months> for rustmax::chrono::DateTime<Tz>
where Tz: TimeZone,

Add Months to DateTime.

The result will be clamped to valid days in the resulting month, see checked_add_months for details.

§Panics

Panics if:

  • The resulting date would be out of range.
  • The local time at the resulting date does not exist or is ambiguous, for example during a daylight saving time transition.

Strongly consider using DateTime<Tz>::checked_add_months to get an Option instead.

Source§

impl<Tz> Add<TimeDelta> for rustmax::chrono::Date<Tz>
where Tz: TimeZone,

Source§

type Output = Date<Tz>

Source§

impl<Tz> Add<TimeDelta> for rustmax::chrono::DateTime<Tz>
where Tz: TimeZone,

Add TimeDelta to DateTime.

As a part of Chrono’s [leap second handling], the addition assumes that there is no leap second ever, except when the NaiveDateTime itself represents a leap second in which case the assumption becomes that there is exactly a single leap second ever.

§Panics

Panics if the resulting date would be out of range. Consider using DateTime<Tz>::checked_add_signed to get an Option instead.

Source§

impl<Tz> Add<Duration> for rustmax::chrono::DateTime<Tz>
where Tz: TimeZone,

Add std::time::Duration to DateTime.

As a part of Chrono’s [leap second handling], the addition assumes that there is no leap second ever, except when the NaiveDateTime itself represents a leap second in which case the assumption becomes that there is exactly a single leap second ever.

§Panics

Panics if the resulting date would be out of range. Consider using DateTime<Tz>::checked_add_signed to get an Option instead.

Source§

impl<U> Add<B1> for UInt<U, B0>
where U: Unsigned,

UInt<U, B0> + B1 = UInt<U + B1>

Source§

impl<U> Add<B1> for UInt<U, B1>
where U: Unsigned + Add<B1>, <U as Add<B1>>::Output: Unsigned,

UInt<U, B1> + B1 = UInt<U + B1, B0>

Source§

type Output = UInt<<U as Add<B1>>::Output, B0>

Source§

impl<U> Add<Z0> for NInt<U>
where U: Unsigned + NonZero,

NInt + Z0 = NInt

Source§

impl<U> Add<Z0> for PInt<U>
where U: Unsigned + NonZero,

PInt + Z0 = PInt

Source§

impl<U> Add<U> for UTerm
where U: Unsigned,

UTerm + U = U

Source§

impl<U, B> Add<B0> for UInt<U, B>
where U: Unsigned, B: Bit,

U + B0 = U

Source§

type Output = UInt<U, B>

Source§

impl<U, B> Add<UTerm> for UInt<U, B>
where U: Unsigned, B: Bit,

UInt<U, B> + UTerm = UInt<U, B>

Source§

type Output = UInt<U, B>

Source§

impl<Ul, Ur> Add<NInt<Ur>> for NInt<Ul>
where Ul: Unsigned + NonZero + Add<Ur>, Ur: Unsigned + NonZero, <Ul as Add<Ur>>::Output: Unsigned + NonZero,

N(Ul) + N(Ur) = N(Ul + Ur)

Source§

type Output = NInt<<Ul as Add<Ur>>::Output>

Source§

impl<Ul, Ur> Add<NInt<Ur>> for PInt<Ul>
where Ul: Unsigned + NonZero + Cmp<Ur> + PrivateIntegerAdd<<Ul as Cmp<Ur>>::Output, Ur>, Ur: Unsigned + NonZero,

P(Ul) + N(Ur): We resolve this with our PrivateAdd

Source§

type Output = <Ul as PrivateIntegerAdd<<Ul as Cmp<Ur>>::Output, Ur>>::Output

Source§

impl<Ul, Ur> Add<PInt<Ur>> for NInt<Ul>
where Ul: Unsigned + NonZero, Ur: Unsigned + NonZero + Cmp<Ul> + PrivateIntegerAdd<<Ur as Cmp<Ul>>::Output, Ul>,

N(Ul) + P(Ur): We resolve this with our PrivateAdd

Source§

type Output = <Ur as PrivateIntegerAdd<<Ur as Cmp<Ul>>::Output, Ul>>::Output

Source§

impl<Ul, Ur> Add<PInt<Ur>> for PInt<Ul>
where Ul: Unsigned + NonZero + Add<Ur>, Ur: Unsigned + NonZero, <Ul as Add<Ur>>::Output: Unsigned + NonZero,

P(Ul) + P(Ur) = P(Ul + Ur)

Source§

type Output = PInt<<Ul as Add<Ur>>::Output>

Source§

impl<Ul, Ur> Add<UInt<Ur, B0>> for UInt<Ul, B0>
where Ul: Unsigned + Add<Ur>, Ur: Unsigned,

UInt<Ul, B0> + UInt<Ur, B0> = UInt<Ul + Ur, B0>

Source§

type Output = UInt<<Ul as Add<Ur>>::Output, B0>

Source§

impl<Ul, Ur> Add<UInt<Ur, B0>> for UInt<Ul, B1>
where Ul: Unsigned + Add<Ur>, Ur: Unsigned,

UInt<Ul, B1> + UInt<Ur, B0> = UInt<Ul + Ur, B1>

Source§

type Output = UInt<<Ul as Add<Ur>>::Output, B1>

Source§

impl<Ul, Ur> Add<UInt<Ur, B1>> for UInt<Ul, B0>
where Ul: Unsigned + Add<Ur>, Ur: Unsigned,

UInt<Ul, B0> + UInt<Ur, B1> = UInt<Ul + Ur, B1>

Source§

type Output = UInt<<Ul as Add<Ur>>::Output, B1>

Source§

impl<Ul, Ur> Add<UInt<Ur, B1>> for UInt<Ul, B1>
where Ul: Unsigned + Add<Ur>, Ur: Unsigned, <Ul as Add<Ur>>::Output: Add<B1>,

UInt<Ul, B1> + UInt<Ur, B1> = UInt<(Ul + Ur) + B1, B0>

Source§

type Output = UInt<<<Ul as Add<Ur>>::Output as Add<B1>>::Output, B0>

Source§

impl<const N: usize> Add for Simd<f32, N>

Source§

impl<const N: usize> Add for Simd<f64, N>

Source§

impl<const N: usize> Add for Simd<i8, N>

Source§

impl<const N: usize> Add for Simd<i16, N>

Source§

impl<const N: usize> Add for Simd<i32, N>

Source§

impl<const N: usize> Add for Simd<i64, N>

Source§

impl<const N: usize> Add for Simd<isize, N>

Source§

impl<const N: usize> Add for Simd<u8, N>

Source§

impl<const N: usize> Add for Simd<u16, N>

Source§

impl<const N: usize> Add for Simd<u32, N>

Source§

impl<const N: usize> Add for Simd<u64, N>

Source§

impl<const N: usize> Add for Simd<usize, N>