Trait random_access_storage::RandomAccess
source · pub trait RandomAccess {
// Required methods
fn write<'life0, 'life1, 'async_trait>(
&'life0 mut self,
offset: u64,
data: &'life1 [u8]
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait;
fn read<'life0, 'async_trait>(
&'life0 mut self,
offset: u64,
length: u64
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn del<'life0, 'async_trait>(
&'life0 mut self,
offset: u64,
length: u64
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn truncate<'life0, 'async_trait>(
&'life0 mut self,
length: u64
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn len<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<u64, RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn is_empty<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<bool, RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
fn sync_all<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>
where Self: 'async_trait,
'life0: 'async_trait;
}
Expand description
Interface for reading from, writing to and deleting from a randomly accessible storage of bytes.
Required Methods§
sourcefn write<'life0, 'life1, 'async_trait>(
&'life0 mut self,
offset: u64,
data: &'life1 [u8]
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn write<'life0, 'life1, 'async_trait>( &'life0 mut self, offset: u64, data: &'life1 [u8] ) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,
Write bytes of data
at an offset
to the backend.
Errors
-
RandomAccessError::OutOfBounds if the backend has a maximum capacity that would be exceeded by the write.
-
RandomAccessError::IO if an unexpected IO error occurred.
sourcefn read<'life0, 'async_trait>(
&'life0 mut self,
offset: u64,
length: u64
) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn read<'life0, 'async_trait>( &'life0 mut self, offset: u64, length: u64 ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Read a sequence of bytes at an offset
from the backend.
Errors
-
RandomAccessError::OutOfBounds if RandomAccess::len >
offset
+length
. -
RandomAccessError::IO if an unexpected IO error occurred.
sourcefn del<'life0, 'async_trait>(
&'life0 mut self,
offset: u64,
length: u64
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn del<'life0, 'async_trait>( &'life0 mut self, offset: u64, length: u64 ) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Delete a sequence of bytes of given length
at an offset
from the backend.
This either sets the bytes in the given slice to zeroes, or if
offset
+ length
>= RandomAccess::len() is the same as
truncate(offset)
.
Errors
-
RandomAccessError::OutOfBounds if RandomAccess::len() <
offset
+length
. -
RandomAccessError::IO if an unexpected IO error occurred.
sourcefn truncate<'life0, 'async_trait>(
&'life0 mut self,
length: u64
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn truncate<'life0, 'async_trait>( &'life0 mut self, length: u64 ) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Resize the sequence of bytes so that RandomAccess::len() is set to
length
. If length
< RandomAccess::len(), the bytes are disregarded.
If length
> RandomAccess::len(), the storage is zero-padded.
Errors
-
RandomAccessError::OutOfBounds if the backend has a maximum capacity smaller than
length
. -
RandomAccessError::IO if an unexpected IO error occurred.
sourcefn len<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<u64, RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn len<'life0, 'async_trait>( &'life0 mut self ) -> Pin<Box<dyn Future<Output = Result<u64, RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Get the size of the storage in bytes.
Errors
- RandomAccessError::IO if an unexpected IO error occurred.
sourcefn is_empty<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<bool, RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn is_empty<'life0, 'async_trait>( &'life0 mut self ) -> Pin<Box<dyn Future<Output = Result<bool, RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Whether the storage is empty. For some storage backends it may be cheaper to calculate whether the storage is empty than to calculate the length.
Errors
- RandomAccessError::IO if an unexpected IO error occurred.
sourcefn sync_all<'life0, 'async_trait>(
&'life0 mut self
) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sync_all<'life0, 'async_trait>( &'life0 mut self ) -> Pin<Box<dyn Future<Output = Result<(), RandomAccessError>> + Send + 'async_trait>>where Self: 'async_trait, 'life0: 'async_trait,
Flush buffered data on the underlying storage resource.
Errors
- RandomAccessError::IO if an unexpected IO error occurred.