Skip to main content

SyncClient

Struct SyncClient 

Source
pub struct SyncClient { /* private fields */ }
Expand description

Sync client — manages the WebSocket connection to Origin.

The client runs as a background Tokio task. It:

  1. Connects to Origin via WebSocket
  2. Sends handshake with JWT + vector clock + shape subscriptions
  3. Pushes accumulated CRDT deltas
  4. Receives shape snapshots and incremental deltas
  5. Handles rejections via CompensationRegistry
  6. Auto-reconnects with exponential backoff on disconnect

Implementations§

Source§

impl SyncClient

Source

pub async fn build_delta_pushes( &self, pending: &[PendingDelta], peer_id: u64, ) -> Vec<DeltaPushMsg>

Build DeltaPush messages from pending deltas.

Respects the flow control window: returns at most next_batch_size() deltas. Each message includes a CRC32C checksum of the delta payload for integrity verification at Origin.

peer_id is passed in rather than held on the client: it changes when a collision refusal rotates this replica’s identity, and a delta pushed under the previous one is refused again.

Source

pub async fn record_push(&self, mutation_ids: &[u64])

Record that deltas were pushed (update flow control in-flight tracking).

Source

pub async fn handle_delta_ack(&self, ack: &DeltaAckMsg)

Process a DeltaAck from Origin.

Source

pub async fn handle_delta_reject(&self, reject: &DeltaRejectMsg)

Process a DeltaReject from Origin.

Source§

impl SyncClient

Source

pub async fn build_handshake(&self, identity: &LiteIdentity) -> HandshakeMsg

Build a handshake message from current state and the instance identity.

The identity is a parameter rather than client state because it changes while the client is alive: a reported fork replaces it wholesale, and a peer-id collision rotates part of it. A handshake built from a cached copy would re-present the identity Origin just rejected.

Source

pub async fn handle_handshake_ack(&self, ack: &HandshakeAckMsg) -> bool

Process a handshake acknowledgment from Origin.

Source§

impl SyncClient

Source

pub fn build_ping(&self) -> Option<SyncFrame>

Build a ping frame.

Source

pub fn backoff_duration(&self, attempt: u32) -> Duration

Calculate backoff duration for reconnection attempt N.

Source

pub async fn update_pending_stats(&self, count: usize, bytes: usize)

Update pending queue stats in the flow controller. Called from the push loop after reading pending deltas.

Source

pub async fn is_queue_full(&self) -> bool

Check if the pending queue is at capacity (flow control).

Source

pub async fn sync_metrics(&self) -> SyncMetricsSnapshot

Get a snapshot of sync metrics for monitoring/health.

Source

pub async fn reset_flow_control(&self)

Reset flow controller on reconnect.

Source§

impl SyncClient

Source

pub async fn handle_shape_snapshot(&self, msg: &ShapeSnapshotMsg)

Process a ShapeSnapshot from Origin.

Marks the shape as snapshot-loaded and re-bases the sequence tracker so that gap detection restarts from the snapshot LSN rather than any stale watermark from before the resync. Also clears the resync gate so a future gap on this or another shape can trigger a new request.

Source

pub async fn handle_shape_delta(&self, msg: &ShapeDeltaMsg)

Process a ShapeDelta from Origin.

Source

pub async fn handle_clock_sync(&self, msg: &VectorClockSyncMsg)

Process a VectorClockSync from Origin.

Source

pub async fn check_sequence_gap( &self, shape_id: &str, lsn: u64, ) -> Option<ResyncRequestMsg>

Check an incoming ShapeDelta for sequence gaps.

For each shape, we track the last LSN received. If the incoming LSN is not contiguous (gap > 1), this indicates missing deltas in the stream. Returns Some(ResyncRequestMsg) if a gap is detected, None otherwise.

Source

pub async fn reset_sequence_tracking(&self)

Reset sequence tracking state on reconnect.

Source

pub async fn set_pending_resync(&self, msg: ResyncRequestMsg)

