FilesystemReader

Struct FilesystemReader 

Source
pub struct FilesystemReader<'repo, ObjectID: FsVerityHashValue> {
    repo: Option<&'repo Repository<ObjectID>>,
    inodes: HashMap<(u64, u64), Rc<Leaf<ObjectID>>>,
}
Expand description

Helper for reading filesystem trees from disk into composefs representation.

Tracks hardlinks via inode numbers and handles integration with repositories for storing large file content.

Fields§

§repo: Option<&'repo Repository<ObjectID>>§inodes: HashMap<(u64, u64), Rc<Leaf<ObjectID>>>

Implementations§

Source§

impl<ObjectID: FsVerityHashValue> FilesystemReader<'_, ObjectID>

Source

fn read_xattrs(fd: &OwnedFd) -> Result<BTreeMap<Box<OsStr>, Box<[u8]>>>

Source

fn stat(fd: &OwnedFd, ifmt: FileType) -> Result<(Stat, Stat)>

Source

fn read_leaf_content( &mut self, fd: OwnedFd, buf: Stat, ) -> Result<LeafContent<ObjectID>>

Source

fn read_leaf( &mut self, dirfd: &OwnedFd, name: &OsStr, ifmt: FileType, ) -> Result<Rc<Leaf<ObjectID>>>

Source

fn read_directory( &mut self, dirfd: impl AsFd, name: &OsStr, ) -> Result<Directory<ObjectID>>

Reads a directory from disk into composefs representation.

Recursively reads directory contents, tracking hardlinks and optionally reading the directory’s own metadata. Large files are stored in the repository if one was provided.

Source

fn read_inode( &mut self, dirfd: &OwnedFd, name: &OsStr, ifmt: FileType, ) -> Result<Inode<ObjectID>>

Trait Implementations§

Source§

impl<'repo, ObjectID: Debug + FsVerityHashValue> Debug for FilesystemReader<'repo, ObjectID>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'repo, ObjectID> Freeze for FilesystemReader<'repo, ObjectID>

§

impl<'repo, ObjectID> !RefUnwindSafe for FilesystemReader<'repo, ObjectID>

§

impl<'repo, ObjectID> !Send for FilesystemReader<'repo, ObjectID>

§

impl<'repo, ObjectID> !Sync for FilesystemReader<'repo, ObjectID>

§

impl<'repo, ObjectID> Unpin for FilesystemReader<'repo, ObjectID>

§

impl<'repo, ObjectID> !UnwindSafe for FilesystemReader<'repo, ObjectID>

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

Source§

type Output = T

Should always be Self
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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V