RpcStoreSchema

Struct RpcStoreSchema 

Source
pub struct RpcStoreSchema<R: Reader = Db> {
Show 18 fields pub epochs: DbMap<Key, Value, R>, pub checkpoint_summary: DbMap<Key, Value, R>, pub checkpoint_contents: DbMap<Key, Value, R>, pub checkpoint_seq_by_digest: DbMap<Key, Value, R>, pub transactions: DbMap<Key, Value, R>, pub tx_seq_by_digest: DbMap<Key, Value, R>, pub tx_metadata_by_seq: DbMap<Key, Value, R>, pub effects: DbMap<Key, Value, R>, pub events: DbMap<Key, Value, R>, pub objects: DbMap<Key, Value, R>, pub object_version_by_checkpoint: DbMap<Key, Value, R>, pub object_by_owner: DbMap<Key, Value, R>, pub object_by_type: DbMap<Key, Value, R>, pub balance: DbMap<Key, Value, R>, pub package_versions: DbMap<Key, Value, R>, pub transaction_bitmap: DbMap<Key, Value, R>, pub event_bitmap: DbMap<Key, Value, R>, pub pruning_watermark: DbMap<Key, Value, R>,
}
Expand description

Typed handles to every CF in the sui-rpc-store layout.

Fields§

§epochs: DbMap<Key, Value, R>

Per-epoch metadata: protocol version, gas price, start and end timestamps, and the epoch’s final checkpoint.

§checkpoint_summary: DbMap<Key, Value, R>

Signed checkpoint headers. The lightweight metadata served by most “fetch a checkpoint” requests; the heavier contents list lives in a separate CF.

§checkpoint_contents: DbMap<Key, Value, R>

The ordered list of executed transaction digests in each checkpoint.

§checkpoint_seq_by_digest: DbMap<Key, Value, R>

Resolves a checkpoint digest to its sequence number, which is then the key for every other checkpoint-keyed CF.

§transactions: DbMap<Key, Value, R>

Signed transactions, keyed by their assigned tx_seq.

§tx_seq_by_digest: DbMap<Key, Value, R>

Resolves a transaction digest to its assigned tx_seq.

§tx_metadata_by_seq: DbMap<Key, Value, R>

Per-transaction metadata: digest, the containing checkpoint, position within that checkpoint, event count, and the checkpoint’s timestamp.

§effects: DbMap<Key, Value, R>

The effects produced by each transaction, together with the set of objects loaded but unchanged during execution.

§events: DbMap<Key, Value, R>

The events emitted by each transaction.

§objects: DbMap<Key, Value, R>

Every version of every object that has ever existed. A prefix scan on the object id walks all versions in ascending order; a reverse prefix scan resolves the latest version (the greatest (id, version) row), the way the validator perpetual store serves “latest object” reads.

§object_version_by_checkpoint: DbMap<Key, Value, R>

An object’s version as of a checkpoint: keyed by (object id, checkpoint), a reverse prefix scan resolves the version live at the end of the most recent checkpoint, at or before the one queried, in which the object changed. Backs checkpoint-pinned historical reads that the version-keyed objects CF cannot answer.

§object_by_owner: DbMap<Key, Value, R>

Supports listing an owner’s objects, optionally filtered by Move type. Coin-like objects sort richest-first within each (owner, type) group so paginating valuable holdings is a forward prefix scan.

§object_by_type: DbMap<Key, Value, R>

Supports listing every live object of a given Move type, regardless of owner.

§balance: DbMap<Key, Value, R>

Tracks an account’s balance per coin type, combining the coin-derived component (sum of owned Coin<T> balances) and the accumulator-derived component into a single row merged from independent indexer pipelines.

§package_versions: DbMap<Key, Value, R>

Tracks every published version of a Move package and the storage id under which each version lives.

§transaction_bitmap: DbMap<Key, Value, R>

Inverted bitmap index over transaction-sequence space, supporting filtered transaction queries by indexed fields such as sender, called function, or input/changed object.

§event_bitmap: DbMap<Key, Value, R>

Inverted bitmap index over packed event-sequence space, supporting filtered event queries by event type, emitting module, sender, and similar indexed fields.

§pruning_watermark: DbMap<Key, Value, R>

Singleton holding the lowest still-available tx_seq, checkpoint_seq, and object version. Drives compaction filters and feeds available_range responses.

Implementations§

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_balance( &self, owner: SuiAddress, coin_type: TypeTag, ) -> Result<Option<Balance>, Error>

