Skip to main content

Filesystem

Trait Filesystem 

Source
pub trait Filesystem: Send + Sync {
Show 22 methods // Required methods fn info(&self) -> FilesystemInfo; fn cwd(&self) -> &str; fn placement(&self, path: &str) -> Result<Placement, FilesystemError>; fn metadata<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, follow: bool, ) -> Pin<Box<dyn Future<Output = Result<Metadata, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn read<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, offset: u64, maximum_bytes: u64, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn write<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, bytes: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn append<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, bytes: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn mkdir<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, recursive: bool, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn remove<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, recursive: bool, budget: &'life3 mut dyn MutationBudget, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait; fn move_entry<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, from: &'life2 str, to: &'life3 str, budget: &'life4 mut dyn MutationBudget, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait; fn copy<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, from: &'life2 str, to: &'life3 str, recursive: bool, budget: &'life4 mut dyn MutationBudget, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait; fn next_reader<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, reader: &'life2 mut FileReader, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<ReadOutput, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait; fn close_reader<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, reader: &'life2 mut FileReader, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn next_directory<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, directory: &'life2 mut DirectoryReader, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<Option<DirectoryEntry>, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait; fn close_directory<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, directory: &'life2 mut DirectoryReader, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait; fn write_chunk<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, writer: &'life2 mut FileWriter, bytes: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn close_writer<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, writer: &'life2 mut FileWriter, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn open_reader<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, options: ReaderOptions, ) -> Pin<Box<dyn Future<Output = Result<FileReader, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; fn open_directory<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, recursive: bool, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<DirectoryReader, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait; fn open_writer<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<FileWriter, FilesystemError>> + Send + 'async_trait>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait; // Provided methods fn supports_resource_replay(&self) -> bool { ... } fn path_cost(&self, _path: &str) -> u64 { ... }
}

Required Methods§

Source

fn info(&self) -> FilesystemInfo

Source

fn cwd(&self) -> &str

Source

fn placement(&self, path: &str) -> Result<Placement, FilesystemError>

Source

fn metadata<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, follow: bool, ) -> Pin<Box<dyn Future<Output = Result<Metadata, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn read<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, offset: u64, maximum_bytes: u64, ) -> Pin<Box<dyn Future<Output = Result<Vec<u8>, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn write<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, bytes: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Atomically replace the file contents, creating the file if it is missing.

Source

fn append<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, bytes: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Append bytes to the file, creating the file if it is missing.

Source

fn mkdir<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, recursive: bool, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn remove<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, recursive: bool, budget: &'life3 mut dyn MutationBudget, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source

fn move_entry<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, from: &'life2 str, to: &'life3 str, budget: &'life4 mut dyn MutationBudget, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait,

Source

fn copy<'life0, 'life1, 'life2, 'life3, 'life4, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, from: &'life2 str, to: &'life3 str, recursive: bool, budget: &'life4 mut dyn MutationBudget, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait, 'life4: 'async_trait,

Source

fn next_reader<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, reader: &'life2 mut FileReader, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<ReadOutput, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source

fn close_reader<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, reader: &'life2 mut FileReader, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn next_directory<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, directory: &'life2 mut DirectoryReader, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<Option<DirectoryEntry>, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source

fn close_directory<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, directory: &'life2 mut DirectoryReader, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source

fn write_chunk<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, writer: &'life2 mut FileWriter, bytes: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn close_writer<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, writer: &'life2 mut FileWriter, ) -> Pin<Box<dyn Future<Output = Result<(), FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Only explicit close publishes. Dropping a resource never publishes it.

Source

fn open_reader<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, options: ReaderOptions, ) -> Pin<Box<dyn Future<Output = Result<FileReader, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Source

fn open_directory<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, recursive: bool, limits: &'life3 TenantLimits, ) -> Pin<Box<dyn Future<Output = Result<DirectoryReader, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Source

fn open_writer<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, effect_id: &'life1 EffectId, work: Option<Arc<WorkBudget>>, path: &'life2 str, ) -> Pin<Box<dyn Future<Output = Result<FileWriter, FilesystemError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Provided Methods§

Source

fn supports_resource_replay(&self) -> bool

Whether resources can be used after decoding without their local handles.

Source

fn path_cost(&self, _path: &str) -> u64

Additional fuel to admit before resolving a guest path.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§