Skip to main content

FileChange

Struct FileChange 

Source
pub struct FileChange {
    pub path: PathBuf,
    pub kind: ChangeKind,
    pub content: Option<Vec<u8>>,
    pub file_id: Option<FileId>,
    pub blob: Option<GitOid>,
}
Expand description

A single file change captured from a workspace.

For Added and Modified changes, content holds the new file bytes. For Deleted changes, content is None.

file_id is the stable FileId assigned when the file was created. It survives renames and modifications, enabling rename-aware merge (§5.8). None if FileId tracking was not available at collect time.

blob is the git blob OID for the new content (computed via git hash-object). Present for Added and Modified changes when the collect step had access to the git repo. Enables O(1) hash-equality checks in the resolve step without comparing raw bytes.

Fields§

§path: PathBuf

Path relative to the workspace root (and to the repo root).

§kind: ChangeKind

Type of change.

§content: Option<Vec<u8>>

New file content (None for deletions).

§file_id: Option<FileId>

Stable file identity that persists across renames (§5.8).

None only for legacy artifacts and explicit test fixtures.

§blob: Option<GitOid>

Git blob OID for the new content (present for Add/Modify; None for Delete and for changes collected without git access).

When populated, the resolve step uses OID equality instead of byte comparison for hash-equality checks, which is both faster and avoids loading content into memory.

Implementations§

Source§

impl FileChange

Source

pub const fn new( path: PathBuf, kind: ChangeKind, content: Option<Vec<u8>>, ) -> Self

Create a new FileChange without FileId or blob OID metadata.

Suitable for explicit legacy/test fixtures. Production collect paths should prefer FileChange::with_identity.

Source

pub const fn with_identity( path: PathBuf, kind: ChangeKind, content: Option<Vec<u8>>, file_id: Option<FileId>, blob: Option<GitOid>, ) -> Self

Create a new FileChange with full identity metadata.

Preferred constructor for Phase 3+ code paths where file_id and blob OID are available from the workspace’s FileId map and git object store.

Source

pub const fn is_deletion(&self) -> bool

Returns true if this change is a deletion.

Source

pub const fn has_content(&self) -> bool

Returns true if this change adds or modifies a file (has content).

Trait Implementations§

Source§

impl Clone for FileChange

Source§

fn clone(&self) -> FileChange

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FileChange

Source§

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

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

impl PartialEq for FileChange

Source§

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

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

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

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for FileChange

Source§

impl StructuralPartialEq for FileChange

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<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

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

Source§

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.

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