Trait snarkvm_debug::prelude::string::Sub
1.0.0 · source · pub trait Sub<Rhs = Self> {
type Output;
// Required method
fn sub(self, rhs: Rhs) -> Self::Output;
}Expand description
The subtraction operator -.
Note that Rhs is Self by default, but this is not mandatory. For
example, std::time::SystemTime implements Sub<Duration>, which permits
operations of the form SystemTime = SystemTime - Duration.
Examples
Subtractable points
use std::ops::Sub;
#[derive(Debug, Copy, Clone, PartialEq)]
struct Point {
x: i32,
y: i32,
}
impl Sub for Point {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
Self {
x: self.x - other.x,
y: self.y - other.y,
}
}
}
assert_eq!(Point { x: 3, y: 3 } - Point { x: 2, y: 3 },
Point { x: 1, y: 0 });Implementing Sub with generics
Here is an example of the same Point struct implementing the Sub trait
using generics.
use std::ops::Sub;
#[derive(Debug, PartialEq)]
struct Point<T> {
x: T,
y: T,
}
// Notice that the implementation uses the associated type `Output`.
impl<T: Sub<Output = T>> Sub for Point<T> {
type Output = Self;
fn sub(self, other: Self) -> Self::Output {
Point {
x: self.x - other.x,
y: self.y - other.y,
}
}
}
assert_eq!(Point { x: 2, y: 3 } - Point { x: 1, y: 0 },
Point { x: 1, y: 3 });Required Associated Types§
Required Methods§
Implementors§
1.74.0 · source§impl Sub for Saturating<i8>
impl Sub for Saturating<i8>
type Output = Saturating<i8>
1.74.0 · source§impl Sub for Saturating<i16>
impl Sub for Saturating<i16>
type Output = Saturating<i16>
1.74.0 · source§impl Sub for Saturating<i32>
impl Sub for Saturating<i32>
type Output = Saturating<i32>
1.74.0 · source§impl Sub for Saturating<i64>
impl Sub for Saturating<i64>
type Output = Saturating<i64>
1.74.0 · source§impl Sub for Saturating<i128>
impl Sub for Saturating<i128>
type Output = Saturating<i128>
1.74.0 · source§impl Sub for Saturating<isize>
impl Sub for Saturating<isize>
type Output = Saturating<isize>
1.74.0 · source§impl Sub for Saturating<u8>
impl Sub for Saturating<u8>
type Output = Saturating<u8>
1.74.0 · source§impl Sub for Saturating<u16>
impl Sub for Saturating<u16>
type Output = Saturating<u16>
1.74.0 · source§impl Sub for Saturating<u32>
impl Sub for Saturating<u32>
type Output = Saturating<u32>
1.74.0 · source§impl Sub for Saturating<u64>
impl Sub for Saturating<u64>
type Output = Saturating<u64>
1.74.0 · source§impl Sub for Saturating<u128>
impl Sub for Saturating<u128>
type Output = Saturating<u128>
1.74.0 · source§impl Sub for Saturating<usize>
impl Sub for Saturating<usize>
type Output = Saturating<usize>
source§impl Sub for Effects
impl Sub for Effects
Examples
let effects = (anstyle::Effects::BOLD | anstyle::Effects::UNDERLINE) - anstyle::Effects::BOLD;
assert_eq!(format!("{:?}", effects), "Effects(UNDERLINE)");source§impl Sub for CipherCtxFlags
impl Sub for CipherCtxFlags
type Output = CipherCtxFlags
source§impl Sub for CMSOptions
impl Sub for CMSOptions
type Output = CMSOptions
source§impl Sub for Pkcs7Flags
impl Sub for Pkcs7Flags
type Output = Pkcs7Flags
source§impl Sub for ExtensionContext
impl Sub for ExtensionContext
type Output = ExtensionContext
source§impl Sub for ShutdownState
impl Sub for ShutdownState
type Output = ShutdownState
source§impl Sub for SslOptions
impl Sub for SslOptions
type Output = SslOptions
source§impl Sub for SslSessionCacheMode
impl Sub for SslSessionCacheMode
type Output = SslSessionCacheMode
source§impl Sub for SslVerifyMode
impl Sub for SslVerifyMode
type Output = SslVerifyMode
source§impl Sub for X509CheckFlags
impl Sub for X509CheckFlags
type Output = X509CheckFlags
source§impl Sub for X509VerifyFlags
impl Sub for X509VerifyFlags
type Output = X509VerifyFlags
1.74.0 · source§impl Sub<&Saturating<i8>> for &Saturating<i8>
impl Sub<&Saturating<i8>> for &Saturating<i8>
1.74.0 · source§impl Sub<&Saturating<i8>> for Saturating<i8>
impl Sub<&Saturating<i8>> for Saturating<i8>
1.74.0 · source§impl Sub<&Saturating<i16>> for &Saturating<i16>
impl Sub<&Saturating<i16>> for &Saturating<i16>
1.74.0 · source§impl Sub<&Saturating<i16>> for Saturating<i16>
impl Sub<&Saturating<i16>> for Saturating<i16>
1.74.0 · source§impl Sub<&Saturating<i32>> for &Saturating<i32>
impl Sub<&Saturating<i32>> for &Saturating<i32>
1.74.0 · source§impl Sub<&Saturating<i32>> for Saturating<i32>
impl Sub<&Saturating<i32>> for Saturating<i32>
1.74.0 · source§impl Sub<&Saturating<i64>> for &Saturating<i64>
impl Sub<&Saturating<i64>> for &Saturating<i64>
1.74.0 · source§impl Sub<&Saturating<i64>> for Saturating<i64>
impl Sub<&Saturating<i64>> for Saturating<i64>
1.74.0 · source§impl Sub<&Saturating<i128>> for &Saturating<i128>
impl Sub<&Saturating<i128>> for &Saturating<i128>
1.74.0 · source§impl Sub<&Saturating<i128>> for Saturating<i128>
impl Sub<&Saturating<i128>> for Saturating<i128>
1.74.0 · source§impl Sub<&Saturating<isize>> for &Saturating<isize>
impl Sub<&Saturating<isize>> for &Saturating<isize>
1.74.0 · source§impl Sub<&Saturating<isize>> for Saturating<isize>
impl Sub<&Saturating<isize>> for Saturating<isize>
1.74.0 · source§impl Sub<&Saturating<u8>> for &Saturating<u8>
impl Sub<&Saturating<u8>> for &Saturating<u8>
1.74.0 · source§impl Sub<&Saturating<u8>> for Saturating<u8>
impl Sub<&Saturating<u8>> for Saturating<u8>
1.74.0 · source§impl Sub<&Saturating<u16>> for &Saturating<u16>
impl Sub<&Saturating<u16>> for &Saturating<u16>
1.74.0 · source§impl Sub<&Saturating<u16>> for Saturating<u16>
impl Sub<&Saturating<u16>> for Saturating<u16>
1.74.0 · source§impl Sub<&Saturating<u32>> for &Saturating<u32>
impl Sub<&Saturating<u32>> for &Saturating<u32>
1.74.0 · source§impl Sub<&Saturating<u32>> for Saturating<u32>
impl Sub<&Saturating<u32>> for Saturating<u32>
1.74.0 · source§impl Sub<&Saturating<u64>> for &Saturating<u64>
impl Sub<&Saturating<u64>> for &Saturating<u64>
1.74.0 · source§impl Sub<&Saturating<u64>> for Saturating<u64>
impl Sub<&Saturating<u64>> for Saturating<u64>
1.74.0 · source§impl Sub<&Saturating<u128>> for &Saturating<u128>
impl Sub<&Saturating<u128>> for &Saturating<u128>
1.74.0 · source§impl Sub<&Saturating<u128>> for Saturating<u128>
impl Sub<&Saturating<u128>> for Saturating<u128>
1.74.0 · source§impl Sub<&Saturating<usize>> for &Saturating<usize>
impl Sub<&Saturating<usize>> for &Saturating<usize>
1.74.0 · source§impl Sub<&Saturating<usize>> for Saturating<usize>
impl Sub<&Saturating<usize>> for Saturating<usize>
1.8.0 · source§impl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
type Output = SystemTime
§impl Sub<SystemTime> for OffsetDateTime
impl Sub<SystemTime> for OffsetDateTime
source§impl Sub<Effects> for Style
impl Sub<Effects> for Style
Examples
let style = anstyle::Style::new().bold().underline() - anstyle::Effects::BOLD.into();§impl Sub<DateTime<Fixed>> for SystemTime
impl Sub<DateTime<Fixed>> for SystemTime
§impl Sub<Duration> for SystemTime
impl Sub<Duration> for SystemTime
type Output = SystemTime
§impl Sub<OffsetDateTime> for SystemTime
impl Sub<OffsetDateTime> for SystemTime
1.74.0 · source§impl<'a> Sub<Saturating<i8>> for &'a Saturating<i8>
impl<'a> Sub<Saturating<i8>> for &'a Saturating<i8>
1.74.0 · source§impl<'a> Sub<Saturating<i16>> for &'a Saturating<i16>
impl<'a> Sub<Saturating<i16>> for &'a Saturating<i16>
1.74.0 · source§impl<'a> Sub<Saturating<i32>> for &'a Saturating<i32>
impl<'a> Sub<Saturating<i32>> for &'a Saturating<i32>
1.74.0 · source§impl<'a> Sub<Saturating<i64>> for &'a Saturating<i64>
impl<'a> Sub<Saturating<i64>> for &'a Saturating<i64>
1.74.0 · source§impl<'a> Sub<Saturating<i128>> for &'a Saturating<i128>
impl<'a> Sub<Saturating<i128>> for &'a Saturating<i128>
1.74.0 · source§impl<'a> Sub<Saturating<isize>> for &'a Saturating<isize>
impl<'a> Sub<Saturating<isize>> for &'a Saturating<isize>
1.74.0 · source§impl<'a> Sub<Saturating<u8>> for &'a Saturating<u8>
impl<'a> Sub<Saturating<u8>> for &'a Saturating<u8>
1.74.0 · source§impl<'a> Sub<Saturating<u16>> for &'a Saturating<u16>
impl<'a> Sub<Saturating<u16>> for &'a Saturating<u16>
1.74.0 · source§impl<'a> Sub<Saturating<u32>> for &'a Saturating<u32>
impl<'a> Sub<Saturating<u32>> for &'a Saturating<u32>
1.74.0 · source§impl<'a> Sub<Saturating<u64>> for &'a Saturating<u64>
impl<'a> Sub<Saturating<u64>> for &'a Saturating<u64>
1.74.0 · source§impl<'a> Sub<Saturating<u128>> for &'a Saturating<u128>
impl<'a> Sub<Saturating<u128>> for &'a Saturating<u128>
1.74.0 · source§impl<'a> Sub<Saturating<usize>> for &'a Saturating<usize>
impl<'a> Sub<Saturating<usize>> for &'a Saturating<usize>
§impl<'a, 'b, F> Sub<&'a Evaluations<F>> for &'b Evaluations<F>where
F: PrimeField,
impl<'a, 'b, F> Sub<&'a Evaluations<F>> for &'b Evaluations<F>where
F: PrimeField,
§impl<'a, P> Sub<&'a Projective<P>> for Projective<P>where
P: TwistedEdwardsParameters,
impl<'a, P> Sub<&'a Projective<P>> for Projective<P>where
P: TwistedEdwardsParameters,
§impl<'a, P> Sub<&'a mut Projective<P>> for Projective<P>where
P: TwistedEdwardsParameters,
impl<'a, P> Sub<&'a mut Projective<P>> for Projective<P>where
P: TwistedEdwardsParameters,
§impl<E> Sub for snarkvm_debug::prelude::group::Group<E>where
E: Environment,
impl<E> Sub for snarkvm_debug::prelude::group::Group<E>where
E: Environment,
§impl<E> Sub for snarkvm_debug::prelude::string::Field<E>where
E: Environment,
impl<E> Sub for snarkvm_debug::prelude::string::Field<E>where
E: Environment,
§impl<E> Sub<&Group<E>> for snarkvm_debug::prelude::group::Group<E>where
E: Environment,
impl<E> Sub<&Group<E>> for snarkvm_debug::prelude::group::Group<E>where
E: Environment,
§impl<E> Sub<&Field<E>> for snarkvm_debug::prelude::string::Field<E>where
E: Environment,
impl<E> Sub<&Field<E>> for snarkvm_debug::prelude::string::Field<E>where
E: Environment,
§impl<E, I> Sub for snarkvm_debug::prelude::string::Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Sub for snarkvm_debug::prelude::string::Integer<E, I>where
E: Environment,
I: IntegerType,
§impl<E, I> Sub for Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Sub for Integer<E, I>where
E: Environment,
I: IntegerType,
§impl<E, I> Sub<&Integer<E, I>> for snarkvm_debug::prelude::string::Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Sub<&Integer<E, I>> for snarkvm_debug::prelude::string::Integer<E, I>where
E: Environment,
I: IntegerType,
§impl<E, I> Sub<&Integer<E, I>> for &Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Sub<&Integer<E, I>> for &Integer<E, I>where
E: Environment,
I: IntegerType,
§impl<E, I> Sub<&Integer<E, I>> for Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Sub<&Integer<E, I>> for Integer<E, I>where
E: Environment,
I: IntegerType,
§impl<E, I> Sub<Integer<E, I>> for &Integer<E, I>where
E: Environment,
I: IntegerType,
impl<E, I> Sub<Integer<E, I>> for &Integer<E, I>where
E: Environment,
I: IntegerType,
§impl<F> Sub for LinearCombination<F>where
F: PrimeField,
impl<F> Sub for LinearCombination<F>where
F: PrimeField,
§impl<F> Sub for Variable<F>where
F: PrimeField,
impl<F> Sub for Variable<F>where
F: PrimeField,
§impl<F> Sub<&LinearCombination<F>> for &LinearCombination<F>where
F: PrimeField,
impl<F> Sub<&LinearCombination<F>> for &LinearCombination<F>where
F: PrimeField,
§impl<F> Sub<&LinearCombination<F>> for &Variable<F>where
F: PrimeField,
impl<F> Sub<&LinearCombination<F>> for &Variable<F>where
F: PrimeField,
§impl<F> Sub<&LinearCombination<F>> for LinearCombination<F>where
F: PrimeField,
impl<F> Sub<&LinearCombination<F>> for LinearCombination<F>where
F: PrimeField,
§impl<F> Sub<&LinearCombination<F>> for Variable<F>where
F: PrimeField,
impl<F> Sub<&LinearCombination<F>> for Variable<F>where
F: PrimeField,
§impl<F> Sub<&Variable<F>> for &Variable<F>where
F: PrimeField,
impl<F> Sub<&Variable<F>> for &Variable<F>where
F: PrimeField,
§impl<F> Sub<&Variable<F>> for LinearCombination<F>where
F: PrimeField,
impl<F> Sub<&Variable<F>> for LinearCombination<F>where
F: PrimeField,
§impl<F> Sub<&Variable<F>> for Variable<F>where
F: PrimeField,
impl<F> Sub<&Variable<F>> for Variable<F>where
F: PrimeField,
§impl<F> Sub<LinearCombination<F>> for &LinearCombination<F>where
F: PrimeField,
impl<F> Sub<LinearCombination<F>> for &LinearCombination<F>where
F: PrimeField,
§impl<F> Sub<LinearCombination<F>> for &Variable<F>where
F: PrimeField,
impl<F> Sub<LinearCombination<F>> for &Variable<F>where
F: PrimeField,
§impl<F> Sub<LinearCombination<F>> for Variable<F>where
F: PrimeField,
impl<F> Sub<LinearCombination<F>> for Variable<F>where
F: PrimeField,
§impl<F> Sub<Variable<F>> for &LinearCombination<F>where
F: PrimeField,
impl<F> Sub<Variable<F>> for &LinearCombination<F>where
F: PrimeField,
§impl<F> Sub<Variable<F>> for &Variable<F>where
F: PrimeField,
impl<F> Sub<Variable<F>> for &Variable<F>where
F: PrimeField,
§impl<F> Sub<Variable<F>> for LinearCombination<F>where
F: PrimeField,
impl<F> Sub<Variable<F>> for LinearCombination<F>where
F: PrimeField,
§impl<P> Sub for Projective<P>where
P: TwistedEdwardsParameters,
impl<P> Sub for Projective<P>where
P: TwistedEdwardsParameters,
§impl<P> Sub<&&Projective<P>> for Projective<P>where
P: TwistedEdwardsParameters,
impl<P> Sub<&&Projective<P>> for Projective<P>where
P: TwistedEdwardsParameters,
source§impl<Ul, Bl, Ur> Sub<Ur> for UInt<Ul, Bl>
impl<Ul, Bl, Ur> Sub<Ur> for UInt<Ul, Bl>
Subtracting unsigned integers. We just do our PrivateSub and then Trim the output.