Struct ResultGas
pub struct ResultGas { /* private fields */ }Expand description
Gas accounting result from transaction execution.
Self-contained gas snapshot with all values needed for downstream consumers.
§Stored values
| Getter | Source | Description |
|---|---|---|
limit() | Gas::limit() | Transaction gas limit |
spent() | Gas::spent() = limit − remaining | Total gas consumed before refund |
inner_refunded() | Gas::refunded() as u64 | Gas refunded (capped per EIP-3529) |
floor_gas() | InitialAndFloorGas::floor_gas | EIP-7623 floor gas (0 if not applicable) |
intrinsic_gas() | InitialAndFloorGas::initial_gas | Initial tx overhead gas (0 for system calls) |
§Derived values
used()=max(spent − refunded, floor_gas)(the value that goes into receipts)remaining()=limit − spentspent_sub_refunded()=spent − refunded(before floor gas check)final_refunded()=spent − used()(effective refund after floor gas)
Implementations§
§impl ResultGas
impl ResultGas
pub const fn new(
limit: u64,
spent: u64,
refunded: u64,
floor_gas: u64,
intrinsic_gas: u64,
) -> ResultGas
pub const fn new( limit: u64, spent: u64, refunded: u64, floor_gas: u64, intrinsic_gas: u64, ) -> ResultGas
Creates a new ResultGas.
pub const fn spent(&self) -> u64
pub const fn spent(&self) -> u64
Returns the gas spent inside execution before any refund.
If you want final gas used, use used().
pub const fn intrinsic_gas(&self) -> u64
pub const fn intrinsic_gas(&self) -> u64
Returns the intrinsic gas.
pub const fn with_limit(self, limit: u64) -> ResultGas
pub const fn with_limit(self, limit: u64) -> ResultGas
Sets the limit field.
pub const fn with_spent(self, spent: u64) -> ResultGas
pub const fn with_spent(self, spent: u64) -> ResultGas
Sets the spent field.
pub const fn with_refunded(self, refunded: u64) -> ResultGas
pub const fn with_refunded(self, refunded: u64) -> ResultGas
Sets the refunded field.
pub const fn with_floor_gas(self, floor_gas: u64) -> ResultGas
pub const fn with_floor_gas(self, floor_gas: u64) -> ResultGas
Sets the floor_gas field.
pub const fn with_intrinsic_gas(self, intrinsic_gas: u64) -> ResultGas
pub const fn with_intrinsic_gas(self, intrinsic_gas: u64) -> ResultGas
Sets the intrinsic_gas field.
pub fn set_refunded(&mut self, refunded: u64)
pub fn set_refunded(&mut self, refunded: u64)
Sets the refunded field by mutable reference.
pub fn set_floor_gas(&mut self, floor_gas: u64)
pub fn set_floor_gas(&mut self, floor_gas: u64)
Sets the floor_gas field by mutable reference.
pub fn set_intrinsic_gas(&mut self, intrinsic_gas: u64)
pub fn set_intrinsic_gas(&mut self, intrinsic_gas: u64)
Sets the intrinsic_gas field by mutable reference.
pub const fn used(&self) -> u64
pub const fn used(&self) -> u64
Returns the final gas used: max(spent - refunded, floor_gas).
This is the value used for receipt cumulative_gas_used accumulation
and the per-transaction gas charge.
pub const fn spent_sub_refunded(&self) -> u64
pub const fn spent_sub_refunded(&self) -> u64
Returns the gas spent minus the refunded gas.
pub const fn inner_refunded(&self) -> u64
pub const fn inner_refunded(&self) -> u64
Returns the raw refund from EVM execution, before EIP-7623 floor gas adjustment.
This is the refunded field value (capped per EIP-3529 but not adjusted for floor gas).
See final_refunded() for the effective refund.
pub const fn final_refunded(&self) -> u64
pub const fn final_refunded(&self) -> u64
Returns the effective refund after EIP-7623 floor gas adjustment: spent - used().
When floor_gas kicks in, this may be less than inner_refunded().
Always satisfies: spent == used() + final_refunded().
Trait Implementations§
§impl<'de> Deserialize<'de> for ResultGas
impl<'de> Deserialize<'de> for ResultGas
§fn deserialize<__D>(
__deserializer: __D,
) -> Result<ResultGas, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<ResultGas, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
§impl Serialize for ResultGas
impl Serialize for ResultGas
§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
impl Copy for ResultGas
impl Eq for ResultGas
impl StructuralPartialEq for ResultGas
Auto Trait Implementations§
impl Freeze for ResultGas
impl RefUnwindSafe for ResultGas
impl Send for ResultGas
impl Sync for ResultGas
impl Unpin for ResultGas
impl UnsafeUnpin for ResultGas
impl UnwindSafe for ResultGas
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.