pub trait RangeReader {
// Required methods
fn len(&self) -> u64;
fn read_at(&self, offset: u64, len: u64) -> Result<Vec<u8>>;
// Provided methods
fn is_empty(&self) -> bool { ... }
fn read_many(&self, ranges: &[(u64, u64)]) -> Result<Vec<Vec<u8>>> { ... }
fn concurrency(&self) -> usize { ... }
}Expand description
Something that can serve arbitrary byte ranges of a .rete resource.
Required Methods§
Provided Methods§
Sourcefn read_many(&self, ranges: &[(u64, u64)]) -> Result<Vec<Vec<u8>>>
fn read_many(&self, ranges: &[(u64, u64)]) -> Result<Vec<Vec<u8>>>
Read several (offset, len) ranges, returning each range’s bytes in
request order. These ranges are independent, so a reader whose backing
store is high-latency but parallelizable (an HTTP client) overrides this
to issue the reads concurrently — turning N round trips into ~N/P. The
default fetches them sequentially. Any range failing fails the batch.
Sourcefn concurrency(&self) -> usize
fn concurrency(&self) -> usize
How many ranges this reader can usefully have in flight at once — the planner’s hint for probe-vs-scan and batch-size decisions (a phone’s serial sync-XHR reader reports 1; the CLI’s threaded HTTP client and the browser’s concurrent-fetch variants report their fan-out). Purely advisory: correctness never depends on it. Defaults to 1 (sequential).
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".
Implementations on Foreign Types§
Source§impl<R: RangeReader + ?Sized> RangeReader for Arc<R>
Sharing a reader (e.g. keeping a counting handle while a lazily-faulting
Rete owns another) just delegates.
impl<R: RangeReader + ?Sized> RangeReader for Arc<R>
Sharing a reader (e.g. keeping a counting handle while a lazily-faulting
Rete owns another) just delegates.