#[non_exhaustive]pub enum FileBody {
Regular {
content: Vec<u8>,
is_native_executable: bool,
},
Directory {
files: HashMap<Rc<UnixStr>, Rc<RefCell<Inode>>>,
},
Fifo {
content: VecDeque<u8>,
readers: usize,
writers: usize,
pending_open_wakers: WakerSet,
pending_read_wakers: WakerSet,
pending_write_wakers: WakerSet,
},
Symlink {
target: PathBuf,
},
Terminal {
content: Vec<u8>,
},
}Expand description
Filetype-specific content of a file
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Regular
Regular file
Fields
Directory
Directory
Fields
Fifo
Named pipe
Fields
pending_open_wakers: WakerSetWakers of tasks waiting to open the pipe for reading or writing
A reader and a writer of a pipe are opened synchronously: when a task attempts to open the pipe for reading, it will wait until another task opens the pipe for writing, and vice versa. This field is used to store the wakers of tasks waiting to open the pipe, so that they can be notified when a new reader or writer is opened.
pending_read_wakers: WakerSetWakers of tasks waiting to read from the pipe
When a task attempts to read from an empty pipe, it will wait until another task writes to the pipe. This field is used to store the wakers of such tasks, so that they can be notified when new content is written.
pending_write_wakers: WakerSetWakers of tasks waiting to write to the pipe
When a task attempts to write to a full pipe, it will wait until another task reads from the pipe. This field is used to store the wakers of such tasks, so that they can be notified when content is read and space is available for writing.
Symlink
Symbolic link
Terminal
Terminal device
This is a dummy device that works like a regular file.
Implementations§
Trait Implementations§
Source§impl TryFrom<&FileBody> for VirtualDir<IntoIter<Rc<UnixStr>>>
Creates a VirtualDir that yields entries of a directory.
impl TryFrom<&FileBody> for VirtualDir<IntoIter<Rc<UnixStr>>>
Creates a VirtualDir that yields entries of a directory.
This function will fail if the given file body is not a directory.
impl Eq for FileBody
Auto Trait Implementations§
impl Freeze for FileBody
impl !RefUnwindSafe for FileBody
impl !Send for FileBody
impl !Sync for FileBody
impl Unpin for FileBody
impl UnsafeUnpin for FileBody
impl !UnwindSafe for FileBody
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more