ps_buffer/methods/
slice.rs

1use ps_range::PartialRange;
2
3use crate::Buffer;
4
5impl Buffer {
6    /// Extracts a slice of this buffer, clamping indices to valid bounds.
7    pub fn slice(&self, range: impl PartialRange) -> &[u8] {
8        let length = self.len();
9        let range = range.clamp_right(length);
10
11        &self[range]
12    }
13}
14
15#[cfg(test)]
16mod tests {
17    use crate::{Buffer, BufferError};
18
19    #[test]
20    fn try_read() -> Result<(), BufferError> {
21        let buffer = Buffer::from_slice("Hello, world!")?;
22
23        assert_eq!(buffer.slice(7..=11), b"world");
24
25        Ok(())
26    }
27}