Skip to main content

drive_from_read_at

Function drive_from_read_at 

Source
pub fn drive_from_read_at<D, S>(
    decoder: &mut D,
    source: &mut S,
    sink: &mut dyn DecodeRowSink,
    pulse: Option<&dyn Pulse>,
    opts: DriveOptions,
) -> Result<(OutputInfo, DriveStats), DriveError<D::Error, S::Error>>
where D: IncrementalDecode + ?Sized, S: ReadAt + ?Sized,
Expand description

Run decoder over a random-access source.

Sequential requests read forward into a driver-owned window (short reads mark the end of the source; ReadAt::len is called only when the decoder asks for the length). Range requests are coalesced (max_gap) and fetched with one read_many_at per round, so a concurrent source overlaps their round trips; later ranges of the same round are served from the fetched buffers. A source that is already in memory (ReadAt::as_slice) is driven without copying. The same driver serves any ByteStepper through ReadAtCursor.