Skip to main content

RuntimeRef

Struct RuntimeRef 

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

A runtime the node resolves by name, as opposed to runtime = "self" which resolves inside the bundle.

Wire form is slash-separated, either <name>/<version> (stock, e.g. mesofact/0.8.20) or <namespace>/<name>/<version> (a custom runtime published under an org/project, e.g. acme/site/1.2.3). The namespace is what keeps two orgs’ site runtimes from colliding in one node cache.

This parses the general form even though BundleRuntime::parse accepts only mesofact/<ver> today: the node cache layout is the thing that is expensive to change later (bytes on disk across a fleet), the manifest field is not. Accepting a namespaced ref here early is forward-compatible and unreachable in practice until a manifest can express one — R746-F6 versioned the contract such an expression would range over, but left the field itself a single runtime name (W272 §7).

Implementations§

Source§

impl RuntimeRef

Source

pub fn parse(s: &str) -> Result<Self, BundleError>

Parse the wire form (<name>/<ver> or <ns>/<name>/<ver>).

Every segment is validated to [A-Za-z0-9._+-]+ and rejected if it is . or ... That is not decoration: these segments are joined onto a node’s cache directory, so a permissive parse would let a published manifest name a write target outside the cache. Same reasoning as store::checked_rel for bundle content paths.

Source

pub fn namespace(&self) -> Option<&str>

Publishing namespace (None for a stock runtime).

Source

pub fn name(&self) -> &str

Runtime name, e.g. mesofact.

Source

pub fn version(&self) -> &str

Exact runtime version, e.g. 0.8.20.

Source

pub fn as_wire(&self) -> String

The wire string this was parsed from.

Source

pub fn cache_rel_bin(&self, triple: &str, bin: &str) -> PathBuf

Cache-relative path to the binary named bin: runtimes/[<ns>/]<name>/<ver>/<triple>/<bin>.

bin is a bare filename, never a path — it comes from a published manifest, and joining an unchecked one onto the cache dir would be the same write-outside-the-cache primitive RuntimeRef::parse exists to deny. Callers pass a compile-time constant (SERVE_BIN, kamaji’s FEED_BIN_NAME); check_bin_name enforces it for the manifest-supplied side.

Source

pub fn cache_rel_dir(&self, triple: &str) -> PathBuf

Cache-relative directory holding this runtime’s binaries for triple: runtimes/[<ns>/]<name>/<ver>/<triple>.

Source

pub fn cache_rel_serve(&self, triple: &str) -> PathBuf

Cache-relative path to the serve binary: runtimes/[<ns>/]<name>/<ver>/<triple>/serve. The SERVE_BIN case of cache_rel_bin.

Source

pub fn asset_manifest_prefix(&self) -> String

Object-store key prefix every published asset manifest for this runtime sits directly under: runtimes/[<ns>/]<name>/<ver>/.

The trailing slash is load-bearing — without it mesofact/0.8.2 would list mesofact/0.8.20’s assets too. Entries below it are <triple>.toml and nothing else, so a listed key with a further / in it belongs to some other ref and is not this runtime’s.

Source

pub fn asset_manifest_key(&self, triple: &str) -> String

Object-store key of the published asset manifest for triple: runtimes/[<ns>/]<name>/<ver>/<triple>.toml.

By name, not by content — this is the one mutable-shaped key in the scheme, and it is what turns “mesofact/0.8.20 on x86_64 musl” into a blake3 the node can then verify bytes against.

Trait Implementations§

Source§

impl Clone for RuntimeRef

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for RuntimeRef

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Display for RuntimeRef

Source§

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

Formats the value using the given formatter. Read more
Source§

impl Eq for RuntimeRef

Source§

impl Hash for RuntimeRef

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Ord for RuntimeRef

Source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 (const: unstable) · Source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 (const: unstable) · Source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 (const: unstable) · Source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized,

Restrict a value to a certain interval. Read more
Source§

fn clamp_to<R>(self, range: R) -> Self
where Self: Sized, R: ClampBounds<Self>,

🔬This is a nightly-only experimental API. (clamp_to)
Restrict a value to a certain range. Read more
Source§

impl PartialEq for RuntimeRef

Source§

fn eq(&self, other: &Self) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl PartialOrd for RuntimeRef

Source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 (const: unstable) · Source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 (const: unstable) · Source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 (const: unstable) · Source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 (const: unstable) · Source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by the >= operator. Read more
Source§

impl StructuralPartialEq for RuntimeRef

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Comparable<K> for Q
where Q: Ord + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn compare(&self, key: &K) -> Ordering

Compare self to key and return their ordering.
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

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.