Struct dir_view::DirView

source ·
pub struct DirView { /* private fields */ }
Expand description

A view of a Dir.

This provides the same API as Dir, but imposes restrictions according to the view kind.

Implementations§

source§

impl DirView

source

pub fn from_dir(dir: Dir, view_kind: ViewKind) -> Self

Constructs a new instance of Self from the given Dir and ViewKind.

source

pub fn open<P: AsRef<Path>>(&self, path: P) -> Result<File>

Attempts to open a file in read-only mode.

This corresponds to std::fs::File::open, but only accesses paths relative to self.

source

pub fn open_with<P: AsRef<Path>>( &self, path: P, options: &OpenOptions ) -> Result<File>

Opens a file at path with the options specified by options.

This corresponds to std::fs::OpenOptions::open.

Instead of being a method on OpenOptions, this is a method on Dir, and it only accesses paths relative to self.

source

pub fn open_dir<P: AsRef<Path>>(&self, path: P) -> Result<Self>

Attempts to open a directory.

source

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

Creates a new, empty directory at the provided path.

This corresponds to std::fs::create_dir, but only accesses paths relative to self.

source

pub fn create_dir_all<P: AsRef<Path>>(&self, path: P) -> Result<()>

Recursively create a directory and all of its parent components if they are missing.

This corresponds to std::fs::create_dir_all, but only accesses paths relative to self.

source

pub fn create_dir_with<P: AsRef<Path>>( &self, path: P, dir_builder: &DirBuilder ) -> Result<()>

Available on non-WASI only.

Creates the specified directory with the options configured in this builder.

This corresponds to std::fs::DirBuilder::create.

source

pub fn create<P: AsRef<Path>>(&self, path: P) -> Result<File>

Opens a file in write-only mode.

This corresponds to std::fs::File::create, but only accesses paths relative to self.

source

pub fn canonicalize<P: AsRef<Path>>(&self, path: P) -> Result<PathBuf>

Returns the canonical form of a path with all intermediate components normalized and symbolic links resolved.

This corresponds to std::fs::canonicalize, but instead of returning an absolute path, returns a path relative to the directory represented by self.

source

pub fn copy<P: AsRef<Path>, Q: AsRef<Path>>( &self, from: P, to_dir: &Self, to: Q ) -> Result<u64>

Copies the contents of one file to another. This function will also copy the permission bits of the original file to the destination file.

This corresponds to std::fs::copy, but only accesses paths relative to self.

Creates a new hard link on a filesystem.

This corresponds to std::fs::hard_link, but only accesses paths relative to self.

source

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

Given a path, query the file system to get information about a file, directory, etc.

This corresponds to std::fs::metadata, but only accesses paths relative to self.

source

pub fn dir_metadata(&self) -> Result<Metadata>

Queries metadata about the underlying directory.

This is similar to std::fs::File::metadata, but for Dir rather than for File.

source

pub fn entries(&self) -> Result<ReadDirView>

Returns an iterator over the entries within self.

source

pub fn read_dir<P: AsRef<Path>>(&self, path: P) -> Result<ReadDirView>

Returns an iterator over the entries within a directory.

This corresponds to std::fs::read_dir, but only accesses paths relative to self.

source

pub fn read<P: AsRef<Path>>(&self, path: P) -> Result<Vec<u8>>

Read the entire contents of a file into a bytes vector.

This corresponds to std::fs::read, but only accesses paths relative to self.

Reads a symbolic link, returning the file that the link points to.

This corresponds to std::fs::read_link, but only accesses paths relative to self.

source

pub fn read_to_string<P: AsRef<Path>>(&self, path: P) -> Result<String>

Read the entire contents of a file into a string.

This corresponds to std::fs::read_to_string, but only accesses paths relative to self.

source

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

Removes an empty directory.

This corresponds to std::fs::remove_dir, but only accesses paths relative to self.

source

pub fn remove_dir_all<P: AsRef<Path>>(&self, path: P) -> Result<()>

Removes a directory at this path, after removing all its contents. Use carefully!

This corresponds to std::fs::remove_dir_all, but only accesses paths relative to self.

source

pub fn remove_open_dir(self) -> Result<()>

Remove the directory referenced by self and consume self.

Even though this implementation works in terms of handles as much as possible, removal is not guaranteed to be atomic with respect to a concurrent rename of the directory.

source

pub fn remove_open_dir_all(self) -> Result<()>

Removes the directory referenced by self, after removing all its contents, and consume self. Use carefully!

Even though this implementation works in terms of handles as much as possible, removal is not guaranteed to be atomic with respect to a concurrent rename of the directory.

source

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

Removes a file from a filesystem.

This corresponds to std::fs::remove_file, but only accesses paths relative to self.

source

pub fn rename<P: AsRef<Path>, Q: AsRef<Path>>( &self, from: P, to_dir: &Self, to: Q ) -> Result<()>

Rename a file or directory to a new name, replacing the original file if to already exists.

This corresponds to std::fs::rename, but only accesses paths relative to self.

source

pub fn set_permissions<P: AsRef<Path>>( &self, path: P, perm: Permissions ) -> Result<()>

Available on non-WASI only.

Changes the permissions found on a file or a directory.

This corresponds to std::fs::set_permissions, but only accesses paths relative to self. Also, on some platforms, this function may fail if the file or directory cannot be opened for reading or writing first.

Query the metadata about a file without following symlinks.

This corresponds to std::fs::symlink_metadata, but only accesses paths relative to self.

source

pub fn write<P: AsRef<Path>, C: AsRef<[u8]>>( &self, path: P, contents: C ) -> Result<()>

Write a slice as the entire contents of a file.

This corresponds to std::fs::write, but only accesses paths relative to self.

Available on non-Windows only.

