pub struct Manifest {
pub format: String,
pub format_version: u32,
pub capabilities: Vec<String>,
pub schemas: Vec<SchemaTemplateRef>,
pub compression: String,
pub blob_ordering: Option<String>,
pub directory: DirectoryRef,
pub packs: Vec<PackRef>,
pub metadata: Metadata,
}Expand description
The packed-format manifest.json — the only mutable object per dataset.
Folds the metadata, directory pointer and pack table into one tiny JSON so a cold reader needs exactly one manifest + one directory + N pack-range fetches (no separate header or metadata object).
Fields§
§format: StringAlways PACKED_FORMAT ("stt-packed").
format_version: u32Manifest schema version.
capabilities: Vec<String>Required-to-understand feature declarations (spec §3.1). Each entry
names a feature the writer used that RE-TYPES existing tile columns
(registry: KNOWN_CAPABILITIES); a reader MUST refuse a dataset
declaring a capability it does not implement. Empty when no such
feature was used — omitted from the JSON so pre-capabilities builds
stay byte-identical. Additive columns never need a capability.
schemas: Vec<SchemaTemplateRef>formatVersion ≥ 2: the dataset’s Arrow schema templates, embedded
directly in the manifest (no extra object class — every session
already fetches the manifest). Each entry is a layer schema’s IPC
prefix, referenced from v2 layer frames by blake3-128 hash. Sorted by
hash and deduped (byte-reproducible manifests); a reader validates
blake3(data) == hash for every entry at open, so a corrupt manifest
fails loudly, dataset-level, before any tile fetch. Absent/empty on
formatVersion-1 manifests (the key is omitted).
compression: StringBlob compression codec (always "zstd", per-blob, no shared dict).
blob_ordering: Option<String>The concrete blob byte-ordering the writer resolved and laid down
(spatial | time-major | hilbert3 | morton3) — see
crate::curve::BlobOrdering. Additive/optional: pre-2026-07 archives
omit it (a reader infers the order from the (pack_id, offset) layout).
Never auto/measured — those resolve to a concrete order at build.
Omitted from the JSON when None so pre-field builds stay byte-identical.
directory: DirectoryRefPointer to the encoded directory object.
packs: Vec<PackRef>Pack table. Index == pack_id.
metadata: MetadataThe full crate::metadata::Metadata JSON, verbatim.
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Manifest
impl<'de> Deserialize<'de> for Manifest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for Manifest
impl RefUnwindSafe for Manifest
impl Send for Manifest
impl Sync for Manifest
impl Unpin for Manifest
impl UnsafeUnpin for Manifest
impl UnwindSafe for Manifest
Blanket Implementations§
impl<T> Allocation for T
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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>
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