Trait cfx_vm_interpreter::CostType
source · 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> + 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
Object Safety§
This trait is not object safe.