pub struct RemoteScandal { /* private fields */ }Expand description
Scandal served by a remote scandal endpoint.
Implementations§
Source§impl RemoteScandal
impl RemoteScandal
Sourcepub fn new(base_url: Url) -> Result<Self, ScandalError>
pub fn new(base_url: Url) -> Result<Self, ScandalError>
Call the scandal service at base_url.
Sourcepub fn with_http(self, http: impl Into<ClientWithMiddleware>) -> Self
pub fn with_http(self, http: impl Into<ClientWithMiddleware>) -> Self
Use the shared client’s connection pool and transport configuration. Redirects must be disabled to protect bearer credentials.
Sourcepub fn with_caller(
self,
caller: TokenSource,
auth_url: &Url,
api_url: &Url,
) -> Result<Self, ScandalError>
pub fn with_caller( self, caller: TokenSource, auth_url: &Url, api_url: &Url, ) -> Result<Self, ScandalError>
Call scandal as caller: every request carries a scandal capability, the caller’s access
token narrowed by the authorization server at auth_url to scandal and the stack at
api_url, and renewed before it expires or when the caller’s token changes. Scandal
admits and attributes each request by it, and binds the spiral:// addresses a read
meets as the caller at the stack.
Trait Implementations§
Source§impl Clone for RemoteScandal
impl Clone for RemoteScandal
Source§impl Scandal for RemoteScandal
impl Scandal for RemoteScandal
Source§fn read_legacy_table<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 ReadLegacyTableRequest,
) -> Pin<Box<dyn Future<Output = Result<ByteStream, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_legacy_table<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 ReadLegacyTableRequest,
) -> Pin<Box<dyn Future<Output = Result<ByteStream, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Read a bounded legacy window from host-resolved metadata and scoped storage as Arrow IPC.
Source§fn list_functions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<FunctionInfo>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_functions<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<FunctionInfo>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
The SPQL functions this scandal can run.
Source§fn plan_scan<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scan: &'life1 Scan,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<ScanPlan, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn plan_scan<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
scan: &'life1 Scan,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<ScanPlan, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Plan a scan: its output schema, its filter support, and one split per fragment that
survives pruning by statistics, in stored order.
Source§fn read_scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
scan: &'life1 Scan,
split: &'life2 Split,
storage: &'life3 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<SplitRead, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn read_scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
scan: &'life1 Scan,
split: &'life2 Split,
storage: &'life3 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<SplitRead, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Read one split in stored order. Each batch reports the stored row it reached.
Source§fn take_rows<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
scan: &'life1 Scan,
takes: &'life2 [SplitTake],
storage: &'life3 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<SplitRead, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn take_rows<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
scan: &'life1 Scan,
takes: &'life2 [SplitTake],
storage: &'life3 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<SplitRead, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Read rows of planned splits by position, in request order: each take’s rows in the order
of its positions, a repeated position’s row again, the takes one after another. Positions
count the rows the version keeps in each split. A batch’s
next_row is how many of the request’s positions, across its
takes, the batches so far delivered.Source§fn read_blob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
blob: &'life1 Blob,
range: Option<Range<u64>>,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<ByteStream, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn read_blob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
blob: &'life1 Blob,
range: Option<Range<u64>>,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<ByteStream, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Read a Table-owned blob, or a range of it. A whole read checks the payload’s digest.
Source§fn stat_blob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
blob: &'life1 Blob,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<BlobStat, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn stat_blob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
blob: &'life1 Blob,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<BlobStat, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
What storage holds for a Table-owned blob, without reading its bytes.
Source§fn write_blob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
media_type: &'life2 str,
max_bytes: u64,
input: ByteStream,
) -> Pin<Box<dyn Future<Output = Result<Blob, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn write_blob<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
media_type: &'life2 str,
max_bytes: u64,
input: ByteStream,
) -> Pin<Box<dyn Future<Output = Result<Blob, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Store one payload as a dedicated blob of
table, before any row references it.Source§fn pack_blobs<'life0, 'life1, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
attempt: Option<Uuid>,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<RecordBatch>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn pack_blobs<'life0, 'life1, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
attempt: Option<Uuid>,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<RecordBatch>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Store the inline payloads of the
spql.Blob columns of input as blobs of table,
packed as append_rows packs them, under attempt’s directory when
it names one. Returns the rows in order, each such payload replaced by its address, once
every pack is stored.Source§fn start_blob_upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
attempt: Uuid,
media_type: &'life2 str,
part_bytes: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<BlobUpload, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn start_blob_upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
attempt: Uuid,
media_type: &'life2 str,
part_bytes: Option<u64>,
) -> Pin<Box<dyn Future<Output = Result<BlobUpload, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Start a multipart upload of one blob into
attempt’s directory of table, with the
binding the Tables API issued for that attempt. Parts hold part_bytes each, a power of
two, or DEFAULT_UPLOAD_PART_BYTES.Source§fn upload_blob_part<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
upload: &'life1 BlobUpload,
part: u32,
input: ByteStream,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<BlobPart, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn upload_blob_part<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
upload: &'life1 BlobUpload,
part: u32,
input: ByteStream,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<BlobPart, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Store part
part, counted from 1, of upload. Every part but the last holds exactly the
upload’s part size. Sending a part again replaces it.Source§fn complete_blob_upload<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
upload: &'life1 BlobUpload,
parts: &'life2 [BlobPart],
storage: &'life3 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<Blob, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn complete_blob_upload<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
upload: &'life1 BlobUpload,
parts: &'life2 [BlobPart],
storage: &'life3 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<Blob, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Join every part of
upload, in order from part 1, into its blob, whose digest merges
the parts’ hashes.Source§fn abort_blob_upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
upload: &'life1 BlobUpload,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<(), ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn abort_blob_upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
upload: &'life1 BlobUpload,
storage: &'life2 StorageBinding,
) -> Pin<Box<dyn Future<Output = Result<(), ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Discard the stored parts of
upload. An abort removes no stored object.Source§fn append_rows<'life0, 'life1, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
base: Option<Uuid>,
attempt: Option<Uuid>,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_rows<'life0, 'life1, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
base: Option<Uuid>,
attempt: Option<Uuid>,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Write rows as fragments for a successor of
base, or for the table’s first version
when there is none. Appends may run concurrently; finalize adds the kept receipts. Read moreSource§fn append_partition<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 AppendRowsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_partition<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 AppendRowsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Write one independent input stream, validating and retaining its physical properties.
Source§fn patch_rows<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 PatchRowsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn patch_rows<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 PatchRowsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Write new values for existing rows of
request.base, addressed by row ID in
request.row_id_column, as patch files. Prepare them on an edit base.Source§fn delete_rows<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 DeleteRowsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_rows<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 DeleteRowsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<Vec<FragmentReceipt>, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Record deletions of rows of
request.base, addressed by row ID. Prepare them on an
edit base.Source§fn attach_columns<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 AttachColumnsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<AttachedColumns, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn attach_columns<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 AttachColumnsRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<AttachedColumns, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Attach values of the columns
request.schema_changes adds, for every row one fragment
of request.base keeps, in stored order, as column files of that fragment. Prepare them
on an edit base.Source§fn write_aligned<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 WriteAlignedRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<AlignedFragment, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn write_aligned<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 WriteAlignedRequest,
schema: SchemaRef,
input: RecordBatchStream,
) -> Pin<Box<dyn Future<Output = Result<AlignedFragment, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Write the mirror of fragment
request.fragment_id of request.source from the rows the
source keeps there, in stored order. Prepare it on an aligned base.Source§fn plan_changes<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 PlanChangesRequest,
) -> Pin<Box<dyn Future<Output = Result<ChangePlan, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn plan_changes<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 PlanChangesRequest,
) -> Pin<Box<dyn Future<Output = Result<ChangePlan, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
How one version of a Table changed since an earlier one, from metadata only.
Source§fn finalize_write<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
base: &'life2 WriteBase,
receipts: &'life3 [FragmentReceipt],
) -> Pin<Box<dyn Future<Output = Result<PreparedWriteReceipt, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
fn finalize_write<'life0, 'life1, 'life2, 'life3, 'async_trait>(
&'life0 self,
table: &'life1 TableBinding,
base: &'life2 WriteBase,
receipts: &'life3 [FragmentReceipt],
) -> Pin<Box<dyn Future<Output = Result<PreparedWriteReceipt, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
Prepare a version from appended fragments. The host registers and publishes it.
Source§fn bind_projection<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
input: &'life1 Schema,
projection: &'life2 [NamedExpression],
) -> Pin<Box<dyn Future<Output = Result<SchemaRef, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn bind_projection<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
input: &'life1 Schema,
projection: &'life2 [NamedExpression],
) -> Pin<Box<dyn Future<Output = Result<SchemaRef, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
The output schema of named expressions over an input schema, without data.
Source§fn search_vectors<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 SearchVectorsRequest,
) -> Pin<Box<dyn Future<Output = Result<Evaluation, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn search_vectors<'life0, 'life1, 'async_trait>(
&'life0 self,
request: &'life1 SearchVectorsRequest,
) -> Pin<Box<dyn Future<Output = Result<Evaluation, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Search an exact index and refine candidates from its pinned source version.
Stream release stops further payload reads.
Source§fn evaluate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
projection: &'life1 [NamedExpression],
input_schema: SchemaRef,
input: RecordBatchStream,
tables: &'life2 [TableBinding],
) -> Pin<Box<dyn Future<Output = Result<Evaluation, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn evaluate<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
projection: &'life1 [NamedExpression],
input_schema: SchemaRef,
input: RecordBatchStream,
tables: &'life2 [TableBinding],
) -> Pin<Box<dyn Future<Output = Result<Evaluation, ScandalError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Evaluate named expressions over the caller’s batches, row for row. Blob reads use the
storage of
tables.Source§fn resolves_resources(&self) -> bool
fn resolves_resources(&self) -> bool
Whether this host resolves logical resource roots internally, including write scopes.
Auto Trait Implementations§
impl !RefUnwindSafe for RemoteScandal
impl !UnwindSafe for RemoteScandal
impl Freeze for RemoteScandal
impl Send for RemoteScandal
impl Sync for RemoteScandal
impl Unpin for RemoteScandal
impl UnsafeUnpin for RemoteScandal
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§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> ⓘ
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 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> ⓘ
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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§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,
Borrows
self and passes that borrow into the pipe function. Read moreSource§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,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§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
Source§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
Source§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
Borrows
self, then passes self.as_ref() into the pipe function.Source§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
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§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
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§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
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§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
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.