Trait SplitByteSlice
unsafe trait SplitByteSlice: ByteSlice
A ByteSlice that can be split in two.
Safety
Unsafe code may depend for its soundness on the assumption that split_at
and split_at_unchecked are implemented correctly. In particular, given B: SplitByteSlice and b: B, if b.deref() returns a byte slice with address
addr and length len, then if split <= len, both of these
invocations:
b.split_at(split)b.split_at_unchecked(split)
...will return (first, second) such that:
first's address isaddrand its length issplitsecond's address isaddr + splitand its length islen - split
Required Methods
unsafe fn split_at_unchecked(self: Self, mid: usize) -> (Self, Self)Splits the slice at the midpoint, possibly omitting bounds checks.
s.split_at_unchecked(mid)returnss[..mid]ands[mid..].Safety
midmust not be greater thanself.deref().len().Panics
Implementations of this method may choose to perform a bounds check and panic if
mid > self.deref().len(). They may also panic for any other reason. Since it is optional, callers must not rely on this behavior for soundness.
Provided Methods
fn split_at(self: Self, mid: usize) -> Result<(Self, Self), Self>Attempts to split
selfat the midpoint.s.split_at(mid)returnsOk((s[..mid], s[mid..]))ifmid <= s.deref().len()and otherwise returnsErr(s).Safety
Unsafe code may rely on this function correctly implementing the above functionality.