Creates a new symbolic link on a filesystem.

The original argument provides the target of the symlink. The link argument provides the name of the created symlink.

Despite the argument ordering, original is not resolved relative to self here. link is resolved relative to self, and original is not resolved within this function.

The link path is resolved when the symlink is dereferenced, relative to the directory that contains it.

This corresponds to std::os::unix::fs::symlink, but only accesses paths relative to self.

source

pub fn bind_unix_listener<P: AsRef<Path>>( &self, path: P ) -> Result<UnixListener>

Available on Unix only.

Creates a new UnixListener bound to the specified socket.

This corresponds to std::os::unix::net::UnixListener::bind, but only accesses paths relative to self.

XXX: This function is not yet implemented.

source

pub fn connect_unix_stream<P: AsRef<Path>>(&self, path: P) -> Result<UnixStream>

Available on Unix only.

Connects to the socket named by path.

This corresponds to std::os::unix::net::UnixStream::connect, but only accesses paths relative to self.

XXX: This function is not yet implemented.

source

pub fn bind_unix_datagram<P: AsRef<Path>>( &self, path: P ) -> Result<UnixDatagram>

Available on Unix only.

Creates a Unix datagram socket bound to the given path.

This corresponds to std::os::unix::net::UnixDatagram::bind, but only accesses paths relative to self.

XXX: This function is not yet implemented.

source

pub fn connect_unix_datagram<P: AsRef<Path>>( &self, unix_datagram: &UnixDatagram, path: P ) -> Result<()>

Available on Unix only.

Connects the socket to the specified address.

This corresponds to std::os::unix::net::UnixDatagram::connect, but only accesses paths relative to self.

XXX: This function is not yet implemented.

source

pub fn send_to_unix_datagram_addr<P: AsRef<Path>>( &self, unix_datagram: &UnixDatagram, buf: &[u8], path: P ) -> Result<usize>

Available on Unix only.

Sends data on the socket to the specified address.

This corresponds to std::os::unix::net::UnixDatagram::send_to, but only accesses paths relative to self.

XXX: This function is not yet implemented.

source

pub fn try_clone(&self) -> Result<Self>

Creates a new Dir instance that shares the same underlying file handle as the existing Dir instance.

source

pub fn exists<P: AsRef<Path>>(&self, path: P) -> bool

Returns true if the path points at an existing entity.

This corresponds to std::path::Path::exists, but only accesses paths relative to self.

source

pub fn try_exists<P: AsRef<Path>>(&self, path: P) -> Result<bool>

Returns true if the path points at an existing entity.

This corresponds to std::fs::try_exists, but only accesses paths relative to self.

API correspondence with std

This API is not yet stable in std, but is likely to be. For more information, see the tracker issue.

source

pub fn is_file<P: AsRef<Path>>(&self, path: P) -> bool

Returns true if the path exists on disk and is pointing at a regular file.

This corresponds to std::path::Path::is_file, but only accesses paths relative to self.

source

pub fn is_dir<P: AsRef<Path>>(&self, path: P) -> bool

Checks if path is a directory.

This is similar to std::path::Path::is_dir in that it checks if path relative to Dir is a directory. This function will traverse symbolic links to query information about the destination file. In case of broken symbolic links, this will return false.

source

pub fn open_ambient_dir<P: AsRef<Path>>( path: P, view_kind: ViewKind, ambient_authority: AmbientAuthority ) -> Result<Self>

Constructs a new instance of Self by opening the given path as a directory using the host process’ ambient authority.

Ambient Authority

This function is not sandboxed and may access any path that the host process has access to.

source

pub fn open_parent_dir( &self, view_kind: ViewKind, ambient_authority: AmbientAuthority ) -> Result<Self>

Constructs a new instance of Self by opening the parent directory (aka “..”) of self, using the host process’ ambient authority.

Ambient Authority

This function accesses a directory outside of the self subtree.

source

pub fn reopen_dir<Filelike: AsFilelike>( dir: &Filelike, view_kind: ViewKind ) -> Result<Self>

Construct a new instance of Self from existing directory file descriptor.

This can be useful when interacting with other libraries and or C/C++ code which has invoked openat(..., O_DIRECTORY) external to this crate.

Trait Implementations§

source§

impl Debug for DirView

source§

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

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

impl DirExt for DirView

Available on crate feature cap-fs-ext only.
source§

fn set_atime<P: AsRef<Path>>( &self, path: P, atime: SystemTimeSpec ) -> Result<()>

Set the last access time for a file on a filesystem. Read more
source§

fn set_mtime<P: AsRef<Path>>( &self, path: P, mtime: SystemTimeSpec ) -> Result<()>

Set the last modification time for a file on a filesystem. Read more
source§

fn set_times<P: AsRef<Path>>( &self, path: P, atime: Option<SystemTimeSpec>, mtime: Option<SystemTimeSpec> ) -> Result<()>

Set the last access and modification times for a file on a filesystem. Read more
Set the last access and modification times for a file on a filesystem. This function does not follow symlink. Read more
Creates a new symbolic link on a filesystem. Read more
Creates a new file symbolic link on a filesystem. Read more
Creates a new directory symbolic link on a filesystem. Read more
source§

fn open_dir_nofollow<P: AsRef<Path>>(&self, path: P) -> Result<Self>
where Self: Sized,

Similar to cap_std::fs::Dir::open_dir, but fails if the path names a symlink.
Removes a file or symlink from a filesystem. Read more
source§

fn access<P: AsRef<Path>>(&self, path: P, type_: AccessType) -> Result<()>

Test for accessibility or existence of a filesystem object.
Test for accessibility or existence of a filesystem object, without following symbolic links.
Changes the permissions found on a file or a directory, without following symbolic links.

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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.

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.