pub struct SpendingCounter(u32);
Expand description

Spending counter associated to an account.

every time the owner is spending from an account, the counter is incremented. A matching counter needs to be used in the spending phase to make sure we have non-replayability of a transaction.

Note that the leading LANES_BITS bits are used to codify the implicit lane.

Tuple Fields§

§0: u32

Implementations§

source§

impl SpendingCounter

source

const UNLANED_MASK: u32 = 536_870_911u32

source

const LANED_MASK: u32 = 3_758_096_384u32

source

pub fn lane(self) -> usize

source

pub fn unlaned_counter(self) -> u32

source

pub fn new(lane: usize, counter: u32) -> Result<Self, Error>

source

pub fn zero() -> Self

source

pub fn increment(self) -> Self

Increment the counter within it own lane. the lane of where this counter apply, cannot change through the incrementation procedure

if the counter bits overflow, it will automatically be wrapped, so that the lane remains identical

source

pub fn increment_nth(self, n: u32) -> Self

source

pub fn to_bytes(self) -> [u8; 4]

source

pub fn from_bytes(bytes: [u8; 4]) -> Self

Trait Implementations§

source§

impl Arbitrary for SpendingCounter

§

type Parameters = ()

The type of parameters that arbitrary_with accepts for configuration of the generated Strategy. Parameters must implement Default.
§

type Strategy = BoxedStrategy<SpendingCounter>

The type of Strategy used to generate values of type Self.
source§

fn arbitrary_with(args: <Self as Arbitrary>::Parameters) -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). The strategy is passed the arguments given in args. Read more
§

fn arbitrary() -> Self::Strategy

Generates a Strategy for producing arbitrary values of type the implementing type (Self). Read more
source§

impl Arbitrary for SpendingCounter

source§

fn arbitrary<G: Gen>(gen: &mut G) -> Self

§

fn shrink(&self) -> Box<dyn Iterator<Item = Self>, Global>

source§

impl Clone for SpendingCounter

source§

fn clone(&self) -> SpendingCounter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SpendingCounter

source§

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

Formats the value using the given formatter. Read more
source§

impl From<SpendingCounter> for u32

source§

fn from(v: SpendingCounter) -> u32

Converts to this type from the input type.
source§

impl From<u32> for SpendingCounter

source§

fn from(v: u32) -> Self

Converts to this type from the input type.
source§

impl PartialEq<SpendingCounter> for SpendingCounter

source§

fn eq(&self, other: &SpendingCounter) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for SpendingCounter

source§

impl Eq for SpendingCounter

source§

impl StructuralEq for SpendingCounter

source§

impl StructuralPartialEq for SpendingCounter

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more