Store a pending re-sync request (set by gap detection in receive loop).

Source

pub async fn take_pending_resync(&self) -> Option<ResyncRequestMsg>

Take the pending re-sync request (consumed by delta push loop).

Source

pub async fn set_pending_array_ack(&self, msg: ArrayAckMsg)

Merge an ArrayAck into the pending-ack map.

Per-array, only the ack with the highest HLC is kept — ack_hlc_bytes is stored in the same 18-byte big-endian layout used by nodedb_array::sync::Hlc, so byte-wise comparison gives the correct temporal ordering. This means no ack is silently lost: if two acks arrive for the same array before the push loop drains them, the one with the higher frontier is retained, which is exactly what Origin needs to advance its GC cursor.

Source

pub async fn drain_pending_array_acks(&self) -> Vec<ArrayAckMsg>

Drain all pending ArrayAcks (consumed by the push loop).

Returns all per-array acks accumulated since the last drain. The map is cleared so new acks can accumulate for the next tick.

Source

pub async fn reset_array_catchups(&self, requests: Vec<ArrayCatchupRequestMsg>)

Replace every pending ArrayCatchupRequest with requests.

Called once per session after the handshake: the new round supersedes any request the previous session did not send.

Source

pub async fn queue_array_catchup(&self, request: ArrayCatchupRequestMsg)

Queue an ArrayCatchupRequest for the next push tick, replacing an unsent request for the same array.

Source

pub async fn drain_array_catchups(&self) -> Vec<ArrayCatchupRequestMsg>

Drain every pending ArrayCatchupRequest in array-name order (consumed by the push loop).

Source§

impl SyncClient

Source

pub async fn queue_row_push_reject(&self, msg: &RowPushMsg, error: &NodeDbError)

Queue the refusal of msg, which failed to apply with error.

Source

pub async fn drain_row_push_rejects(&self) -> Vec<RowPushRejectMsg>

Take every queued refusal.

Source

pub async fn requeue_row_push_rejects(&self, unsent: Vec<RowPushRejectMsg>)

Put back unsent, drained refusals a failed send did not deliver, ahead of any queued since. Refusals past the cap are logged and not sent.

Source§

impl SyncClient

Source

pub fn new(config: SyncConfig) -> Self

Create a new sync client (does not connect yet).

The client holds no copy of the instance’s identity. lite_id, epoch, and the Loro peer id are read from the delegate at the moment each frame is built, because all three change while a client is alive — a peer-id rotation or a fork recovery replaces them — and a cached copy would keep stamping outbound frames with the identity Origin just refused.

Source

pub fn with_flow_control( config: SyncConfig, flow_config: FlowControlConfig, ) -> Self

Create a new sync client with custom flow control config.

Source

pub async fn state(&self) -> SyncState

Current connection state.

Source

pub async fn set_state(&self, new_state: SyncState)

Set the connection state.

Source

pub fn set_compensation_handler(&self, handler: Arc<dyn CompensationHandler>)

Register a compensation handler.

Source

pub fn shapes(&self) -> &Arc<Mutex<ShapeManager>> ⓘ

Access the shape manager (for subscribing/unsubscribing).

Source

pub fn clock(&self) -> &Arc<Mutex<VectorClock>> ⓘ

Access the vector clock.

Source

pub fn compensation(&self) -> &Arc<CompensationRegistry> ⓘ

Access the compensation registry.

Source

pub fn config(&self) -> &SyncConfig

Access config.

Source

pub fn flow(&self) -> &Arc<Mutex<FlowController>> ⓘ

Access the flow controller.

Source

pub fn metrics(&self) -> &Arc<SyncMetrics> ⓘ

Access the sync metrics.

Source

pub async fn producer_id(&self) -> u64

Producer ID assigned by Origin, or 0 if the handshake has not yet completed.

Source

pub async fn accepted_epoch(&self) -> u64

