Skip to main content

DiffScope

Struct DiffScope 

Source
pub struct DiffScope<S: Store> { /* private fields */ }
Expand description

Confirms that a patch only touched files the step was granted.

§Which grant

The one the step was granted, passed in here. Never the work order’s requests: that is what the model asked for, and a checker that scoped a patch against the proposer’s own request would be asking the proposer to mark its own homework.

Implementations§

Source§

impl<S: Store> DiffScope<S>

Source

pub fn new(store: S, scope: GrantSet) -> Self

A scope checker over scope, reading raw patches from store.

Source

pub fn rooted_at(self, root: impl Into<String>) -> Self

Treat patch paths as relative to root before comparing them.

A patch says src/auth.rs; a grant says fs:write:/work/repo/src/**. The two only meet if the checker knows which directory the patch is relative to, so set this to the workspace the grant is written against.

With no root the patch path is compared as an absolute path from the repository root — src/auth.rs becomes /src/auth.rs — which is how every grant in this codebase is spelled.

Source

pub fn named(self, name: impl Into<String>, version: u32) -> Self

Name it something more specific, so a ledger says which scope this was.

Trait Implementations§

Source§

impl<S: Store> Checker for DiffScope<S>

Source§

fn id(&self) -> CheckerId

Which checker this is, and at what version. Read more
Source§

fn judge<'life0, 'life1, 'life2, 'async_trait>( &'life0 self, _order: &'life1 WorkOrder, condensate: &'life2 Condensate, ) -> Pin<Box<dyn Future<Output = Judgement> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Decide. The part an implementation writes. Read more
Source§

fn grants(&self) -> GrantSet

The authority this checker needs. Read more
Source§

fn check<'life0, 'life1, 'life2, 'life3, 'async_trait>( &'life0 self, order: &'life1 WorkOrder, condensate: &'life2 Condensate, signer: &'life3 dyn Sign, ) -> Pin<Box<dyn Future<Output = Result<Evidence, CheckError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait,

Check the authority, decide, bind the verdict to its inputs, and sign. Read more
Source§

impl<S: Debug + Store> Debug for DiffScope<S>

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<S> Freeze for DiffScope<S>
where S: Freeze,

§

impl<S> RefUnwindSafe for DiffScope<S>
where S: RefUnwindSafe,

§

impl<S> Send for DiffScope<S>

§

impl<S> Sync for DiffScope<S>

§

impl<S> Unpin for DiffScope<S>
where S: Unpin,

§

impl<S> UnsafeUnpin for DiffScope<S>
where S: UnsafeUnpin,

§

impl<S> UnwindSafe for DiffScope<S>
where S: UnwindSafe,

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

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 = !

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V