Look up the aggregated balance for (owner, coin_type).

Source

pub fn iter_balances_owned_by( &self, owner: SuiAddress, ) -> Result<Iter<'_, Key, Value>, Error>

Iterate every coin type that owner has a balance in.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_checkpoint_contents( &self, seq: CheckpointSequenceNumber, ) -> Result<Option<CheckpointContents>, Error>

Look up the contents of a checkpoint by sequence number.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_checkpoint_seq_by_digest( &self, digest: &CheckpointDigest, ) -> Result<Option<CheckpointSequenceNumber>, Error>

Look up the sequence number of the checkpoint identified by digest.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_checkpoint_summary( &self, seq: CheckpointSequenceNumber, ) -> Result<Option<VerifiedCheckpoint>, Error>

Look up the signed summary of a checkpoint by sequence number.

Decodes the stored BCS payloads and rewraps them as a VerifiedCheckpoint. The “verified” tag is asserted via new_unchecked: we trust what we put in our own store.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_effects( &self, tx_seq: u64, ) -> Result<Option<(TransactionEffects, Vec<ObjectKey>)>, Error>

Look up the effects produced by the transaction at the given assigned tx_seq, along with the set of objects loaded during execution but not modified by the tx.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_epoch(&self, epoch: EpochId) -> Result<Option<EpochInfo>, Error>

Look up the metadata for an epoch, decoding the embedded BCS SuiSystemState into the canonical sui_types::storage::EpochInfo.

Source

pub fn get_committee(&self, epoch: EpochId) -> Result<Option<Committee>, Error>

Look up the validator committee active during an epoch.

Derived from the stored SuiSystemState rather than kept in its own CF — the system state already carries the validator set, so a dedicated committee row would just be duplicate bytes. Returns Ok(None) if no epoch row exists or if the epoch row exists but no system_state_bcs has been observed yet.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_event_bitmap( &self, dimension_key: Vec<u8>, bucket: u64, ) -> Result<Option<RoaringBitmap>, Error>

Look up the event bitmap for (dimension_key, bucket) and return it deserialized.

Source

pub fn iter_event_bitmap_buckets( &self, dimension_key: Vec<u8>, ) -> Result<Iter<'_, Key, Value>, Error>

Iterate every bucket recorded against dimension_key, in ascending bucket order.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_events( &self, tx_seq: u64, ) -> Result<Option<TransactionEvents>, Error>

Look up the events emitted by the transaction at the given assigned tx_seq.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn iter_objects_owned_by_address( &self, owner: SuiAddress, ) -> Result<Iter<'_, Key, U64Varint>, Error>

Iterate over every live object owned (in the address-owner sense) by owner, in the natural sort order of the index: by Move type, then within each type by descending balance for coin-like objects, then by object id.

Source

pub fn iter_objects_owned_by_address_of_type( &self, owner: SuiAddress, type_filter: TypeFilter, ) -> Result<Iter<'_, Key, U64Varint>, Error>

Iterate over every live object owned (in the address-owner sense) by owner whose Move type matches type_filter. See type_filter::TypeFilter for the matching contract.

Source

pub fn iter_objects_owned_by_object( &self, parent: SuiAddress, ) -> Result<Iter<'_, Key, U64Varint>, Error>

Iterate over every live object owned (in the object-owner sense) by the parent object at the given id.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn iter_objects_of_type<'a>( &'a self, type_filter: &'a TypeFilter, ) -> Result<Iter<'a, Key, U64Varint>, Error>

Iterate over every live object whose Move type matches type_filter, regardless of owner. See TypeFilter for the matching contract.

TypeFilter encodes to the same leading bytes that Key uses for its type_ component, so the filter value passes through directly as the prefix.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_object_version_at_checkpoint( &self, id: ObjectID, checkpoint: u64, ) -> Result<Option<SequenceNumber>, Error>

Resolve the version an object had as of checkpoint.

The caller is responsible for confirming checkpoint is within this index’s available range; this method assumes it is.

Two steps:

  1. Floor scan — the greatest entry at or before checkpoint is the version live then: the row written at the most recent checkpoint, at or before the queried one, in which the object changed (or a restore/backfill floor row).
  2. Restore fallback — if no entry is at or before checkpoint, the object’s earliest entry is the only candidate, and it lies after checkpoint. If that row is a restore floor (from_restore set), the object predates the available window and was live then at that version. Otherwise it is a later change or creation, so the object did not exist as of checkpoint.