Accepted epoch echoed by Origin, or 0 if the handshake has not yet completed.

Source

pub async fn load_producer_state(&self, producer_id: u64, accepted_epoch: u64)

Load producer state (producer_id + accepted_epoch) from previously persisted values. Called on reconnect so the client knows its identity before the next handshake.

Source

pub fn is_fenced(&self) -> bool

Whether Origin fenced this producer.

When true, the sync loop should disconnect and reconnect. The epoch is only bumped on db-open (via LiteIdentity), so reconnecting alone does not change the epoch. A fenced producer requires the operator to restart the process to mint a fresh epoch.

Source

pub fn set_fenced(&self)

Mark this producer as fenced by Origin.

Also unsets the push_paused_for_auth flag so the disconnect path is not confused with an auth-pause: fencing is a permanent producer-epoch rejection, not a token issue.

Source

pub fn clear_fenced(&self)

Clear the fenced flag. Called on reconnect so the client can attempt re-registration; if Origin still fences it the flag is set again.

Source

pub async fn admit_row_push( &self, peer_id: u64, collection: &str, sequence: u64, ) -> bool

Returns true when this row push should be applied.

Every client → server engine path is protected by Origin’s sync_admit gate (producer/epoch/seq); there is no equivalent for server → client RowPush frames. Without this gate, a re-delivered frame is applied unconditionally: a duplicate delivery of a stale post-image can resurrect a row a later, un-replayed write already deleted, and an out-of-order pair can leave the older post-image as the final state.

sequence == 0 is the unsequenced sentinel — it mirrors how Origin treats producer_id == 0 as unidentified in sync_gate.rs, marking DDL-managed system rows (retention policies, alerts) that were never assigned a per-collection sequence. Such a frame carries no ordering information to dedup against, so it is always applied and never allowed to move the watermark (doing so would let a later legitimately-sequenced frame for the same collection be skipped as “stale”).

Source§

impl SyncClient

Source

pub async fn should_refresh_token(&self) -> bool

Check if the JWT token needs proactive refresh (at 80% of lifetime).

Returns true if a refresh should be initiated. Called from the ping loop to piggyback on the keepalive timer.

Source

pub async fn is_refresh_backoff_elapsed(&self) -> bool

Check if a token refresh attempt is currently allowed given the backoff.

Returns false if the minimum retry interval since the last attempt has not elapsed yet. Called by push_control_messages before invoking initiate_token_refresh.

Source

pub async fn initiate_token_refresh(&self) -> Option<TokenRefreshMsg>

Initiate a token refresh via the token provider.

Marks a refresh as in-flight, calls the provider with a 30-second timeout, and returns the new token message on success. On failure (provider returns None or times out) the token_refresh_pending flag is cleared, push_paused_for_auth is kept true (push remains paused), and the backoff doubles for the next attempt.

Source

pub async fn handle_token_refresh_ack(&self, ack: &TokenRefreshAckMsg)

Handle a TokenRefreshAck from Origin.

Source

pub async fn pause_for_auth(&self)

Pause delta push due to auth failure. Called when Origin rejects with PermissionDenied, indicating the token has expired.

Source

pub async fn is_push_paused_for_auth(&self) -> bool

Check if push is paused for auth.

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> ArchivePointee for T

Source§

type ArchivedMetadata = ()

The archived version of the pointer metadata for this type.
Source§

fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata

Converts some archived metadata to the pointer metadata for itself.
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
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

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

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

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

impl<T> LayoutRaw for T

Source§

fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>

Returns the layout of the type.
Source§

impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
where T: SharedNiching<N1, N2>, N1: Niching<T>, N2: Niching<T>,

Source§

unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool

Returns whether the given value has been niched. Read more
Source§

fn resolve_niched(out: Place<NichedOption<T, N1>>)

Writes data to out indicating that a T is niched.
Source§

impl<T> NodeDbMarker for T
where T: Send + Sync + ?Sized,

Source§

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

Source§

