Skip to main content

TreeManifest

Struct TreeManifest 

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

Indexed tree manifest.

Holds file entries as raw CBOR bytes with a sorted offset table for O(log N) single-file lookup. Metadata (shards, totals) is parsed eagerly.

Constructed via TreeManifestBuilder or TreeManifest::open.

Implementations§

Source§

impl TreeManifest

Source

pub fn builder() -> TreeManifestBuilder

Create a builder for constructing a new manifest.

Source

pub fn from_commit( store: &impl ObjectStoreExt, commit: &Commit, reader: &CommitReader, ) -> Result<Option<Self>>

Load and decrypt the TreeManifest from a commit.

Extracts the manifest CID from the commit, fetches the encrypted blob from the store, decrypts it with the reader’s content key, and parses it.

Returns None if the commit has no manifest_cid.

Source

pub fn as_bytes(&self) -> &[u8]

Returns the serialized CBOR bytes for encryption and storage.

Source

pub fn lookup(&self, path: &str) -> Result<ManifestEntry>

Look up a single file by path. O(log N).

Binary searches the offset table, parsing one entry per probe to compare paths.

Source

pub fn iter(&self) -> ManifestIter<'_>

Iterate all file entries in path-sorted order. O(N).

Source

pub fn shards(&self) -> &[ShardReference]

Returns the shard references.

Source

pub fn total_files(&self) -> u64

Total number of files.

Source

pub fn total_bytes(&self) -> u64

Total bytes across all files.

Source

pub fn paths_hash(&self) -> &[u8; 32]

SHA256 hash of sorted paths.

Source

pub fn entry_count(&self) -> usize

Number of file entries.

Source

pub fn list_dir(&self, path: &str) -> Result<Vec<DirChild>>

List the immediate children of a directory.

Returns files and subdirectories directly under path. Use "" for the root directory.

Entries are sorted by path, so we can efficiently find the range of entries under a prefix and derive the directory listing.

Source

pub fn entries_by_shard(&self) -> Result<Vec<Vec<ManifestEntry>>>

Group file entries by shard index.

Returns a vec indexed by shard position, where each element contains the ManifestEntry items stored in that shard. Callers can iterate shard-by-shard to decrypt each shard once and extract all files from it.

Auto Trait Implementations§

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

Source§

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

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.
Source§

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

Source§

fn vzip(self) -> V

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