pub struct AsyncAltrootFS { /* private fields */ }
Expand description
Similar to a chroot but done purely by path manipulation
NOTE: This mechanism should only be used for convenience, NOT FOR SECURITY
Symlinks, hardlinks, remounts, side channels and other file system mechanisms can be exploited to circumvent this mechanism
Implementations§
source§impl AsyncAltrootFS
impl AsyncAltrootFS
sourcepub fn new(root: AsyncVfsPath) -> Self
pub fn new(root: AsyncVfsPath) -> Self
Create a new root FileSystem at the given virtual path
Trait Implementations§
source§impl AsyncFileSystem for AsyncAltrootFS
impl AsyncFileSystem for AsyncAltrootFS
source§fn read_dir<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn Stream<Item = String> + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn read_dir<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn Stream<Item = String> + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Iterates over all direct children of this directory path
NOTE: the returned String items denote the local bare filenames, i.e. they should not contain “/” anywhere
source§fn create_dir<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_dir<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Creates the directory at this path Read more
source§fn open_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn SeekAndRead + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn open_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn SeekAndRead + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Opens the file at this path for reading
source§fn create_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn Write + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn create_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn Write + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Creates a file at this path for writing
source§fn append_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn Write + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn append_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<Box<dyn Write + Send + Unpin>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Opens the file at this path for appending
source§fn metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<VfsMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn metadata<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<VfsMetadata>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns the file metadata for the file at this path
source§fn set_creation_time<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
time: SystemTime
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_creation_time<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
time: SystemTime
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sets the files creation timestamp, if the implementation supports it
source§fn set_modification_time<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
time: SystemTime
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_modification_time<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
time: SystemTime
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sets the files modification timestamp, if the implementation supports it
source§fn set_access_time<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
time: SystemTime
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn set_access_time<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str,
time: SystemTime
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Sets the files access timestamp, if the implementation supports it
source§fn exists<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn exists<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<bool>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Returns true if a file or directory at path exists, false otherwise
source§fn remove_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_file<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Removes the file at this path
source§fn remove_dir<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn remove_dir<'life0, 'life1, 'async_trait>(
&'life0 self,
path: &'life1 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Removes the directory at this path
source§fn copy_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
src: &'life1 str,
dest: &'life2 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn copy_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
src: &'life1 str,
dest: &'life2 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Copies the src path to the destination path within the same filesystem (optional)
source§fn move_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_src: &'life1 str,
_dest: &'life2 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn move_file<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_src: &'life1 str,
_dest: &'life2 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Moves the src path to the destination path within the same filesystem (optional)
source§fn move_dir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_src: &'life1 str,
_dest: &'life2 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn move_dir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_src: &'life1 str,
_dest: &'life2 str
) -> Pin<Box<dyn Future<Output = VfsResult<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Moves the src directory to the destination path within the same filesystem (optional)
source§impl Clone for AsyncAltrootFS
impl Clone for AsyncAltrootFS
source§fn clone(&self) -> AsyncAltrootFS
fn clone(&self) -> AsyncAltrootFS
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for AsyncAltrootFS
impl Send for AsyncAltrootFS
impl Sync for AsyncAltrootFS
impl Unpin for AsyncAltrootFS
impl !UnwindSafe for AsyncAltrootFS
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