ps_buffer/methods/
slice_mut.rs

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