pub struct Directory { /* private fields */ }Implementations§
Source§impl Directory
impl Directory
Sourcepub fn apply_attrs(&mut self, attrs: SetFileAttributes)
pub fn apply_attrs(&mut self, attrs: SetFileAttributes)
Source§impl Directory
impl Directory
Sourcepub fn get(&self, name: &OsStr) -> Option<&INode>
pub fn get(&self, name: &OsStr) -> Option<&INode>
Examples found in repository?
examples/memfs.rs (line 95)
87 fn lookup(&mut self, parent: INode, name: &OsStr) -> Result<Lookup> {
88 let parent = self
89 .inodes
90 .get(parent)
91 .ok_or(FSError::NoEntry)
92 .and_then(|x| x.as_dir().ok_or(FSError::NotDirectory))?;
93
94 let (child_ino, child) = parent
95 .get(name)
96 // get the inode entry and then map it into (inode, &entry)
97 .and_then(|ino| self.inodes.get(*ino).map(|x| (*ino, x)))
98 .ok_or(FSError::NoEntry)?;
99
100 Ok(Lookup::builder()
101 .attributes(child.getattrs())
102 .inode(child_ino)
103 .build())
104 }Sourcepub fn children(&self) -> DirIter<'_> ⓘ
pub fn children(&self) -> DirIter<'_> ⓘ
Examples found in repository?
examples/memfs.rs (line 134)
112 fn readdir(&mut self, dir_ino: INode, offset: u64) -> Result<Vec<DirEntry>> {
113 let dir_main = self.inodes.get(dir_ino).ok_or(FSError::NoEntry)?;
114 let dir = dir_main.as_dir().ok_or(FSError::NotDirectory)?;
115
116 let dots = [
117 DirEntry::builder()
118 .name(".".into())
119 .inode(dir_ino)
120 .typ(FileType::Directory)
121 .offset(1)
122 .build(),
123 DirEntry::builder()
124 .name("..".into())
125 .inode(dir_main.parent().unwrap_or(ROOT_INODE))
126 .typ(FileType::Directory)
127 .offset(2)
128 .build(),
129 ];
130
131 Ok(dots
132 .into_iter()
133 .chain(
134 dir.children()
135 .enumerate()
136 .map(
137 |(off, v)| (off + 3, v), // add 3 to skip 0 and the two dots
138 )
139 .map(|(offset, (name, inode))| {
140 DirEntry::builder()
141 .name(name.clone())
142 .offset(offset as u64)
143 .inode(inode)
144 .typ(self.inodes.get(inode).unwrap().file_type())
145 .build()
146 }),
147 )
148 .skip(offset as usize)
149 .collect())
150 }Trait Implementations§
Source§impl Attributable for Directory
impl Attributable for Directory
fn getattrs(&self) -> FileAttributes
Source§impl<F> IntoINodeEntry<F> for Directory
impl<F> IntoINodeEntry<F> for Directory
fn with_parent(self, parent: INode) -> INodeEntry<F>
Auto Trait Implementations§
impl Freeze for Directory
impl RefUnwindSafe for Directory
impl Send for Directory
impl Sync for Directory
impl Unpin for Directory
impl UnsafeUnpin for Directory
impl UnwindSafe for Directory
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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>
Converts
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>
Converts
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