Skip to main content

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}