pub struct LocalFsStore { /* private fields */ }Expand description
Implements the object-store contract on a Unix-family local directory.
Replacements are atomic: a concurrent reader observes either the complete prior object or the complete replacement, never a missing or partial object.
Implementations§
Source§impl LocalFsStore
impl LocalFsStore
Sourcepub fn new(root: impl Into<PathBuf>) -> Result<Self>
pub fn new(root: impl Into<PathBuf>) -> Result<Self>
Opens a local store, creating its root directory when necessary.
Construction fails outside Unix-family platforms, where the provider does not claim atomic rename-replace support, or when the root cannot be created.
Trait Implementations§
Source§impl Debug for LocalFsStore
impl Debug for LocalFsStore
Source§impl ObjectStore for LocalFsStore
impl ObjectStore for LocalFsStore
Source§fn head_stored_checksum<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<StoredObjectChecksum>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn head_stored_checksum<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<StoredObjectChecksum>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
The reference provider stores no checksum beside an object, so it computes one from the object it holds. That is the same guarantee a cloud provider’s stored checksum gives — the provider attesting to the bytes it actually has — and it never crosses a network.
Source§fn head<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<ObjectMetadata>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn head<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<ObjectMetadata>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads metadata for one key, returning
None when the object is absent. Read moreSource§fn get_with_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<ObjectBody>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_with_metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<ObjectBody>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads complete bytes and identity metadata from one self-consistent observation. Read more
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
range: Option<ByteRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
range: Option<ByteRange>,
) -> Pin<Box<dyn Future<Output = Result<Option<Bytes>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Reads a full object or one half-open byte range, returning
None when absent. Read moreSource§fn put<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
mode: PutMode,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
mode: PutMode,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Writes bytes under the requested overwrite or provider-enforced precondition. Read more
Source§fn put_streamed<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
body: ByteStream,
mode: PutMode,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put_streamed<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
body: ByteStream,
mode: PutMode,
) -> Pin<Box<dyn Future<Output = Result<u64>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Writes a payload of unknown length without holding it whole, and
reports how many bytes were stored. Read more
Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Deletes a key idempotently and makes its absence immediately authoritative. Read more
Source§fn list_prefix_stream(&self, prefix: &str) -> BoxStream<'static, Result<String>>
fn list_prefix_stream(&self, prefix: &str) -> BoxStream<'static, Result<String>>
Streams keys under
prefix in ascending lexicographic order. Read moreSource§fn create_multipart_upload<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_multipart_upload<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<String>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Opens a provider multipart upload targeting
key, whose eventual
checksum covers the whole assembled object. Read moreSource§fn complete_multipart_upload<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
key: &'life1 str,
provider_upload_id: &'life2 str,
parts: &'life3 [MultipartPart],
full_object_checksum: &'life4 StorageChecksum,
) -> Pin<Box<dyn Future<Output = Result<MultipartCompletion>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
fn complete_multipart_upload<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>(
&'life0 self,
key: &'life1 str,
provider_upload_id: &'life2 str,
parts: &'life3 [MultipartPart],
full_object_checksum: &'life4 StorageChecksum,
) -> Pin<Box<dyn Future<Output = Result<MultipartCompletion>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
'life3: 'async_trait,
'life4: 'async_trait,
Source§fn abort_multipart_upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key: &'life1 str,
provider_upload_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn abort_multipart_upload<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key: &'life1 str,
provider_upload_id: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Abandons a provider multipart upload and the parts it accumulated. Read more
Source§fn list_prefix<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_prefix<'life0, 'life1, 'async_trait>(
&'life0 self,
prefix: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Vec<String>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Collects and sorts every key under
prefix. Read moreSource§fn put_overwrite<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put_overwrite<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Writes bytes unconditionally, replacing any existing object at
key. Read moreSource§fn put_if_absent<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put_if_absent<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Creates
key only when no object is present. Read moreSource§fn put_immutable_verified<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<(), ImmutableWriteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn put_immutable_verified<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<(), ImmutableWriteError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Writes
bytes under an immutable key and accepts success only when
the key contains exactly those bytes. Read moreSource§fn compare_and_swap<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key: &'life1 str,
expected_etag: &'life2 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn compare_and_swap<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
key: &'life1 str,
expected_etag: &'life2 str,
bytes: Bytes,
) -> Pin<Box<dyn Future<Output = Result<ObjectMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Auto Trait Implementations§
impl !Freeze for LocalFsStore
impl !RefUnwindSafe for LocalFsStore
impl Send for LocalFsStore
impl Sync for LocalFsStore
impl Unpin for LocalFsStore
impl UnsafeUnpin for LocalFsStore
impl UnwindSafe for LocalFsStore
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more