pub struct MemoryClient { /* private fields */ }Expand description
In-memory client for testing purposes. Stores all data in memory using hash tables.
Implementations§
Source§impl MemoryClient
impl MemoryClient
Sourcepub fn new(ctx: XetContext) -> Arc<Self> ⓘ
pub fn new(ctx: XetContext) -> Arc<Self> ⓘ
Create a new in-memory client.
Sourcepub fn set_lifecycle_tag_deletion(&self, on: bool)
pub fn set_lifecycle_tag_deletion(&self, on: bool)
Toggle lifecycle-tag deletion mode (see Self::lifecycle_tag_deletion).
Sourcepub async fn insert_random_xorb(&self, xorb: RandomXorb) -> Result<MerkleHash>
pub async fn insert_random_xorb(&self, xorb: RandomXorb) -> Result<MerkleHash>
Inserts a RandomXorb into the client’s storage and registers it in the shard for XORB block lookups. Returns the xorb hash.
This allows storing XORBs that generate their data on-the-fly, enabling testing with massive files without storing all data in memory.
Sourcepub async fn insert_random_lazy_file(
&self,
term_spec: &[(u64, (u64, u64))],
chunk_size: usize,
) -> Result<RandomFileContents>
pub async fn insert_random_lazy_file( &self, term_spec: &[(u64, (u64, u64))], chunk_size: usize, ) -> Result<RandomFileContents>
Upload a random file using lazy generation with RandomXorb.
This uses RandomXorb to generate XORB data on-the-fly, allowing testing
with massive files without storing all data in memory.
Each term is defined as (xorb_seed, (chunk_start, chunk_end)) where:
xorb_seeddetermines the random data for that XORBchunk_startandchunk_enddefine the range of chunks to include
Source§impl MemoryClient
impl MemoryClient
Sourcepub async fn get_reconstruction_v1(
&self,
file_id: &MerkleHash,
bytes_range: Option<FileRange>,
) -> Result<Option<QueryReconstructionResponse>>
pub async fn get_reconstruction_v1( &self, file_id: &MerkleHash, bytes_range: Option<FileRange>, ) -> Result<Option<QueryReconstructionResponse>>
V1 reconstruction: returns per-range presigned URLs.
Sourcepub async fn get_reconstruction_v2(
&self,
file_id: &MerkleHash,
bytes_range: Option<FileRange>,
) -> Result<Option<QueryReconstructionResponseV2>>
pub async fn get_reconstruction_v2( &self, file_id: &MerkleHash, bytes_range: Option<FileRange>, ) -> Result<Option<QueryReconstructionResponseV2>>
V2 reconstruction: returns per-xorb multi-range fetch descriptors.
Trait Implementations§
Source§impl Client for MemoryClient
impl Client for MemoryClient
fn get_file_reconstruction_info<'life0, 'life1, 'async_trait>(
&'life0 self,
file_hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<Option<(MDBFileInfo, Option<MerkleHash>)>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_for_global_dedup_shard<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_prefix: &'life1 str,
chunk_hash: &'life2 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn acquire_upload_permit<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ConnectionPermit>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn acquire_upload_permit<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ConnectionPermit>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn upload_shard<'life0, 'async_trait>(
&'life0 self,
shard_data: Bytes,
_permit: ConnectionPermit,
progress_callback: Option<ShardUploadProgressCallback>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn upload_shard<'life0, 'async_trait>(
&'life0 self,
shard_data: Bytes,
_permit: ConnectionPermit,
progress_callback: Option<ShardUploadProgressCallback>,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn upload_xorb<'life0, 'life1, 'async_trait>(
&'life0 self,
_prefix: &'life1 str,
serialized_xorb_object: SerializedXorbObject,
progress_callback: Option<ProgressCallback>,
_permit: ConnectionPermit,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upload_xorb<'life0, 'life1, 'async_trait>(
&'life0 self,
_prefix: &'life1 str,
serialized_xorb_object: SerializedXorbObject,
progress_callback: Option<ProgressCallback>,
_permit: ConnectionPermit,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_reconstruction<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
bytes_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryReconstructionResponseV2>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_reconstruction<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
bytes_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryReconstructionResponseV2>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn batch_get_reconstruction<'life0, 'life1, 'async_trait>(
&'life0 self,
file_ids: &'life1 [MerkleHash],
) -> Pin<Box<dyn Future<Output = Result<BatchQueryReconstructionResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn acquire_download_permit<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<ConnectionPermit>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_file_term_data<'life0, 'async_trait>(
&'life0 self,
url_info: Box<dyn URLProvider>,
_download_permit: ConnectionPermit,
progress_callback: Option<ProgressCallback>,
uncompressed_size_if_known: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<(Bytes, Vec<u32>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_file_term_data<'life0, 'async_trait>(
&'life0 self,
url_info: Box<dyn URLProvider>,
_download_permit: ConnectionPermit,
progress_callback: Option<ProgressCallback>,
uncompressed_size_if_known: Option<usize>,
) -> Pin<Box<dyn Future<Output = Result<(Bytes, Vec<u32>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_file_chunk_hashes<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
dirty_ranges: Vec<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<FileChunkHashesResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_file_chunk_hashes<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
dirty_ranges: Vec<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<FileChunkHashesResponse>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
MerkleHashSubtree] summaries for the
given file, narrowed to dirty_ranges. Read moreSource§impl DeletionControlableClient for MemoryClient
impl DeletionControlableClient for MemoryClient
Source§fn list_shard_entries<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<MerkleHash>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_shard_entries<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<MerkleHash>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_shard_bytes<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_shard_bytes<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn delete_shard_entry<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_shard_entry<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn list_file_shard_entries<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<(MerkleHash, MerkleHash)>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_file_shard_entries<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<(MerkleHash, MerkleHash)>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn delete_file_entry<'life0, 'life1, 'async_trait>(
&'life0 self,
file_hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_file_entry<'life0, 'life1, 'async_trait>(
&'life0 self,
file_hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn remove_shard_dedup_entries<'life0, 'life1, 'async_trait>(
&'life0 self,
shard_hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_shard_dedup_entries<'life0, 'life1, 'async_trait>(
&'life0 self,
shard_hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn delete_xorb<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_xorb<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn delete_xorb_if_tag_matches<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
tag: &'life2 ObjectTag,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete_xorb_if_tag_matches<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
tag: &'life2 ObjectTag,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Ok(true) if deleted, Ok(false) if the tag did not match.Source§fn delete_shard_if_tag_matches<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
tag: &'life2 ObjectTag,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn delete_shard_if_tag_matches<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
tag: &'life2 ObjectTag,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Ok(true) if deleted, Ok(false) if the tag did not match.Source§impl DirectAccessClient for MemoryClient
impl DirectAccessClient for MemoryClient
Source§fn set_fetch_term_url_expiration(&self, expiration: Duration)
fn set_fetch_term_url_expiration(&self, expiration: Duration)
Source§fn set_global_dedup_shard_expiration(&self, expiration: Option<Duration>)
fn set_global_dedup_shard_expiration(&self, expiration: Option<Duration>)
Source§fn set_max_ranges_per_fetch(&self, max_ranges: usize)
fn set_max_ranges_per_fetch(&self, max_ranges: usize)
XorbMultiRangeFetch entry
in V2 reconstruction responses. Read moreSource§fn disable_v2_endpoints(&self, status_code: u16)
fn disable_v2_endpoints(&self, status_code: u16)
/v2/* handlers return this status, forcing clients to fall back to V1.
Pass 0 to re-enable.Source§fn v2_disabled_status_code(&self) -> u16
fn v2_disabled_status_code(&self) -> u16
Source§fn get_reconstruction_v1<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
bytes_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryReconstructionResponse>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_reconstruction_v1<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
bytes_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryReconstructionResponse>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_reconstruction_v2<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
bytes_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryReconstructionResponseV2>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_reconstruction_v2<'life0, 'life1, 'async_trait>(
&'life0 self,
file_id: &'life1 MerkleHash,
bytes_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<QueryReconstructionResponseV2>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn set_api_delay_range(&self, delay_range: Option<Range<Duration>>)
fn set_api_delay_range(&self, delay_range: Option<Range<Duration>>)
Source§fn apply_api_delay<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn apply_api_delay<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn list_xorbs<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<MerkleHash>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_xorbs<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<MerkleHash>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_full_xorb<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_full_xorb<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_xorb_ranges<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
chunk_ranges: Vec<(u32, u32)>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Bytes>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_xorb_ranges<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
chunk_ranges: Vec<(u32, u32)>,
) -> Pin<Box<dyn Future<Output = Result<Vec<Bytes>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn xorb_length<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<u32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn xorb_length<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<u32>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn xorb_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn xorb_exists<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_file_size<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_file_size<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_file_data<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
byte_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_file_data<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
byte_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn get_xorb_raw_bytes<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
byte_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_xorb_raw_bytes<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
byte_range: Option<FileRange>,
) -> Pin<Box<dyn Future<Output = Result<Bytes>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn xorb_raw_length<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn xorb_raw_length<'life0, 'life1, 'async_trait>(
&'life0 self,
hash: &'life1 MerkleHash,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn fetch_term_data<'life0, 'async_trait>(
&'life0 self,
hash: MerkleHash,
fetch_term: XorbReconstructionFetchInfo,
) -> Pin<Box<dyn Future<Output = Result<(Bytes, Vec<u32>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn fetch_term_data<'life0, 'async_trait>(
&'life0 self,
hash: MerkleHash,
fetch_term: XorbReconstructionFetchInfo,
) -> Pin<Box<dyn Future<Output = Result<(Bytes, Vec<u32>)>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Client::get_file_term_data.Auto Trait Implementations§
impl !Freeze for MemoryClient
impl !RefUnwindSafe for MemoryClient
impl !UnwindSafe for MemoryClient
impl Send for MemoryClient
impl Sync for MemoryClient
impl Unpin for MemoryClient
impl UnsafeUnpin for MemoryClient
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
Source§impl<T> ClientTestingUtils for T
impl<T> ClientTestingUtils for T
Source§fn upload_random_file<'life0, 'life1, 'async_trait>(
&'life0 self,
term_spec: &'life1 [(u64, (u64, u64))],
chunk_size: usize,
) -> Pin<Box<dyn Future<Output = Result<RandomFileContents>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upload_random_file<'life0, 'life1, 'async_trait>(
&'life0 self,
term_spec: &'life1 [(u64, (u64, u64))],
chunk_size: usize,
) -> Pin<Box<dyn Future<Output = Result<RandomFileContents>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§impl<T> DropFlavorWrapper<T> for T
impl<T> DropFlavorWrapper<T> for T
Source§impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
impl<T, W> HasTypeWitness<W> for Twhere
W: MakeTypeWitness<Arg = T>,
T: ?Sized,
Source§impl<T> Identity for Twhere
T: ?Sized,
impl<T> Identity for Twhere
T: ?Sized,
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>
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