[][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
[src]

impl<T> Send for GasMeter<T> where
    T: Send
[src]

impl<T> Sync for GasMeter<T> where
    T: Sync
[src]

impl<T> Unpin for GasMeter<T> where
    T: Unpin
[src]

impl<T> UnwindSafe for GasMeter<T> where
    T: UnwindSafe
[src]

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> Instrument 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
    T: From<Outer>,
    Outer: AsRef<T> + AsMut<T> + From<T>, 
[src]

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

Get a reference to the inner from the outer.

pub 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
    T: Bounded,
    S: TryInto<T>, 

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