Trait multiversx_sc_snippets::imports::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 EdwardsPoint
impl Sub for EdwardsPoint
type Output = EdwardsPoint
source§impl Sub for RistrettoPoint
impl Sub for RistrettoPoint
type Output = RistrettoPoint
source§impl Sub for VMCodeMetadata
impl Sub for VMCodeMetadata
type Output = VMCodeMetadata
source§impl Sub for multiversx_chain_vm::types::vm_esdt_local_role_flags::EsdtLocalRoleFlags
impl Sub for multiversx_chain_vm::types::vm_esdt_local_role_flags::EsdtLocalRoleFlags
type Output = EsdtLocalRoleFlags
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
source§impl Sub for SegmentFlags
impl Sub for SegmentFlags
type Output = SegmentFlags
source§impl Sub for SymbolFlags
impl Sub for SymbolFlags
type Output = SymbolFlags
source§impl Sub for WasmFeatures
impl Sub for WasmFeatures
type Output = WasmFeatures
source§impl Sub for CodeMetadata
impl Sub for CodeMetadata
type Output = CodeMetadata
source§impl Sub for multiversx_sc_snippets::imports::EsdtLocalRoleFlags
impl Sub for multiversx_sc_snippets::imports::EsdtLocalRoleFlags
type Output = EsdtLocalRoleFlags
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
source§impl Sub<Effects> for Style
impl Sub<Effects> for Style
§Examples
let style = anstyle::Style::new().bold().underline() - anstyle::Effects::BOLD.into();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>
source§impl<'a> Sub<EdwardsPoint> for &'a EdwardsPoint
impl<'a> Sub<EdwardsPoint> for &'a EdwardsPoint
type Output = EdwardsPoint
source§impl<'a> Sub<RistrettoPoint> for &'a RistrettoPoint
impl<'a> Sub<RistrettoPoint> for &'a RistrettoPoint
type Output = RistrettoPoint
source§impl<'a, 'b> Sub<&'b EdwardsPoint> for &'a EdwardsPoint
impl<'a, 'b> Sub<&'b EdwardsPoint> for &'a EdwardsPoint
type Output = EdwardsPoint
source§impl<'a, 'b> Sub<&'b RistrettoPoint> for &'a RistrettoPoint
impl<'a, 'b> Sub<&'b RistrettoPoint> for &'a RistrettoPoint
type Output = RistrettoPoint
source§impl<'a, 'b, M> Sub<&'b BigInt<M>> for &'a multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
impl<'a, 'b, M> Sub<&'b BigInt<M>> for &'a multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
source§impl<'a, 'b, M> Sub<&'b BigInt<M>> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<'a, 'b, M> Sub<&'b BigInt<M>> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<'a, 'b, M> Sub<&'b BigUint<M>> for &'a multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
impl<'a, 'b, M> Sub<&'b BigUint<M>> for &'a multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
source§impl<'a, 'b, M> Sub<&'b BigUint<M>> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<'a, 'b, M> Sub<&'b BigUint<M>> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<'a, M> Sub<u32> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<'a, M> Sub<u32> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<'a, M> Sub<u64> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<'a, M> Sub<u64> for &'a multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<'b> Sub<&'b EdwardsPoint> for EdwardsPoint
impl<'b> Sub<&'b EdwardsPoint> for EdwardsPoint
type Output = EdwardsPoint
source§impl<'b> Sub<&'b RistrettoPoint> for RistrettoPoint
impl<'b> Sub<&'b RistrettoPoint> for RistrettoPoint
type Output = RistrettoPoint
source§impl<'b, M> Sub<&'b BigUint<M>> for multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<'b, M> Sub<&'b BigUint<M>> for multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<M> Sub for multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
impl<M> Sub for multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
source§impl<M> Sub for multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<M> Sub for multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<M> Sub<BigInt<M>> for multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
impl<M> Sub<BigInt<M>> for multiversx_sc_snippets::imports::BigUint<M>where
M: ManagedTypeApi,
source§impl<M> Sub<BigUint<M>> for multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
impl<M> Sub<BigUint<M>> for multiversx_sc_snippets::imports::BigInt<M>where
M: ManagedTypeApi,
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.