pub trait SliceMut: MemoryDescriptor + 'static {
// Required method
unsafe fn as_slice_mut(&mut self) -> Result<&mut [u8], StorageError>;
// Provided methods
fn slice_mut(
&mut self,
offset: usize,
len: usize,
) -> Result<&mut [u8], StorageError> { ... }
fn as_slice_typed_mut<T: Sized>(&mut self) -> Result<&mut [T], StorageError> { ... }
fn slice_typed_mut<T: Sized>(
&mut self,
offset: usize,
len: usize,
) -> Result<&mut [T], StorageError> { ... }
}Expand description
Extension trait for storage types that support mutable slicing operations.
Required Methods§
Sourceunsafe fn as_slice_mut(&mut self) -> Result<&mut [u8], StorageError>
unsafe fn as_slice_mut(&mut self) -> Result<&mut [u8], StorageError>
Returns a mutable byte slice view of the entire storage region
§Safety
This is an unsafe method. The caller must ensure:
- The memory region remains valid for the lifetime of the returned slice
- The memory region is valid and accessible
- No other references (mutable or immutable) exist to this memory region
- The memory backing this storage remains valid (implementors with owned memory satisfy this, but care must be taken with unowned memory regions)
Provided Methods§
Sourcefn slice_mut(
&mut self,
offset: usize,
len: usize,
) -> Result<&mut [u8], StorageError>
fn slice_mut( &mut self, offset: usize, len: usize, ) -> Result<&mut [u8], StorageError>
Returns a mutable byte slice view of a subregion
§Arguments
offset- Offset in bytes from the start of the storagelen- Number of bytes to slice
§Safety
The caller must ensure:
- offset + len <= self.size()
- The memory region is valid
- No other references (mutable or immutable) exist to this memory region
Sourcefn as_slice_typed_mut<T: Sized>(&mut self) -> Result<&mut [T], StorageError>
fn as_slice_typed_mut<T: Sized>(&mut self) -> Result<&mut [T], StorageError>
Returns a typed mutable slice view of the entire storage region
§Safety
The caller must ensure:
- The memory region is valid
- The memory is properly aligned for type T
- The size is a multiple of
size_of::<T>() - No other references (mutable or immutable) exist to this memory region
Sourcefn slice_typed_mut<T: Sized>(
&mut self,
offset: usize,
len: usize,
) -> Result<&mut [T], StorageError>
fn slice_typed_mut<T: Sized>( &mut self, offset: usize, len: usize, ) -> Result<&mut [T], StorageError>
Returns a typed mutable slice view of a subregion
§Arguments
offset- Offset in bytes from the start of the storagelen- Number of elements of type T to slice
§Safety
The caller must ensure:
- offset + (len * size_of::
()) <= self.size() - offset is properly aligned for type T
- The memory region is valid
- No other references (mutable or immutable) exist to this memory region
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".