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§
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 (const: unstable) · Source§impl Add<Duration> for SystemTime
impl Add<Duration> for SystemTime
type Output = SystemTime
Source§impl<'a, A, B, S, S2, D, E> Add<&'a ArrayBase<S2, E>> for &'a ArrayBase<S, D>
Perform elementwise
addition
between references self and rhs,
and return the result as a new Array.
impl<'a, A, B, S, S2, D, E> Add<&'a ArrayBase<S2, E>> for &'a ArrayBase<S, D>
Perform elementwise
addition
between references self and rhs,
and return the result as a new Array.
If their shapes disagree, self and rhs is broadcast to their broadcast shape,
cloning the data if needed.
Panics if broadcasting isn’t possible.
Source§impl<'a, A, B, S, S2, D, E> Add<&'a ArrayBase<S2, E>> for ArrayBase<S, D>
Perform elementwise
addition
between self and reference rhs,
and return the result.
impl<'a, A, B, S, S2, D, E> Add<&'a ArrayBase<S2, E>> for ArrayBase<S, D>
Perform elementwise
addition
between self and reference rhs,
and return the result.
rhs must be an Array or ArcArray.
If their shapes disagree, self is broadcast to their broadcast shape,
cloning the data if needed.
Panics if broadcasting isn’t possible.
Source§impl<'a, A, B, S, S2, D, E> Add<ArrayBase<S2, E>> for &'a ArrayBase<S, D>
Perform elementwise
addition
between reference self and rhs,
and return the result.
impl<'a, A, B, S, S2, D, E> Add<ArrayBase<S2, E>> for &'a ArrayBase<S, D>
Perform elementwise
addition
between reference self and rhs,
and return the result.
rhs must be an Array or ArcArray.
If their shapes disagree, self is broadcast to their broadcast shape,
cloning the data if needed.
Panics if broadcasting isn’t possible.
Source§impl<'a, A, S, D, B> Add<B> for &'a ArrayBase<S, D>
Perform elementwise
addition
between the reference self and the scalar x,
and return the result as a new Array.
impl<'a, A, S, D, B> Add<B> for &'a ArrayBase<S, D>
Perform elementwise
addition
between the reference self and the scalar x,
and return the result as a new Array.
Source§impl<A, B, S, S2, D, E> Add<ArrayBase<S2, E>> for ArrayBase<S, D>
Perform elementwise
addition
between self and rhs,
and return the result.
impl<A, B, S, S2, D, E> Add<ArrayBase<S2, E>> for ArrayBase<S, D>
Perform elementwise
addition
between self and rhs,
and return the result.
self must be an Array or ArcArray.
If their shapes disagree, self is broadcast to their broadcast shape.
Panics if broadcasting isn’t possible.
Source§impl<A, S, D, B> Add<B> for ArrayBase<S, D>
Perform elementwise
addition
between self and the scalar x,
and return the result (based on self).
impl<A, S, D, B> Add<B> for ArrayBase<S, D>
Perform elementwise
addition
between self and the scalar x,
and return the result (based on self).
self must be an Array or ArcArray.