Struct KnownPaths

Source
pub struct KnownPaths {
    derivations: HashMap<StorePath<String>, ([u8; 32], Derivation)>,
    outputs_to_drvpath: HashMap<StorePath<String>, StorePath<String>>,
}
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.

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

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> MaybeSendSync for T