Struct Directory

Source
pub struct Directory<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize>
where D: BlockDevice, T: TimeSource,
{ /* private fields */ }
Expand description

A handle for an open directory on disk, which closes on drop.

In contrast to a RawDirectory, a Directory holds a mutable reference to its parent VolumeManager, which restricts which operations you can perform.

If you drop a value of this type, it closes the directory automatically, but any error that may occur will be ignored. To handle potential errors, use the Directory::close method.

Implementations§

Source§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>
where D: BlockDevice, T: TimeSource,

Source

pub fn new( raw_directory: RawDirectory, volume_mgr: &'a mut VolumeManager<D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, ) -> Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>

Create a new Directory from a RawDirectory

Source

pub fn open_dir<N>( &mut self, name: N, ) -> Result<Directory<'_, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, Error<D::Error>>
where N: ToShortFileName,

Open a directory.

You can then read the directory entries with iterate_dir and open_file_in_dir.

Source

pub fn change_dir<N>(&mut self, name: N) -> Result<(), Error<D::Error>>
where N: ToShortFileName,

Change to a directory, mutating this object.

You can then read the directory entries with iterate_dir and open_file_in_dir.

Source

pub fn find_directory_entry<N>( &mut self, name: N, ) -> Result<DirEntry, Error<D::Error>>
where N: ToShortFileName,

Look in a directory for a named file.

Source

pub fn iterate_dir<F>(&mut self, func: F) -> Result<(), Error<D::Error>>
where F: FnMut(&DirEntry),

Call a callback function for each directory entry in a directory.

Source

pub fn open_file_in_dir<N>( &mut self, name: N, mode: Mode, ) -> Result<File<'_, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>, Error<D::Error>>
where N: ToShortFileName,

Open a file with the given full path. A file can only be opened once.

Source

pub fn delete_file_in_dir<N>(&mut self, name: N) -> Result<(), Error<D::Error>>
where N: ToShortFileName,

Delete a closed file with the given filename, if it exists.

Source

pub fn make_dir_in_dir<N>(&mut self, name: N) -> Result<(), Error<D::Error>>
where N: ToShortFileName,

Make a directory inside this directory

Source

pub fn to_raw_directory(self) -> RawDirectory

Convert back to a raw directory

Source

pub fn close(self) -> Result<(), Error<D::Error>>

Consume the Directory handle and close it. The behavior of this is similar to using core::mem::drop or letting the Directory go out of scope, except this lets the user handle any errors that may occur in the process, whereas when using drop, any errors will be discarded silently.

Trait Implementations§

Source§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Debug for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>
where D: BlockDevice, T: TimeSource,

Source§

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

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

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Drop for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>
where D: BlockDevice, T: TimeSource,

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Freeze for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>

§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> RefUnwindSafe for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>

§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Send for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>
where D: Send, T: Send,

§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Sync for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>
where D: Sync, T: Sync,

§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> Unpin for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>

§

impl<'a, D, T, const MAX_DIRS: usize, const MAX_FILES: usize, const MAX_VOLUMES: usize> !UnwindSafe for Directory<'a, D, T, MAX_DIRS, MAX_FILES, MAX_VOLUMES>

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

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.