Struct virtual_fs::mem_fs::FileSystem

source ·
pub struct FileSystem {
    pub(super) inner: Arc<RwLock<FileSystemInner>>,
}
Expand description

The in-memory file system!

This FileSystem type can be cloned, it’s a light copy of the FileSystemInner (which is behind a Arc + RwLock).

Fields§

§inner: Arc<RwLock<FileSystemInner>>

Implementations§

source§

impl FileSystem

source

pub fn insert_ro_file( &self, path: &Path, contents: Cow<'static, [u8]>, ) -> Result<()>

Inserts a readonly file into the file system that uses copy-on-write (this is required for zero-copy creation of the same file)

source

pub fn insert_arc_file_at( &self, target_path: PathBuf, fs: Arc<dyn FileSystem + Send + Sync>, source_path: PathBuf, ) -> Result<()>

Inserts a arc file into the file system that references another file in another file system (does not copy the real data)

source

pub fn insert_arc_file( &self, target_path: PathBuf, fs: Arc<dyn FileSystem + Send + Sync>, ) -> Result<()>

Inserts a arc file into the file system that references another file in another file system (does not copy the real data)

source

pub fn insert_arc_directory_at( &self, target_path: PathBuf, other: Arc<dyn FileSystem + Send + Sync>, source_path: PathBuf, ) -> Result<()>

Inserts a arc directory into the file system that references another file in another file system (does not copy the real data)

source

pub fn insert_arc_directory( &self, target_path: PathBuf, other: Arc<dyn FileSystem + Send + Sync>, ) -> Result<()>

Inserts a arc directory into the file system that references another file in another file system (does not copy the real data)

source

pub fn insert_device_file( &self, path: PathBuf, file: Box<dyn VirtualFile + Send + Sync>, ) -> Result<()>

Inserts a arc file into the file system that references another file in another file system (does not copy the real data)

source

fn insert_inode( &self, path: &Path, ) -> Result<(InodeResolution, Option<InodeResolution>, OsString)>

source§

impl FileSystem

source

pub fn set_memory_limiter(&self, limiter: DynFsMemoryLimiter)

source

pub fn new_open_options_ext(&self) -> &FileSystem

source

pub fn with_backing_offload(self, buffer: OffloadBackingStore) -> Result<Self>

Uses a mmap’ed file as a cache for file data thus removing the need to copy the data into memory.

This is especially important for journals as it means that the data stored within the journals does not need to be copied into memory, for very large journals this would otherwise be a problem.

source

pub fn canonicalize_unchecked(&self, path: &Path) -> Result<PathBuf>

Canonicalize a path without validating that it actually exists.

source

pub fn mount_directory_entries( &self, target_path: &Path, other: &Arc<dyn FileSystem + Send + Sync>, source_path: &Path, ) -> Result<()>

Merge all items from a given source path (directory) of a different file system into this file system.

Individual files and directories of the given path are mounted.

This function is not recursive, only the items in the source_path are mounted.

See Self::union for mounting all inodes recursively.

source

pub fn union(&self, other: &Arc<dyn FileSystem + Send + Sync>)

source

pub fn mount( &self, target_path: PathBuf, other: &Arc<dyn FileSystem + Send + Sync>, source_path: PathBuf, ) -> Result<()>

Trait Implementations§

source§

impl Clone for FileSystem

source§

fn clone(&self) -> FileSystem

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for FileSystem

source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for FileSystem

source§

fn default() -> FileSystem

Returns the “default value” for a type. Read more
source§

impl FileOpener for FileSystem

source§

fn open( &self, path: &Path, conf: &OpenOptionsConfig, ) -> Result<Box<dyn VirtualFile + Send + Sync + 'static>>

source§

impl FileSystem for FileSystem

source§

fn read_dir(&self, path: &Path) -> Result<ReadDir>

source§

fn create_dir(&self, path: &Path) -> Result<()>

source§

fn remove_dir(&self, path: &Path) -> Result<()>

source§

fn rename<'a>( &'a self, from: &'a Path, to: &'a Path, ) -> BoxFuture<'a, Result<()>>

source§

fn metadata(&self, path: &Path) -> Result<Metadata>

This method gets metadata without following symlinks in the path. Currently identical to metadata because symlinks aren’t implemented yet.
source§

fn remove_file(&self, path: &Path) -> Result<()>

source§

fn new_open_options(&self) -> OpenOptions<'_>

source§

fn mount( &self, _name: String, path: &Path, fs: Box<dyn FileSystem + Send + Sync>, ) -> Result<()>

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

default unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> Upcastable for T
where T: Any + Debug + 'static,

source§

fn upcast_any_ref(&self) -> &(dyn Any + 'static)

source§

fn upcast_any_mut(&mut self) -> &mut (dyn Any + 'static)

source§

fn upcast_any_box(self: Box<T>) -> Box<dyn Any>

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more