cap_async_std::fs

Struct Dir

Source
pub struct Dir { /* private fields */ }
Expand description

A reference to an open directory on a filesystem.

This does not directly correspond to anything in async_std, however its methods correspond to the functions in async_std::fs and the constructor methods for async_std::fs::File.

Unlike async_std::fs, this API’s canonicalize returns a relative path since absolute paths don’t interoperate well with the capability model.

Implementations§

Source§

impl Dir

Source

pub fn from_std_file(std_file: File) -> Self

Constructs a new instance of Self from the given async_std::fs::File.

To prevent race conditions on Windows, the file must be opened without FILE_SHARE_DELETE.

This grants access the resources the async_std::fs::File instance already has access to.

Source

pub fn into_std_file(self) -> File

Consumes self and returns an async_std::fs::File.

Source

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

Attempts to open a file in read-only mode.

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

Source

pub async 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 async_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 async 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 async_std::fs::create_dir, but only accesses paths relative to self.

TODO: async: fix this when we fix https://github.com/bytecodealliance/cap-std/issues/51

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 async_std::fs::create_dir_all, but only accesses paths relative to self.

TODO: async: fix this when we fix https://github.com/bytecodealliance/cap-std/issues/51

Source

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

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

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

TODO: async: fix this when we fix https://github.com/bytecodealliance/cap-std/issues/51

Source

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

Opens a file in write-only mode.

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

Source

pub async 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 async_std::fs::canonicalize, but instead of returning an absolute path, returns a path relative to the directory represented by self.

Source

pub async 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 async_std::fs::copy, but only accesses paths relative to self.

Creates a new hard link on a filesystem.

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

Source

pub async 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 async_std::fs::metadata, but only accesses paths relative to self.

Source

pub async 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 async fn entries(&self) -> Result<ReadDir>

Returns an iterator over the entries within self.

Source

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

Returns an iterator over the entries within a directory.

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

Source

pub async 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 async_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 async_std::fs::read_link, but only accesses paths relative to self.

Source

pub async 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 async_std::fs::read_to_string, but only accesses paths relative to self.

Source

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

Removes an empty directory.

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

Source

pub async 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 async_std::fs::remove_dir_all, but only accesses paths relative to self.

Source

pub async 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 async 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 async fn remove_file<P: AsRef<Path>>(&self, path: P) -> Result<()>

Removes a file from a filesystem.

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

Source

pub async 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 async_std::fs::rename, but only accesses paths relative to self.

Source

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

Changes the permissions found on a file or a directory.

This corresponds to async_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 async_std::fs::symlink_metadata, but only accesses paths relative to self.

Source

pub async 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 async_std::fs::write, but only accesses paths relative to self.

Creates a new file 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 async_std::os::windows::fs::symlink_file, but only accesses paths relative to self.

Creates a new directory symlink 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 async_std::os::windows::fs::symlink_dir, but only accesses paths relative to self.

Source

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

Returns true if the path points at an existing entity.

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

Source

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

Returns true if the path points at an existing entity.

This is an asynchronous version of [std::fs::try_exists], and also only accesses paths relative to self.

NOTE: This API is not yet part of async_std.

Source

pub async 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 async_std::path::Path::is_file, but only accesses paths relative to self.

Source

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

Checks if path is a directory.

