Skip to main content

Zero

Trait Zero 

Source
pub trait Zero: Sized {
    // Required methods
    fn zero() -> Self;
    fn set_zero(&mut self);
    fn is_zero(&self) -> bool;
}
Expand description

Defines an additive identity element for Self.

This is a pure identity-value trait: it provides the 0 and a zero-test, but does not require Add. The bundling of Add is upstream convention, not a law — 0 is equally the identity under subtraction (a - 0 = a) — so consumers state the operators they actually use explicitly (T: Zero + Add, T: Zero + Sub, …). Numeric code that needs the full operator set takes Num.

§Laws

a + 0 = a       ∀ a ∈ Self
0 + a = a       ∀ a ∈ Self

Required Methods§

Source

fn zero() -> Self

Returns the additive identity element of Self, 0.

§Purity

This function should return the same result at all times regardless of external mutable state, for example values stored in TLS or in static muts.

Source

fn set_zero(&mut self)

Sets self to the additive identity element of Self, 0.

Source

fn is_zero(&self) -> bool

Returns true if self is equal to the additive identity.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl Zero for f32

Source§

fn zero() -> f32

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for f64

Source§

fn zero() -> f64

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for i8

Source§

fn zero() -> i8

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for i16

Source§

fn zero() -> i16

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for i32

Source§

fn zero() -> i32

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for i64

Source§

fn zero() -> i64

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for i128

Source§

fn zero() -> i128

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for isize

Source§

fn zero() -> isize

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for u8

Source§

fn zero() -> u8

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for u16

Source§

fn zero() -> u16

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for u32

Source§

fn zero() -> u32

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for u64

Source§

fn zero() -> u64

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for u128

Source§

fn zero() -> u128

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl Zero for usize

Source§

fn zero() -> usize

Source§

fn set_zero(&mut self)

Source§

fn is_zero(&self) -> bool

Source§

impl<T: Zero> Zero for Saturating<T>
where Saturating<T>: Add<Output = Saturating<T>>,

Source§

fn is_zero(&self) -> bool

Source§

fn set_zero(&mut self)

Source§

fn zero() -> Self

Source§

impl<T: Zero> Zero for Wrapping<T>
where Wrapping<T>: Add<Output = Wrapping<T>>,

Source§

fn is_zero(&self) -> bool

Source§

fn set_zero(&mut self)

Source§

fn zero() -> Self

Implementors§