fn fg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the foreground set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like red() and green(), which have the same functionality but are pithier.

§Example

Set foreground color to white using fg():

use yansi::{Paint, Color};

painted.fg(Color::White);

Set foreground color to white using white().

use yansi::Paint;

painted.white();
Source§

fn primary(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Primary].

§Example
println!("{}", value.primary());
Source§

fn fixed(&self, color: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Fixed].

§Example
println!("{}", value.fixed(color));
Source§

fn rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the fg() set to [Color :: Rgb].

§Example
println!("{}", value.rgb(r, g, b));
Source§

fn black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Black].

§Example
println!("{}", value.black());
Source§

fn red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Red].

§Example
println!("{}", value.red());
Source§

fn green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Green].

§Example
println!("{}", value.green());
Source§

fn yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Yellow].

§Example
println!("{}", value.yellow());
Source§

fn blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Blue].

§Example
println!("{}", value.blue());
Source§

fn magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Magenta].

§Example
println!("{}", value.magenta());
Source§

fn cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: Cyan].

§Example
println!("{}", value.cyan());
Source§

fn white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: White].

§Example
println!("{}", value.white());
Source§

fn bright_black(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlack].

§Example
println!("{}", value.bright_black());
Source§

fn bright_red(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightRed].

§Example
println!("{}", value.bright_red());
Source§

fn bright_green(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightGreen].

§Example
println!("{}", value.bright_green());
Source§

fn bright_yellow(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightYellow].

§Example
println!("{}", value.bright_yellow());
Source§

fn bright_blue(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightBlue].

§Example
println!("{}", value.bright_blue());
Source§

fn bright_magenta(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.bright_magenta());
Source§

fn bright_cyan(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightCyan].

§Example
println!("{}", value.bright_cyan());
Source§

fn bright_white(&self) -> Painted<&T>

Returns self with the fg() set to [Color :: BrightWhite].

§Example
println!("{}", value.bright_white());
Source§

fn bg(&self, value: Color) -> Painted<&T>

Returns a styled value derived from self with the background set to value.

This method should be used rarely. Instead, prefer to use color-specific builder methods like on_red() and on_green(), which have the same functionality but are pithier.

§Example

Set background color to red using fg():

use yansi::{Paint, Color};

painted.bg(Color::Red);

Set background color to red using on_red().

use yansi::Paint;

painted.on_red();
Source§

fn on_primary(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Primary].

§Example
println!("{}", value.on_primary());
Source§

fn on_fixed(&self, color: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Fixed].

§Example
println!("{}", value.on_fixed(color));
Source§

fn on_rgb(&self, r: u8, g: u8, b: u8) -> Painted<&T>

Returns self with the bg() set to [Color :: Rgb].

§Example
println!("{}", value.on_rgb(r, g, b));
Source§

fn on_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Black].

§Example
println!("{}", value.on_black());
Source§

fn on_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Red].

§Example
println!("{}", value.on_red());
Source§

fn on_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Green].

§Example
println!("{}", value.on_green());
Source§

fn on_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Yellow].

§Example
println!("{}", value.on_yellow());
Source§

fn on_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Blue].

§Example
println!("{}", value.on_blue());
Source§

fn on_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Magenta].

§Example
println!("{}", value.on_magenta());
Source§

fn on_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: Cyan].

§Example
println!("{}", value.on_cyan());
Source§

fn on_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: White].

§Example
println!("{}", value.on_white());
Source§

fn on_bright_black(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlack].

§Example
println!("{}", value.on_bright_black());
Source§

fn on_bright_red(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightRed].

§Example
println!("{}", value.on_bright_red());
Source§

fn on_bright_green(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightGreen].

§Example
println!("{}", value.on_bright_green());
Source§

fn on_bright_yellow(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightYellow].

§Example
println!("{}", value.on_bright_yellow());
Source§

fn on_bright_blue(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightBlue].

