Struct tvix_glue::known_paths::KnownPaths

source ·
pub struct KnownPaths {
    derivations: HashMap<StorePath<String>, ([u8; 32], Derivation)>,
    outputs_to_drvpath: HashMap<StorePath<String>, StorePath<String>>,
    outputs_to_fetches: HashMap<StorePath<String>, (String, Fetch)>,
}
Expand description

Struct keeping track of all known Derivations in the current evaluation. This keeps both the Derivation struct, as well as the “Hash derivation modulo”.

Fields§

§derivations: HashMap<StorePath<String>, ([u8; 32], Derivation)>

All known derivation or FOD hashes.

Keys are derivation paths, values are a tuple of the “hash derivation modulo” and the Derivation struct itself.

§outputs_to_drvpath: HashMap<StorePath<String>, StorePath<String>>

A map from output path to (one) drv path. Note that in the case of FODs, multiple drvs can produce the same output path. We use one of them.

§outputs_to_fetches: HashMap<StorePath<String>, (String, Fetch)>

A map from output path to fetches (and their names).

Implementations§

source§

impl KnownPaths

source

pub fn get_hash_derivation_modulo( &self, drv_path: &StorePath<String>, ) -> Option<&[u8; 32]>

Fetch the opaque “hash derivation modulo” for a given derivation path.

source

pub fn get_drv_by_drvpath( &self, drv_path: &StorePath<String>, ) -> Option<&Derivation>

Return a reference to the Derivation for a given drv path.

source

pub fn get_drv_path_for_output_path( &self, output_path: &StorePath<String>, ) -> Option<&StorePath<String>>

Return the drv path of the derivation producing the passed output path. Note there can be multiple Derivations producing the same output path in flight; this function will only return one of them.

source

pub fn add_derivation(&mut self, drv_path: StorePath<String>, drv: Derivation)

Insert a new Derivation into this struct. The Derivation struct must pass validation, and its output paths need to be fully calculated. All input derivations this refers to must also be inserted to this struct.

source

pub fn add_fetch<'a>( &mut self, fetch: Fetch, name: &'a str, ) -> Result<StorePathRef<'a>, BuildStorePathError>

Insert a new Fetch into this struct, which must have an expected hash (otherwise we wouldn’t be able to calculate the store path). Fetches without a known hash need to be fetched inside builtins.

source

pub fn get_fetch_for_output_path( &self, output_path: &StorePath<String>, ) -> Option<(String, Fetch)>

Return the name and fetch producing the passed output path. Note there can also be (multiple) Derivations producing the same output path.

source

pub fn get_derivations( &self, ) -> impl Iterator<Item = (&StorePath<String>, &Derivation)>

Returns an iterator over all known derivations and their store path.

Trait Implementations§

source§

impl Debug for KnownPaths

source§

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

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

impl Default for KnownPaths

source§

fn default() -> KnownPaths

Returns the “default value” for a type. Read more

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

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
source§

impl<T> FutureExt for T

source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<T> Pointable for T

source§

const ALIGN: usize = _

The alignment of pointer.
§

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

§

type Output = T

Should always be Self
source§

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

§

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>,

§

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