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§
Required Methods§
Implementors§
§impl Add for SerialNumber
Serial Number Addition, see RFC 1982, section 3.1
impl Add for SerialNumber
Serial Number Addition, see RFC 1982, section 3.1
The result is a wrapping add.
type Output = SerialNumber
1.74.0 (const: unstable) · Source§impl Add for Saturating<i128>
impl Add for Saturating<i128>
type Output = Saturating<i128>
1.74.0 (const: unstable) · Source§impl Add for Saturating<isize>
impl Add for Saturating<isize>
type Output = Saturating<isize>
1.74.0 (const: unstable) · Source§impl Add for Saturating<u128>
impl Add for Saturating<u128>
type Output = Saturating<u128>
1.74.0 (const: unstable) · Source§impl Add for Saturating<usize>
impl Add for Saturating<usize>
type Output = Saturating<usize>
1.0.0 · Source§impl Add<&str> for String
Implements the + operator for concatenating two strings.
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.74.0 (const: unstable) · Source§impl Add<&Saturating<i8>> for &Saturating<i8>
impl Add<&Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i8>> for Saturating<i8>
impl Add<&Saturating<i8>> for Saturating<i8>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i16>> for &Saturating<i16>
impl Add<&Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i16>> for Saturating<i16>
impl Add<&Saturating<i16>> for Saturating<i16>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i32>> for &Saturating<i32>
impl Add<&Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i32>> for Saturating<i32>
impl Add<&Saturating<i32>> for Saturating<i32>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i64>> for &Saturating<i64>
impl Add<&Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i64>> for Saturating<i64>
impl Add<&Saturating<i64>> for Saturating<i64>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i128>> for &Saturating<i128>
impl Add<&Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<i128>> for Saturating<i128>
impl Add<&Saturating<i128>> for Saturating<i128>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<isize>> for &Saturating<isize>
impl Add<&Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<isize>> for Saturating<isize>
impl Add<&Saturating<isize>> for Saturating<isize>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u8>> for &Saturating<u8>
impl Add<&Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u8>> for Saturating<u8>
impl Add<&Saturating<u8>> for Saturating<u8>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u16>> for &Saturating<u16>
impl Add<&Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u16>> for Saturating<u16>
impl Add<&Saturating<u16>> for Saturating<u16>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u32>> for &Saturating<u32>
impl Add<&Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u32>> for Saturating<u32>
impl Add<&Saturating<u32>> for Saturating<u32>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u64>> for &Saturating<u64>
impl Add<&Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u64>> for Saturating<u64>
impl Add<&Saturating<u64>> for Saturating<u64>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u128>> for &Saturating<u128>
impl Add<&Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<u128>> for Saturating<u128>
impl Add<&Saturating<u128>> for Saturating<u128>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<usize>> for &Saturating<usize>
impl Add<&Saturating<usize>> for &Saturating<usize>
1.74.0 (const: unstable) · Source§impl Add<&Saturating<usize>> for Saturating<usize>
impl Add<&Saturating<usize>> for Saturating<usize>
1.74.0 (const: unstable) · Source§impl Add<Saturating<i8>> for &Saturating<i8>
impl Add<Saturating<i8>> for &Saturating<i8>
1.74.0 (const: unstable) · Source§impl Add<Saturating<i16>> for &Saturating<i16>
impl Add<Saturating<i16>> for &Saturating<i16>
1.74.0 (const: unstable) · Source§impl Add<Saturating<i32>> for &Saturating<i32>
impl Add<Saturating<i32>> for &Saturating<i32>
1.74.0 (const: unstable) · Source§impl Add<Saturating<i64>> for &Saturating<i64>
impl Add<Saturating<i64>> for &Saturating<i64>
1.74.0 (const: unstable) · Source§impl Add<Saturating<i128>> for &Saturating<i128>
impl Add<Saturating<i128>> for &Saturating<i128>
1.74.0 (const: unstable) · Source§impl Add<Saturating<isize>> for &Saturating<isize>
impl Add<Saturating<isize>> for &Saturating<isize>
1.74.0 (const: unstable) · Source§impl Add<Saturating<u8>> for &Saturating<u8>
impl Add<Saturating<u8>> for &Saturating<u8>
1.74.0 (const: unstable) · Source§impl Add<Saturating<u16>> for &Saturating<u16>
impl Add<Saturating<u16>> for &Saturating<u16>
1.74.0 (const: unstable) · Source§impl Add<Saturating<u32>> for &Saturating<u32>
impl Add<Saturating<u32>> for &Saturating<u32>
1.74.0 (const: unstable) · Source§impl Add<Saturating<u64>> for &Saturating<u64>
impl Add<Saturating<u64>> for &Saturating<u64>
1.74.0 (const: unstable) · Source§impl Add<Saturating<u128>> for &Saturating<u128>
impl Add<Saturating<u128>> for &Saturating<u128>
1.74.0 (const: unstable) · Source§impl Add<Saturating<usize>> for &Saturating<usize>
impl Add<Saturating<usize>> for &Saturating<usize>
1.8.0 · Source§impl Add<Duration> for SystemTime
impl Add<Duration> for SystemTime
type Output = SystemTime
Source§impl Add<Duration> for NaiveDateTime
Add std::time::Duration to NaiveDateTime.
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.
type Output = NaiveDateTime
Source§impl Add<Duration> for NaiveTime
Add std::time::Duration to NaiveTime.
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<Months> for NaiveDate
Add Months to NaiveDate.
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.
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()
);type Output = NaiveDateTime
Source§impl Add<Days> for NaiveDate
Add Days to NaiveDate.
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.
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.
type Output = NaiveDateTime
Source§impl Add<FixedOffset> for NaiveDateTime
Add FixedOffset to NaiveDateTime.
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.
type Output = NaiveDateTime
Source§impl Add<FixedOffset> for NaiveTime
Add FixedOffset to NaiveTime.
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<TimeDelta> for NaiveDate
Add TimeDelta to NaiveDate.
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.
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());type Output = NaiveDateTime
Source§impl Add<TimeDelta> for NaiveTime
Add TimeDelta to NaiveTime.
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));§impl Add<Duration> for SystemTime
impl Add<Duration> for SystemTime
type Output = SystemTime
Source§impl<Tz> Add<Duration> for DateTime<Tz>where
Tz: TimeZone,
Add std::time::Duration to DateTime.
impl<Tz> Add<Duration> for 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<Tz> Add<Months> for DateTime<Tz>where
Tz: TimeZone,
Add Months to DateTime.
impl<Tz> Add<Months> for 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<Days> for DateTime<Tz>where
Tz: TimeZone,
Add Days to NaiveDateTime.
impl<Tz> Add<Days> for 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 DateTime<Tz>where
Tz: TimeZone,
Add FixedOffset to the datetime value of DateTime (offset remains unchanged).
impl<Tz> Add<FixedOffset> for 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<TimeDelta> for DateTime<Tz>where
Tz: TimeZone,
Add TimeDelta to DateTime.
impl<Tz> Add<TimeDelta> for 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<Ul, Ur> Add<UInt<Ur, B0>> for UInt<Ul, B0>
UInt<Ul, B0> + UInt<Ur, B0> = UInt<Ul + Ur, B0>
impl<Ul, Ur> Add<UInt<Ur, B0>> for UInt<Ul, B0>
UInt<Ul, B0> + UInt<Ur, B0> = UInt<Ul + Ur, B0>
Source§impl<Ul, Ur> Add<UInt<Ur, B0>> for UInt<Ul, B1>
UInt<Ul, B1> + UInt<Ur, B0> = UInt<Ul + Ur, B1>
impl<Ul, Ur> Add<UInt<Ur, B0>> for UInt<Ul, B1>
UInt<Ul, B1> + UInt<Ur, B0> = UInt<Ul + Ur, B1>
Source§impl<Ul, Ur> Add<UInt<Ur, B1>> for UInt<Ul, B0>
UInt<Ul, B0> + UInt<Ur, B1> = UInt<Ul + Ur, B1>
impl<Ul, Ur> Add<UInt<Ur, B1>> for UInt<Ul, B0>
UInt<Ul, B0> + UInt<Ur, B1> = UInt<Ul + Ur, B1>
Source§impl<Ul, Ur> Add<UInt<Ur, B1>> for UInt<Ul, B1>
UInt<Ul, B1> + UInt<Ur, B1> = UInt<(Ul + Ur) + B1, B0>
impl<Ul, Ur> Add<UInt<Ur, B1>> for UInt<Ul, B1>
UInt<Ul, B1> + UInt<Ur, B1> = UInt<(Ul + Ur) + B1, B0>