[][src]Struct pallet_contracts::GasMeter

pub struct GasMeter<T: Trait> { /* fields omitted */ }

Implementations

impl<T: Trait> GasMeter<T>[src]

pub fn new(gas_limit: Gas) -> Self[src]

pub fn charge<Tok: Token<T>>(
    &mut self,
    metadata: &Tok::Metadata,
    token: Tok
) -> GasMeterResult
[src]

Account for used gas.

Amount is calculated by the given token.

Returns OutOfGas if there is not enough gas or addition of the specified amount of gas has lead to overflow. On success returns Proceed.

NOTE that amount is always consumed, i.e. if there is not enough gas then the counter will be set to zero.

pub fn refund(&mut self, gas: Gas)[src]

pub fn with_nested<R, F: FnOnce(Option<&mut GasMeter<T>>) -> R>(
    &mut self,
    amount: Gas,
    f: F
) -> R
[src]

Allocate some amount of gas and perform some work with a newly created nested gas meter.

Invokes f with either the gas meter that has amount gas left or with None, if this gas meter has not enough gas to allocate given amount.

All unused gas in the nested gas meter is returned to this gas meter.

pub fn gas_spent(&self) -> Gas[src]

Returns how much gas was used.

pub fn gas_left(&self) -> Gas[src]

Returns how much gas left from the initial budget.

pub fn into_dispatch_result<R, E>(
    self,
    result: Result<R, E>
) -> DispatchResultWithPostInfo where
    E: Into<ExecError>, 
[src]

Turn this GasMeter into a DispatchResult that contains the actually used gas.

Auto Trait Implementations

impl<T> RefUnwindSafe for GasMeter<T> where
    T: RefUnwindSafe

impl<T> Send for GasMeter<T> where
    T: Send

impl<T> Sync for GasMeter<T> where
    T: Sync

impl<T> Unpin for GasMeter<T> where
    T: Unpin

impl<T> UnwindSafe for GasMeter<T> where
    T: UnwindSafe

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> CheckedConversion for T[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> IsType<T> for T[src]

impl<T, Outer> IsWrappedBy<Outer> for T where
    Outer: AsRef<T> + AsMut<T> + From<T>,
    T: From<Outer>, 
[src]

fn from_ref(outer: &Outer) -> &T[src]

Get a reference to the inner from the outer.

fn from_mut(outer: &mut Outer) -> &mut T[src]

Get a mutable reference to the inner from the outer.

impl<T> MaybeRefUnwindSafe for T where
    T: RefUnwindSafe

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> SaturatedConversion for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.

impl<S, T> UncheckedInto<T> for S where
    T: UncheckedFrom<S>, 
[src]

impl<T, S> UniqueSaturatedInto<T> for S where
    S: TryInto<T>,
    T: Bounded

impl<V, T> VZip<V> for T where
    V: MultiLane<T>,