Struct gear_core::gas::GasCounter

source ·
pub struct GasCounter { /* private fields */ }
Expand description

Gas counter with some predefined maximum gas.

Copy and Clone traits aren’t implemented for the type (however could be) in order to make the data only moveable, preventing explicit and implicit copying.

Implementations§

source§

impl GasCounter

source

pub fn new(initial_amount: u64) -> Self

New limited gas counter with initial gas to spend.

source

pub fn charge<T: Into<u64> + Copy>(&mut self, amount: T) -> ChargeResult

Account for used gas.

If there is no enough gas, then makes saturating charge and returns NotEnough. Else charges gas and returns Enough.

source

pub fn charge_if_enough<T: Into<u64> + Copy>( &mut self, amount: T ) -> ChargeResult

Account for used gas.

If there is no enough gas, then does nothing and returns ChargeResult::NotEnough. Else charges gas and returns ChargeResult::Enough.

source

pub fn reduce(&mut self, amount: u64) -> ChargeResult

Increase gas by amount.

Called when gas unreservation is occurred. Reduce gas by amount.

Called when message is sent to another program, so the gas amount is sent to receiving program. Or called when gas reservation is occurred.

In case of gas reservation: We don’t increase burn counter because GasTree manipulation is handled by separated function

source

pub fn left(&self) -> u64

Report how much gas is left.

source

pub fn burned(&self) -> u64

Report how much gas is burned.

source

pub fn to_amount(&self) -> GasAmount

Get gas amount.

Trait Implementations§

source§

impl Debug for GasCounter

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> JsonSchemaMaybe for T