Skip to main content

InputEvidence

Struct InputEvidence 

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

Per-path bytes, directory membership or explicit absence observed before work.

Capture/validation requires caller custody over sources and parent directories; this value does not lock files, admit a release or retain output artifacts.

Implementations§

Source§

impl InputEvidence

Source

pub fn capture(spec: &InputEvidenceSpec) -> Result<Self, InputEvidenceError>

Capture input authority without building or publishing an artifact cache.

Directories record membership, including empty directories. Missing roots are explicit evidence; links and special files refuse. Keep a genuine source write-exclusion boundary through capture, work and validation.

§Errors

Returns non-absolute paths, invalid exclusions, unsupported files or I/O.

Source

pub const fn entries(&self) -> &BTreeMap<PathBuf, InputEvidenceValue>

Borrow the immutable per-path observations for consumer-owned projection.

Source

pub fn digest(&self) -> Result<InputDigest, InputEvidenceError>

Hash the caller identity and UTF-8 path/value map using big-endian lengths.

Fields are identity, then lexically sorted path/value pairs. Values are absent, directory, or lowercase raw SHA-256 hexadecimal. Each field starts with its u64 byte length in big-endian order. This preserves the existing length-framed consumer evidence encoding without selecting a cache namespace or adding a domain/version prefix.

§Errors

Returns non-UTF-8 paths that this evidence encoding cannot represent.

Source

pub fn digest_relative_to( &self, root: &Path, ) -> Result<InputDigest, InputEvidenceError>

Hash the captured inventory using UTF-8 paths relative to an explicit root.

Path components are separated with /, so an identical inventory and caller identity produce the same digest after checkout relocation. No filesystem is read here. Directory membership, missing paths and file bytes retain the ordinary evidence encoding; the absolute-path Self::digest remains unchanged. This is descriptive input evidence, not a build or executable attestation. Callers own the inventory and its source custody. Standard path-component normalization applies, including redundant ..

§Errors

Rejects a relative root, parent traversal, paths outside the root and non-UTF-8 relative names instead of dropping inputs.

Source

pub fn validate_after( &self, after: &InputEvidenceSpec, ) -> Result<Self, InputEvidenceError>

Capture and validate a post-work inventory against pre-work authority.

Observes the union of original and selected roots once, so disappearing depfiles cannot drop old checks. Returns only the selected inventory, preserving its digest encoding. Previously observed paths are not rehashed when a declared root overlaps a traversed directory. Keep source custody through observation and use of the returned evidence.

Late bytes cannot become pre-build authority. A newly selected missing path is admitted only when an earlier complete, non-excluded directory scan proved its first child absent.

§Errors

Returns changed identity/policy/inputs, unobserved inputs or I/O failures.

Trait Implementations§

Source§

impl Clone for InputEvidence

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 InputEvidence

Source§

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

Formats the value using the given formatter. 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> 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<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, 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.