§Example
println!("{}", value.on_bright_blue());
Source§

fn on_bright_magenta(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightMagenta].

§Example
println!("{}", value.on_bright_magenta());
Source§

fn on_bright_cyan(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightCyan].

§Example
println!("{}", value.on_bright_cyan());
Source§

fn on_bright_white(&self) -> Painted<&T>

Returns self with the bg() set to [Color :: BrightWhite].

§Example
println!("{}", value.on_bright_white());
Source§

fn attr(&self, value: Attribute) -> Painted<&T>

Enables the styling Attribute value.

This method should be used rarely. Instead, prefer to use attribute-specific builder methods like bold() and underline(), which have the same functionality but are pithier.

§Example

Make text bold using attr():

use yansi::{Paint, Attribute};

painted.attr(Attribute::Bold);

Make text bold using using bold().

use yansi::Paint;

painted.bold();
Source§

fn bold(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Bold].

§Example
println!("{}", value.bold());
Source§

fn dim(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Dim].

§Example
println!("{}", value.dim());
Source§

fn italic(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Italic].

§Example
println!("{}", value.italic());
Source§

fn underline(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Underline].

§Example
println!("{}", value.underline());

Returns self with the attr() set to [Attribute :: Blink].

§Example
println!("{}", value.blink());

Returns self with the attr() set to [Attribute :: RapidBlink].

§Example
println!("{}", value.rapid_blink());
Source§

fn invert(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Invert].

§Example
println!("{}", value.invert());
Source§

fn conceal(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Conceal].

§Example
println!("{}", value.conceal());
Source§

fn strike(&self) -> Painted<&T>

Returns self with the attr() set to [Attribute :: Strike].

§Example
println!("{}", value.strike());
Source§

fn quirk(&self, value: Quirk) -> Painted<&T>

Enables the yansi Quirk value.

This method should be used rarely. Instead, prefer to use quirk-specific builder methods like mask() and wrap(), which have the same functionality but are pithier.

§Example

Enable wrapping using .quirk():

use yansi::{Paint, Quirk};

painted.quirk(Quirk::Wrap);

Enable wrapping using wrap().

use yansi::Paint;

painted.wrap();
Source§

fn mask(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Mask].

§Example
println!("{}", value.mask());
Source§

fn wrap(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Wrap].

§Example
println!("{}", value.wrap());
Source§

fn linger(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Linger].

§Example
println!("{}", value.linger());
Source§

fn clear(&self) -> Painted<&T>

👎Deprecated since 1.0.1:

renamed to resetting() due to conflicts with Vec::clear(). The clear() method will be removed in a future release.

Returns self with the quirk() set to [Quirk :: Clear].

§Example
println!("{}", value.clear());
Source§

fn resetting(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Resetting].

§Example
println!("{}", value.resetting());
Source§

fn bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: Bright].

§Example
println!("{}", value.bright());
Source§

fn on_bright(&self) -> Painted<&T>

Returns self with the quirk() set to [Quirk :: OnBright].

§Example
println!("{}", value.on_bright());
Source§

fn whenever(&self, value: Condition) -> Painted<&T>

Conditionally enable styling based on whether the Condition value applies. Replaces any previous condition.

See the crate level docs for more details.

§Example

Enable styling painted only when both stdout and stderr are TTYs:

use yansi::{Paint, Condition};

painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);
Source§

fn new(self) -> Painted<Self>
where Self: Sized,

Create a new Painted with a default Style. Read more
Source§

fn paint<S>(&self, style: S) -> Painted<&Self>
where S: Into<Style>,

Apply a style wholesale to self. Any previous style is replaced. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

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

Initializes a with the given initializer. Read more
Source§

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

Dereferences the given pointer. Read more
Source§

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

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

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

impl<T> Pointee for T

Source§

type Metadata = ()

The metadata type for pointers and references to this type.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

Source§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
Source§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
Source§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
Source§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
Source§

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

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.
Source§

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

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

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