Skip to main content

PlannedEdits

Struct PlannedEdits 

Source
pub(crate) struct PlannedEdits {
    root: RepositoryRoot,
    files: BTreeMap<RepositoryPath, Edit>,
}
Expand description

A set of file snapshots and optional replacements from multiple targets.

Fields§

§root: RepositoryRoot§files: BTreeMap<RepositoryPath, Edit>

Implementations§

Source§

impl PlannedEdits

Source

pub(crate) fn new(root: &RepositoryRoot) -> Self

Start a transaction rooted at a repository.

Source

pub(crate) fn add( &mut self, path: RepositoryPath, expected: Option<Vec<u8>>, replacement: Option<Vec<u8>>, ) -> Result<(), EditError>

Add one repository-relative file snapshot and an optional replacement.

expected = None means the file must not exist yet. replacement = None records a read-only snapshot so other target edits cannot invalidate it.

Adding the exact same snapshot and replacement for a path already present is a no-op, so an ecosystem adapter that recomputes the same shared edit for multiple units (for example, a Cargo workspace-wide version write shared by several packages) can contribute it once per unit without tracking which unit contributed it first.

§Errors

Returns an error for a path that is a symlink or escapes the root, or for a path already contributed with different expected or replacement content.

Source

pub(crate) fn compose<E: From<EditError>>( &mut self, path: RepositoryPath, current: &[u8], render: impl FnOnce(&[u8]) -> Result<Vec<u8>, E>, ) -> Result<(), E>

Rewrite the bytes planned for path, or plan an edit of current when the path has none yet.

render receives the bytes planned so far, so several contributors can change one file. The stale check stays on current.

§Errors

Returns the error of render, or an edit error for a path that is a symlink or escapes the root, or that was planned from other bytes.

Source

pub(crate) fn apply(&self) -> Result<(), EditError>

Check every source snapshot, then apply all replacements in one file transaction.

§Errors

Returns an error if any path changed since planning or safe application fails.

Source

pub(crate) fn changed_paths(&self) -> Vec<PathBuf>

Return repository-relative paths that this transaction will write.

Trait Implementations§

Source§

impl Clone for PlannedEdits

Source§

fn clone(&self) -> PlannedEdits

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 PlannedEdits

Source§

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

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

impl Eq for PlannedEdits

Source§

impl PartialEq for PlannedEdits

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for PlannedEdits

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
§

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

§

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

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.

§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
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, <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.
§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more