Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::mem;
- pub trait Split {
- type Buffer;
- fn split(&mut self, usize) -> Option<Self::Buffer>;
- fn fake_split(&mut self) -> Self;
- }
- impl<'a> Split for &'a [u8] {
- type Buffer = Self;
- fn split(&mut self, n: usize) -> Option<Self::Buffer> {
- if self.len() >= n {
- let (l, r) = mem::replace(self, &[]).split_at(n);
- *self = r;
- Some(l)
- } else {
- None
- }
- }
- fn fake_split(&mut self) -> Self {
- self.split_at(self.len()).0
- }
- }
- impl<'a> Split for &'a mut [u8] {
- type Buffer = Self;
- fn split(&mut self, n: usize) -> Option<Self::Buffer> {
- if self.len() >= n {
- let (l, r) = mem::replace(self, &mut []).split_at_mut(n);
- *self = r;
- Some(l)
- } else {
- None
- }
- }
- fn fake_split(&mut self) -> Self {
- self.split_at_mut(self.len()).0
- }
- }
- fn main() {}
Add Comment
Please, Sign In to add comment