Returns Ok(None) when the object did not exist as of checkpoint (or its history there has been pruned). The returned version may point at a tombstone row in super::objects; use get_object_at_checkpoint to collapse that to “no live object”.

Source

pub fn get_object_at_checkpoint( &self, id: ObjectID, checkpoint: u64, ) -> Result<Option<Object>, Error>

Resolve the live object as of checkpoint, composing get_object_version_at_checkpoint with the version-keyed super::objects lookup.

Returns Ok(None) when the object did not exist as of checkpoint, or was deleted or wrapped at or before it (the resolved version points at a tombstone row).

Source

pub fn iter_object_versions_by_checkpoint( &self, id: ObjectID, ) -> Result<Iter<'_, Key, Value>, Error>

Iterate every (checkpoint, version) recorded for id, in ascending checkpoint order.

Source

pub fn get_latest_object_version( &self, id: ObjectID, ) -> Result<Option<SequenceNumber>, Error>

Resolve the latest version recorded for an object via this index: the version at its greatest-checkpoint row.

The checkpoint-unbounded counterpart to get_object_version_at_checkpoint: a reverse prefix scan takes the object’s highest-checkpoint row, whose version is the one live at the tip (a restore floor for an object that never changed in the window is itself that row). It agrees with the objects-CF reverse scan that backs get_object, since an object’s version increases monotonically with the checkpoints it changes in; this is offered as a convenience for callers already working through the checkpoint index.

The returned version may point at a tombstone row in super::objects (the object was deleted or wrapped and the removal has not yet been pruned). Returns Ok(None) when id has no row (it never existed, or its history has been fully pruned).

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_object_by_key( &self, id: ObjectID, version: SequenceNumber, ) -> Result<Option<Object>, Error>

Look up a specific version of an object, returning the live object if and only if the row at (id, version) is a live version. Tombstone rows and missing rows both return None; callers that need to distinguish the two should use get_object_status_by_key.

For the “latest live version” of an object id, use get_object, which reverse-scans this CF for the greatest version.

Source

pub fn get_object_status_by_key( &self, id: ObjectID, version: SequenceNumber, ) -> Result<Option<Status>, Error>

Look up a specific version of an object, returning the typed Status so callers can distinguish live versions from tombstones. Ok(None) means no row was written at (id, version).

Source

pub fn get_object(&self, id: ObjectID) -> Result<Option<Object>, Error>

Look up the latest live version of an object by id.

A single reverse prefix scan takes the object’s greatest (id, version) row and decodes it, returning the live object or None if that row is a tombstone. This mirrors the validator perpetual store’s get_object (reverse scan, then collapse Deleted / Wrapped to None). Returns Ok(None) when the object has no recorded version.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_package_storage_id( &self, original_id: ObjectID, version: u64, ) -> Result<Option<ObjectID>, Error>

Look up the on-chain storage id that holds a specific version of a package.

Source

pub fn iter_package_versions( &self, original_id: ObjectID, ) -> Result<Iter<'_, Key, Value>, Error>

Iterate every version of the package originally published at original_id, in ascending version order.

Source

pub fn get_package_at_checkpoint( &self, original_id: ObjectID, checkpoint: u64, ) -> Result<Option<(u64, ObjectID)>, Error>

Resolve the latest version of the package originally published at original_id that existed as of checkpoint, returning its (version, storage_id).

Walks every recorded version of the package — cheap, since even the most-upgraded mainnet packages have on the order of a hundred versions — and keeps the highest version whose publish checkpoint is at or before checkpoint. Restore-floor rows (no recorded publish checkpoint) count as having always existed, since they predate the available window.

Returns Ok(None) when no version of the package existed as of checkpoint (it was first published later, or the package is unknown to this store).

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_pruning_watermarks(&self) -> Result<Option<Watermarks>, Error>

Read the persisted pruning watermarks from disk.

Source

pub fn set_pruning_floor(&self, tx_seq_lo: u64)

Update the tx_seq floor used by the bitmap CFs’ compaction filters.

Callers that advance pruning should:

  1. Stage a write to the pruning_watermark CF via store.
  2. Commit the batch so the new watermarks are durable.
  3. Call this method with the new tx_seq_lo so the in-memory floor matches what’s on disk.
Source

pub fn refresh_pruning_atomics(&self) -> Result<(), Error>

