Struct noble_contracts::GasMeter[][src]

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

Implementations

impl<T: Config> 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, amount: ChargedAmount)[src]

Refund previously charged gas back to the gas meter.

This can be used if a gas worst case estimation must be charged before performing a certain action. This way the difference can be refundend when the worst case did not happen.

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> Downcast for T where
    T: Any

impl<T> DowncastSync for T where
    T: Any + Send + Sync

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>,