pub struct SequenceNumber(/* private fields */);
Implementations§
Source§impl SequenceNumber
impl SequenceNumber
pub fn one_before(&self) -> Option<SequenceNumber>
pub fn next(&self) -> SequenceNumber
Source§impl SequenceNumber
impl SequenceNumber
Sourcepub const MIN_VALID_INCL: SequenceNumber
pub const MIN_VALID_INCL: SequenceNumber
An inclusive lower limit on a valid sequence number.
A valid sequence number means an object, which this sequence number is assigned to, does not appear in a cancelled transaction.
Sourcepub const MAX_VALID_EXCL: SequenceNumber
pub const MAX_VALID_EXCL: SequenceNumber
An exclusive upper limit on a valid sequence number: sequence numbers strictly smaller than this limit are valid sequence numbers.
A valid sequence number means an object, which this sequence number is assigned to, does not appear in a cancelled transaction. Sequence numbers larger than this value are “special” and assigned to objects that appear in cancelled transactions.
Sourcepub const CANCELLED_READ: SequenceNumber
pub const CANCELLED_READ: SequenceNumber
Special sequence number that is assigned to objects which are accessed immutably in a cancelled transaction.
Sourcepub const CONGESTED_PRIOR_TO_GAS_PRICE_FEEDBACK: SequenceNumber
pub const CONGESTED_PRIOR_TO_GAS_PRICE_FEEDBACK: SequenceNumber
Special sequence number that was assigned to congested objects which cause transaction cancellations. Note that this special sequence number was only used prior to the introduction of a gas price feedback mechanism, but it is kept for backward compatibility.
Sourcepub const RANDOMNESS_UNAVAILABLE: SequenceNumber
pub const RANDOMNESS_UNAVAILABLE: SequenceNumber
Special sequence number that is assigned the randomness state object if randomness is unavailable.
pub const fn new() -> Self
pub const fn value(&self) -> u64
pub const fn from_u64(u: u64) -> Self
Sourcepub fn new_congested_with_suggested_gas_price(suggested_gas_price: u64) -> Self
pub fn new_congested_with_suggested_gas_price(suggested_gas_price: u64) -> Self
Returns a special sequence number used for congested shared objects:
SequenceNumber::MIN_CONGESTED.value()
+ suggested_gas_price
,
where suggested_gas_price
is embedded into a congested sequence
number to facilitate a gas price feedback mechanism for transactions
cancelled due to shared object congestion.
Sourcepub fn is_congested(&self) -> bool
pub fn is_congested(&self) -> bool
Check if this sequence number is congested, i.e., the corresponding object is the reason for transaction cancellation.
Sourcepub fn get_congested_version_suggested_gas_price(&self) -> u64
pub fn get_congested_version_suggested_gas_price(&self) -> u64
Returns the suggested_gas_price
embedded in this congested shared
object sequence number. The suggested_gas_price
here is used for a
gas price feedback mechanism for transactions cancelled due to
shared object congestion.
pub fn increment(&mut self)
pub fn increment_to(&mut self, next: SequenceNumber)
pub fn decrement(&mut self)
pub fn decrement_to(&mut self, prev: SequenceNumber)
Sourcepub fn lamport_increment(
inputs: impl IntoIterator<Item = SequenceNumber>,
) -> SequenceNumber
pub fn lamport_increment( inputs: impl IntoIterator<Item = SequenceNumber>, ) -> SequenceNumber
Returns a new sequence number that is greater than all SequenceNumber
s
in inputs
, assuming this operation will not overflow.
Sourcepub fn is_cancelled(&self) -> bool
pub fn is_cancelled(&self) -> bool
Checks if this sequence number is cancelled, i.e., the corresponding object appears in a cancelled transaction.
Trait Implementations§
Source§impl Arbitrary for SequenceNumber
impl Arbitrary for SequenceNumber
Source§type Parameters = <u64 as Arbitrary>::Parameters
type Parameters = <u64 as Arbitrary>::Parameters
arbitrary_with
accepts for configuration
of the generated Strategy
. Parameters must implement Default
.Source§type Strategy = Map<<u64 as Arbitrary>::Strategy, fn(_: u64) -> SequenceNumber>
type Strategy = Map<<u64 as Arbitrary>::Strategy, fn(_: u64) -> SequenceNumber>
Strategy
used to generate values of type Self
.Source§fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
fn arbitrary_with(_top: Self::Parameters) -> Self::Strategy
Source§impl Clone for SequenceNumber
impl Clone for SequenceNumber
Source§fn clone(&self) -> SequenceNumber
fn clone(&self) -> SequenceNumber
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SequenceNumber
impl Debug for SequenceNumber
Source§impl Default for SequenceNumber
impl Default for SequenceNumber
Source§fn default() -> SequenceNumber
fn default() -> SequenceNumber
Source§impl<'de> Deserialize<'de> for SequenceNumber
impl<'de> Deserialize<'de> for SequenceNumber
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl<'de> DeserializeAs<'de, SequenceNumber> for SequenceNumber
impl<'de> DeserializeAs<'de, SequenceNumber> for SequenceNumber
Source§fn deserialize_as<D>(deserializer: D) -> Result<SequenceNumber, D::Error>where
D: Deserializer<'de>,
fn deserialize_as<D>(deserializer: D) -> Result<SequenceNumber, D::Error>where
D: Deserializer<'de>,
Source§impl Display for SequenceNumber
impl Display for SequenceNumber
Source§impl From<SequenceNumber> for u64
impl From<SequenceNumber> for u64
Source§fn from(val: SequenceNumber) -> Self
fn from(val: SequenceNumber) -> Self
Source§impl From<SequenceNumber> for usize
impl From<SequenceNumber> for usize
Source§fn from(value: SequenceNumber) -> Self
fn from(value: SequenceNumber) -> Self
Source§impl From<u64> for SequenceNumber
impl From<u64> for SequenceNumber
Source§impl Hash for SequenceNumber
impl Hash for SequenceNumber
Source§impl JsonSchema for SequenceNumber
impl JsonSchema for SequenceNumber
Source§fn schema_name() -> String
fn schema_name() -> String
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(gen: &mut SchemaGenerator) -> Schema
fn json_schema(gen: &mut SchemaGenerator) -> Schema
§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref
keyword. Read moreSource§impl Ord for SequenceNumber
impl Ord for SequenceNumber
Source§fn cmp(&self, other: &SequenceNumber) -> Ordering
fn cmp(&self, other: &SequenceNumber) -> Ordering
1.21.0 · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for SequenceNumber
impl PartialEq for SequenceNumber
Source§impl PartialOrd for SequenceNumber
impl PartialOrd for SequenceNumber
Source§impl Serialize for SequenceNumber
impl Serialize for SequenceNumber
Source§impl SerializeAs<SequenceNumber> for SequenceNumber
impl SerializeAs<SequenceNumber> for SequenceNumber
Source§fn serialize_as<S>(
value: &SequenceNumber,
serializer: S,
) -> Result<S::Ok, S::Error>where
S: Serializer,
fn serialize_as<S>(
value: &SequenceNumber,
serializer: S,
) -> Result<S::Ok, S::Error>where
S: Serializer,
impl Copy for SequenceNumber
impl Eq for SequenceNumber
impl StructuralPartialEq for SequenceNumber
Auto Trait Implementations§
impl Freeze for SequenceNumber
impl RefUnwindSafe for SequenceNumber
impl Send for SequenceNumber
impl Sync for SequenceNumber
impl Unpin for SequenceNumber
impl UnwindSafe for SequenceNumber
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> ConvertTo<T> for Twhere
T: Send,
impl<T> ConvertTo<T> for Twhere
T: Send,
fn convert(self) -> Result<T, Error>
fn convert_unchecked(self) -> T
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.§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
§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<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
§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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a Request
§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered
].§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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§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.§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string
, but without panic on OOM.