Load the persisted pruning watermarks from disk into the in-memory bitmap floor.

Call once on startup so the bitmap compaction filters see the persisted floor instead of starting at zero (where they’d prune nothing).

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_transaction_bitmap( &self, dimension_key: Vec<u8>, bucket: u64, ) -> Result<Option<RoaringBitmap>, Error>

Look up the bitmap for (dimension_key, bucket) and return it deserialized.

Source

pub fn iter_transaction_bitmap_buckets( &self, dimension_key: Vec<u8>, ) -> Result<Iter<'_, Key, Value>, Error>

Iterate every bucket recorded against dimension_key, in ascending bucket order.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_transaction( &self, tx_seq: u64, ) -> Result<Option<(TransactionData, Vec<GenericSignature>)>, Error>

Look up the transaction data and signatures at the given assigned tx_seq.

Callers resolving from a TransactionDigest should first translate through tx_seq_by_digest.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_tx_metadata_by_seq( &self, tx_seq: u64, ) -> Result<Option<Metadata>, Error>

Look up the metadata for the transaction at the given assigned tx_seq.

Source

pub fn iter_tx_seq_digests( &self, from: u64, to_exclusive: u64, ) -> Result<impl Iterator<Item = Result<(u64, TransactionDigest), Error>> + '_, Error>

Iterate (tx_seq, digest) pairs over [from, to_exclusive), decoding only the digest from each row.

The pruner uses this to unindex tx_seq_by_digest for a pruned range. Iterating the table seeks straight to the first present row and visits only rows that exist, so a sparse range — or a floor of 0 when the lower bound is unknown — costs work proportional to the rows actually present, not to the width of the tx_seq interval.

Source§

impl<R: Reader> RpcStoreSchema<R>

Source

pub fn get_tx_seq_by_digest( &self, digest: &TransactionDigest, ) -> Result<Option<u64>, Error>

Look up the sequence number of the transaction identified by digest.

Trait Implementations§

Source§

impl Schema for RpcStoreSchema

Source§

fn cfs(opts: &CfOptionsResolver) -> Vec<CfDescriptor>

The column families this schema requires. Read more
Source§

fn open(db: &Db) -> Result<Self, OpenError>

Construct the schema struct against db. Read more
Source§

impl SchemaAtSnapshot for RpcStoreSchema

Source§

type At = RpcStoreSchema<Snapshot>

The projected schema body — typically MySchema<Snapshot> when the schema is parameterized by a Reader. Read more
Source§

fn at(&self, snap: &Snapshot) -> Self::At

Re-bind this schema at snap. Read more

Auto Trait Implementations§

§

impl<R> Freeze for RpcStoreSchema<R>
where R: Freeze,

§

impl<R> RefUnwindSafe for RpcStoreSchema<R>
where R: RefUnwindSafe,

§

impl<R> Send for RpcStoreSchema<R>
where R: Send,

§

impl<R> Sync for RpcStoreSchema<R>
where R: Sync,

§

impl<R> Unpin for RpcStoreSchema<R>
where R: Unpin,

§

impl<R> UnwindSafe for RpcStoreSchema<R>
where R: UnwindSafe,

Blanket Implementations§

§

impl<T> AggregateExpressionMethods for T

§

fn aggregate_distinct(self) -> Self::Output
where Self: DistinctDsl,

DISTINCT modifier for aggregate functions Read more
§

fn aggregate_all(self) -> Self::Output
where Self: AllDsl,

ALL modifier for aggregate functions Read more
§

fn aggregate_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add an aggregate function filter Read more
§

fn aggregate_order<O>(self, o: O) -> Self::Output
where Self: OrderAggregateDsl<O>,

Add an aggregate function order Read more
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Any for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

§

fn type_name(&self) -> &'static str

§

impl<T> AnySync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

§

impl<U> As for U

§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts 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 T
where T: 'a,

§

fn explicit(self, class: Class, tag: u32) -> TaggedParser<'a, Explicit, Self, E>

§

impl<'a, T, E> AsTaggedImplicit<'a, E> for T
where T: 'a,

§

fn implicit( self, class: Class, constructed: bool, tag: u32, ) -> TaggedParser<'a, Implicit, Self, E>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Converts Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Converts &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Converts &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSend for T
where T: Any + Send,

§

fn into_any_send(self: Box<T>) -> Box<dyn Any + Send>

Converts Box<Trait> (where Trait: DowncastSend) to Box<dyn Any + Send>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

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

§

