o3/buffer/raw/scatter/cursors.rs
1use std::num::NonZero;
2
3use crate::{buffer, buffer::segments::Cursor};
4
5// SAFETY: construction borrows the same sequence for topology and byte total;
6// every node retains a nonempty Item and each advance consumes an exact prefix.
7unsafe impl<'a, T: buffer::raw::Segment> buffer::raw::Scatter<'a> for Cursor<'a, T> {
8 fn remaining(&self) -> usize {
9 self.remaining()
10 }
11
12 unsafe fn advance<const MAX: usize>(
13 &mut self,
14 cap: NonZero<usize>,
15 left: NonZero<usize>,
16 ) -> buffer::raw::Chunk<'a, MAX> {
17 unsafe { self.next_chunk(cap, left) }
18 }
19}