pub trait CostType:
Sized
+ From<usize>
+ Copy
+ Send
+ Mul<Output = Self>
+ Div<Output = Self>
+ Add<Output = Self>
+ Sub<Output = Self>
+ Shr<usize, Output = Self>
+ Shl<usize, Output = Self>
+ AddAssign
+ SubAssign
+ Ord
+ Debug {
// Required methods
fn as_u256(&self) -> U256;
fn from_u256(val: U256) -> Result<Self>;
fn as_usize(&self) -> usize;
fn overflow_add(self, other: Self) -> (Self, bool);
fn overflow_mul(self, other: Self) -> (Self, bool);
fn overflow_mul_shr(self, other: Self, shr: usize) -> (Self, bool);
}
Expand description
Cost calculation type. For low-gas usage we calculate costs using usize instead of U256
Required Methods§
Sourcefn overflow_add(self, other: Self) -> (Self, bool)
fn overflow_add(self, other: Self) -> (Self, bool)
Add with overflow
Sourcefn overflow_mul(self, other: Self) -> (Self, bool)
fn overflow_mul(self, other: Self) -> (Self, bool)
Multiple with overflow
Sourcefn overflow_mul_shr(self, other: Self, shr: usize) -> (Self, bool)
fn overflow_mul_shr(self, other: Self, shr: usize) -> (Self, bool)
Single-step full multiplication and shift: (self*other) >> shr
Should not overflow on intermediate steps
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.