fn into_any_sync(self: Box<T>) -> Box<dyn Any + Send + Sync>

Converts Box<Trait> (where Trait: DowncastSync) to Box<dyn Any + Send + Sync>, which can then be downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Converts Arc<Trait> (where Trait: DowncastSync) to Arc<Any>, which can then be downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. 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 T
where 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.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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

§

fn into_request(self) -> Request<T>

Wrap the input message T in a Request
§

impl<T> IntoRequest<T> for T

§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
§

impl<T> IntoSql for T

§

fn into_sql<T>(self) -> Self::Expression
where Self: Sized + AsExpression<T>, T: SqlType + TypedExpressionType,

Convert self to an expression for Diesel’s query builder. Read more
§

fn as_sql<'a, T>(&'a self) -> <&'a Self as AsExpression<T>>::Expression
where &'a Self: AsExpression<T>, T: SqlType + TypedExpressionType,

Convert &self to an expression for Diesel’s query builder. Read more
§

impl<L> LayerExt<L> for L

§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in [Layered].
§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

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
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
§

impl<T, Conn> RunQueryDsl<Conn> for T

§

fn execute<'conn, 'query>( self, conn: &'conn mut Conn, ) -> <Conn as AsyncConnectionCore>::ExecuteFuture<'conn, 'query>
where Conn: AsyncConnectionCore + Send, Self: ExecuteDsl<Conn> + 'query,

Executes the given command, returning the number of rows affected. Read more
§

fn load<'query, 'conn, U>( self, conn: &'conn mut Conn, ) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>>
where U: Send, Conn: AsyncConnectionCore, Self: LoadQuery<'query, Conn, U> + 'query,

Executes the given query, returning a Vec with the returned rows. Read more
§

fn load_stream<'conn, 'query, U>( self, conn: &'conn mut Conn, ) -> Self::LoadFuture<'conn>
where Conn: AsyncConnectionCore, U: 'conn, Self: LoadQuery<'query, Conn, U> + 'query,

Executes the given query, returning a [Stream] with the returned rows. Read more
§

fn get_result<'query, 'conn, U>( self, conn: &'conn mut Conn, ) -> AndThen<Self::LoadFuture<'conn>, LoadNext<Pin<Box<Self::Stream<'conn>>>>>
where U: Send + 'conn, Conn: AsyncConnectionCore, Self: LoadQuery<'query, Conn, U> + 'query,

Runs the command, and returns the affected row. Read more
§

fn get_results<'query, 'conn, U>( self, conn: &'conn mut Conn, ) -> AndThen<Self::LoadFuture<'conn>, TryCollect<Self::Stream<'conn>, Vec<U>>>
where U: Send, Conn: AsyncConnectionCore, Self: LoadQuery<'query, Conn, U> + 'query,

Runs the command, returning an Vec with the affected rows. Read more
§

fn first<'query, 'conn, U>( self, conn: &'conn mut Conn, ) -> AndThen<<Self::Output as LoadQuery<'query, Conn, U>>::LoadFuture<'conn>, LoadNext<Pin<Box<<Self::Output as LoadQuery<'query, Conn, U>>::Stream<'conn>>>>>
where U: Send + 'conn, Conn: AsyncConnectionCore, Self: LimitDsl, Self::Output: LoadQuery<'query, Conn, U> + Send + 'query,

Attempts to load a single record. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> ToAst for T

§

fn ast(self, begin: usize, end: usize) -> Spanned<Self>

§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

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 T
where U: TryFrom<T>,

Source§

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 T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WindowExpressionMethods for T

§

fn over(self) -> Self::Output
where Self: OverDsl,

Turn a function call into a window function call Read more
§

fn window_filter<P>(self, f: P) -> Self::Output
where P: AsExpression<Bool>, Self: FilterDsl<<P as AsExpression<Bool>>::Expression>,

Add a filter to the current window function Read more
§

fn partition_by<E>(self, expr: E) -> Self::Output
where Self: PartitionByDsl<E>,

Add a partition clause to the current window function Read more
§

fn window_order<E>(self, expr: E) -> Self::Output
where Self: OrderWindowDsl<E>,

Add a order clause to the current window function Read more
§

fn frame_by<E>(self, expr: E) -> Self::Output
where Self: FrameDsl<E>,

Add a frame clause to the current window function Read more
§

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
§

impl<T> ErasedDestructor for T
where T: 'static,

§

impl<T> MaybeSendSync for T