pub trait AsyncFileSystemSpi: Send + Sync {
// Required methods
fn properties(&self) -> ProviderProperties;
fn stat<'a>(
&'a self,
request: StatRequest<'a>,
) -> SpiFuture<'a, FsResult<StatResponse>>;
// Provided methods
fn list<'a>(
&'a self,
request: ListRequest<'a>,
) -> SpiFuture<'a, FsResult<OpenedAsyncDirectoryStream>> { ... }
fn open_reader<'a>(
&'a self,
request: OpenReaderRequest<'a>,
) -> SpiFuture<'a, FsResult<OpenedAsyncReader>> { ... }
fn open_writer<'a>(
&'a self,
request: OpenWriterRequest<'a>,
) -> SpiFuture<'a, FsResult<OpenedAsyncWriter>> { ... }
fn create_directory<'a>(
&'a self,
request: CreateDirectoryRequest<'a>,
) -> SpiFuture<'a, FsResult<CreateDirectoryOutcome>> { ... }
fn delete_file<'a>(
&'a self,
request: DeleteFileRequest<'a>,
) -> SpiFuture<'a, FsResult<DeleteOutcome>> { ... }
fn delete_directory<'a>(
&'a self,
request: DeleteDirectoryRequest<'a>,
) -> SpiFuture<'a, FsResult<DeleteOutcome>> { ... }
fn try_copy<'a>(
&'a self,
_request: CopyRequest<'a>,
) -> SpiFuture<'a, Result<CopyAttempt, SpiCopyFailure>> { ... }
fn rename<'a>(
&'a self,
request: RenameRequest<'a>,
) -> SpiFuture<'a, Result<RenameOutcome, SpiRenameFailure>> { ... }
fn create_temp_file<'a>(
&'a self,
_request: CreateTempFileRequest,
) -> SpiFuture<'a, FsResult<OpenedAsyncTempFile>> { ... }
fn create_temp_directory<'a>(
&'a self,
_request: CreateTempDirectoryRequest,
) -> SpiFuture<'a, FsResult<OpenedAsyncTempDirectory>> { ... }
}Expand description
Object-safe asynchronous provider implementation contract.
Operation futures perform provider I/O only while polled. Dropping a pending future cancels local polling but does not imply that remote work was rolled back; mutation failures must preserve confirmed progress in their typed failure state.
§Examples
use qubit_fs::spi::AsyncFileSystemSpi;
fn accepts_provider<T: AsyncFileSystemSpi>() {}Required Methods§
Sourcefn properties(&self) -> ProviderProperties
fn properties(&self) -> ProviderProperties
Returns one immutable provider property snapshot without asynchronous I/O.
§Returns
The provider’s immutable property snapshot.
Sourcefn stat<'a>(
&'a self,
request: StatRequest<'a>,
) -> SpiFuture<'a, FsResult<StatResponse>>
fn stat<'a>( &'a self, request: StatRequest<'a>, ) -> SpiFuture<'a, FsResult<StatResponse>>
Provided Methods§
Sourcefn list<'a>(
&'a self,
request: ListRequest<'a>,
) -> SpiFuture<'a, FsResult<OpenedAsyncDirectoryStream>>
fn list<'a>( &'a self, request: ListRequest<'a>, ) -> SpiFuture<'a, FsResult<OpenedAsyncDirectoryStream>>
Sourcefn open_reader<'a>(
&'a self,
request: OpenReaderRequest<'a>,
) -> SpiFuture<'a, FsResult<OpenedAsyncReader>>
fn open_reader<'a>( &'a self, request: OpenReaderRequest<'a>, ) -> SpiFuture<'a, FsResult<OpenedAsyncReader>>
Sourcefn open_writer<'a>(
&'a self,
request: OpenWriterRequest<'a>,
) -> SpiFuture<'a, FsResult<OpenedAsyncWriter>>
fn open_writer<'a>( &'a self, request: OpenWriterRequest<'a>, ) -> SpiFuture<'a, FsResult<OpenedAsyncWriter>>
Asynchronously opens a writer.
An unsuccessful open must describe its external effects. Attach
FsEffectState::Unchanged only when no mutation occurred and no cleanup
responsibility remains. Missing evidence is conservatively indeterminate
in aggregate operations, including an AlreadyExists skip request.
§Parameters
request: Facade-validated writer request.
§Returns
A future resolving to an identity-bound writer.
§Errors
Resolves to the provider open failure with filesystem context.
Sourcefn create_directory<'a>(
&'a self,
request: CreateDirectoryRequest<'a>,
) -> SpiFuture<'a, FsResult<CreateDirectoryOutcome>>
fn create_directory<'a>( &'a self, request: CreateDirectoryRequest<'a>, ) -> SpiFuture<'a, FsResult<CreateDirectoryOutcome>>
Sourcefn delete_file<'a>(
&'a self,
request: DeleteFileRequest<'a>,
) -> SpiFuture<'a, FsResult<DeleteOutcome>>
fn delete_file<'a>( &'a self, request: DeleteFileRequest<'a>, ) -> SpiFuture<'a, FsResult<DeleteOutcome>>
Sourcefn delete_directory<'a>(
&'a self,
request: DeleteDirectoryRequest<'a>,
) -> SpiFuture<'a, FsResult<DeleteOutcome>>
fn delete_directory<'a>( &'a self, request: DeleteDirectoryRequest<'a>, ) -> SpiFuture<'a, FsResult<DeleteOutcome>>
Sourcefn try_copy<'a>(
&'a self,
_request: CopyRequest<'a>,
) -> SpiFuture<'a, Result<CopyAttempt, SpiCopyFailure>>
fn try_copy<'a>( &'a self, _request: CopyRequest<'a>, ) -> SpiFuture<'a, Result<CopyAttempt, SpiCopyFailure>>
Sourcefn rename<'a>(
&'a self,
request: RenameRequest<'a>,
) -> SpiFuture<'a, Result<RenameOutcome, SpiRenameFailure>>
fn rename<'a>( &'a self, request: RenameRequest<'a>, ) -> SpiFuture<'a, Result<RenameOutcome, SpiRenameFailure>>
Sourcefn create_temp_file<'a>(
&'a self,
_request: CreateTempFileRequest,
) -> SpiFuture<'a, FsResult<OpenedAsyncTempFile>>
fn create_temp_file<'a>( &'a self, _request: CreateTempFileRequest, ) -> SpiFuture<'a, FsResult<OpenedAsyncTempFile>>
Sourcefn create_temp_directory<'a>(
&'a self,
_request: CreateTempDirectoryRequest,
) -> SpiFuture<'a, FsResult<OpenedAsyncTempDirectory>>
fn create_temp_directory<'a>( &'a self, _request: CreateTempDirectoryRequest, ) -> SpiFuture<'a, FsResult<OpenedAsyncTempDirectory>>
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".