pub struct DatasetPrebuffer { /* private fields */ }Expand description
Eagerly download all facets for a dataset profile into the
local cache, returning a dataset handle that every facet
accessor and every group accessor takes as its first
argument. After this returns, every subsequent facet read
served by vectordata::TestDataView hits the merkle-
verified mmap fast path with no further network traffic.
Signature: dataset_prebuffer(source) -> Handle
Why a handle, not a count. Returning a value the
downstream accessors consume makes prebuffer part of
the dataflow graph: DCE keeps the chain alive because
vector_at(prebuffered, q) needs prebuffered to be
resolvable, which forces evaluation. A binding such as
init prebuffered = dataset_prebuffer(...) whose result
nothing reads is pruned, so a workload threads the handle
through its accessors.
source is the canonical dataset:profile string. The
returned handle names the dataset rather than one facet: a
facet accessor opens its own facet of source from it
([DatasetHandle::resolve_facet]), and a group accessor
(dataset_facets, dataset_distance_function, …) reads
the dataset’s group ([DatasetHandle::resolve_group]).
A dataset that does not resolve yields no handle, and the resolve error goes to the audit log. A profile the dataset lacks, or a facet whose download fails, is logged there too and still yields the handle: prebuffering is a best-effort warm-up, and an accessor that then reads a missing facet fails with that facet’s own error.
Implementations§
Trait Implementations§
Source§impl Default for DatasetPrebuffer
impl Default for DatasetPrebuffer
Source§impl PolydatNode for DatasetPrebuffer
impl PolydatNode for DatasetPrebuffer
Source§fn compiled_slot(
&self,
wire_types: &[PortType],
_engine: Engine,
) -> Option<CompiledSlotKit>
fn compiled_slot( &self, wire_types: &[PortType], _engine: Engine, ) -> Option<CompiledSlotKit>
(ptr, len) slot
pairs; vector outputs write into kernel-owned scratch.
Checked by the compiled-kernel builders AFTER
Self::compiled_u64 — pure-scalar nodes never need it.
Default None: the node stays on typed eval. Read moreSource§fn scratch_layout(&self) -> Vec<ScratchElem>
fn scratch_layout(&self) -> Vec<ScratchElem>
Self::eval_in. Empty for a node that evaluates over
Values alone, which is every node but a native cone.Source§fn eval_in(
&self,
scratch: &mut [ScratchBuf],
inputs: &[Value],
outputs: &mut [Value],
)
fn eval_in( &self, scratch: &mut [ScratchBuf], inputs: &[Value], outputs: &mut [Value], )
Self::eval with the node’s scratch, which the evaluating
state owns and hands in: storage belongs to the state, never to
the node, which is shared by every state of the program.Source§fn commutativity(&self) -> Commutativity
fn commutativity(&self) -> Commutativity
Source§fn accepts_none_inputs(&self) -> bool
fn accepts_none_inputs(&self) -> bool
Value::None inputs
directly rather than have the kernel propagate None through
it. Default: false — most nodes follow none_semantics.md Rule 1
(None in → None out, no eval invocation). Read moreSource§fn compiled_u64(&self) -> Option<CompiledU64Op>
fn compiled_u64(&self) -> Option<CompiledU64Op>
Source§fn jit_constants(&self) -> Vec<u64>
fn jit_constants(&self) -> Vec<u64>
Source§fn purity(&self) -> Purity
fn purity(&self) -> Purity
runtime_model.md’s D2 axiom. Default:
Purity::Pure. Override to declare an observable
side channel (Purity::SideChannel) or
eval-call-spanning state (Purity::Nondeterministic). Read moreSource§fn simd_variant(&self) -> Option<SimdVariant>
fn simd_variant(&self) -> Option<SimdVariant>
Source§fn fusion_subgraph(&self) -> Option<FusionSubgraph<'_>>
fn fusion_subgraph(&self) -> Option<FusionSubgraph<'_>>
PolydatProgram::canonical_hash) walks THROUGH fusion
nodes into this subgraph, so identity is invariant to the
engine mix: jit=off and jit=auto compiles of the same
source hash identically, and resume-skip matching survives
mode changes. Default None: ordinary nodes hash as
themselves.Auto Trait Implementations§
impl Freeze for DatasetPrebuffer
impl RefUnwindSafe for DatasetPrebuffer
impl Send for DatasetPrebuffer
impl Sync for DatasetPrebuffer
impl Unpin for DatasetPrebuffer
impl UnsafeUnpin for DatasetPrebuffer
impl UnwindSafe for DatasetPrebuffer
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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