This is similar to async_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 async fn open_ambient_dir<P: AsRef<Path>>( path: P, 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 async fn open_parent_dir( &self, 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 async fn create_ambient_dir_all<P: AsRef<Path>>( path: P, ambient_authority: AmbientAuthority, ) -> Result<()>

Recursively create a directory and all of its parent components if they are missing, 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 async fn reopen_dir<Filelike: AsFilelike + Send>( dir: &Filelike, ) -> 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 AsHandle for Dir

Source§

fn as_handle(&self) -> BorrowedHandle<'_>

Borrows the handle. Read more
Source§

impl AsHandleOrSocket for Dir

Source§

impl AsRawHandle for Dir

Source§

fn as_raw_handle(&self) -> RawHandle

Extracts the raw handle. Read more
Source§

impl AsRawHandleOrSocket for Dir

Source§

impl Clone for Dir

Source§

fn clone(&self) -> Dir

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 Dir

Source§

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

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

impl From<Dir> for OwnedHandle

Source§

fn from(dir: Dir) -> OwnedHandle

Converts to this type from the input type.
Source§

impl From<Dir> for OwnedHandleOrSocket

Source§

fn from(dir: Dir) -> Self

Converts to this type from the input type.
Source§

impl From<OwnedHandle> for Dir

Source§

fn from(handle: OwnedHandle) -> Self

Converts to this type from the input type.
Source§

impl FromRawHandle for Dir

Source§

unsafe fn from_raw_handle(handle: RawHandle) -> Self

To prevent race conditions on Windows, the handle must be opened without FILE_SHARE_DELETE.

Source§

impl IntoRawHandle for Dir

Source§

fn into_raw_handle(self) -> RawHandle

Consumes this object, returning the raw underlying handle. Read more
Source§

impl IntoRawHandleOrSocket for Dir

Source§

impl FilelikeViewType for Dir

Auto Trait Implementations§

§

impl Freeze for Dir

§

impl !RefUnwindSafe for Dir

§

impl Send for Dir

§

impl Sync for Dir

§

impl Unpin for Dir

§

impl !UnwindSafe for Dir

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> AsFilelike for T
where T: AsHandle,

Source§

fn as_filelike(&self) -> BorrowedHandle<'_>

Borrows the reference. Read more
Source§

fn as_filelike_view<Target>(&self) -> FilelikeView<'_, Target>
where Target: FilelikeViewType,

Return a borrowing view of a resource which dereferences to a &Target. Read more
Source§

impl<T> AsGrip for T

Source§

fn as_grip(&self) -> BorrowedHandleOrSocket<'_>

Extracts the grip.
Source§

impl<T> AsRawFilelike for T
where T: AsRawHandle,

Source§

fn as_raw_filelike(&self) -> *mut c_void

Returns the raw value.
Source§

impl<T> AsRawGrip for T

Source§

fn as_raw_grip(&self) -> RawHandleOrSocket

Extracts the raw grip.
Source§

impl<T> AsWaitable for T
where T: AsHandle + ?Sized,

Source§

fn as_waitable(&self) -> BorrowedHandle<'_>

Returns the raw handle of this waitable.
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§

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

🔬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.

Source§

impl<T> FromFilelike for T
where T: From<OwnedHandle>,

Source§

fn from_filelike(owned: OwnedHandle) -> T

Constructs a new instance of Self from the given filelike object. Read more
Source§

fn from_into_filelike<Owned>(owned: Owned) -> T
where Owned: IntoFilelike,

Constructs a new instance of Self from the given filelike object converted from into_owned. Read more
Source§

impl<T> FromHandle for T
where T: From<OwnedHandle>,

Source§

fn from_handle(owned_handle: OwnedHandle) -> T

👎Deprecated since 1.0.0: FromHandle::from_handle is replaced by From<OwnedHandle>::from
Constructs a new instance of Self from the given handle. Read more
Source§

fn from_into_handle<Owned>(into_owned: Owned) -> Self
where Owned: Into<OwnedHandle>, Self: Sized + From<OwnedHandle>,

Constructs a new instance of Self from the given handle converted from into_owned. Read more
Source§

impl<T> FromRawFilelike for T
where T: FromRawHandle,

Source§

unsafe fn from_raw_filelike(raw: *mut c_void) -> T

Constructs Self from the raw value.
Source§

impl<T> Instrument for T

Source§

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

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

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.

Source§

impl<T> IntoFilelike for T
where T: Into<OwnedHandle>,

Source§

fn into_filelike(self) -> OwnedHandle

Consumes this object, returning the underlying filelike object.
Source§

impl<T> IntoGrip for T

Source§

fn into_grip(self) -> OwnedHandleOrSocket

Consume self and convert into an OwnedGrip.
Source§

impl<T> IntoHandle for T
where OwnedHandle: From<T>,

Source§

fn into_handle(self) -> OwnedHandle

👎Deprecated since 1.0.0: IntoHandle is replaced by From<...> for OwnedHandle or Into<OwnedHandle>
Consumes this object, returning the underlying handle. Read more
Source§

impl<T> IntoRawFilelike for T
where T: IntoRawHandle,

Source§

fn into_raw_filelike(self) -> *mut c_void

Returns the raw value.
Source§

impl<T> IntoRawGrip for T

Source§

fn into_raw_grip(self) -> RawHandleOrSocket

Consume self and convert into an RawGrip.
Source§

impl<T> SetTimes for T
where T: AsFilelike,

Source§

fn set_times( &self, atime: Option<SystemTimeSpec>, mtime: Option<SystemTimeSpec>, ) -> Result<(), Error>

Set the last access and last modification timestamps of an open file handle. Read more
Source§

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

Source§

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>,

Source§

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>,

Source§

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

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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