Weave documentation
Rust referenceweave-agentfs-diff

weave-agentfs-diff · diff

Source declarations, signatures and documentation for diff.

Source: sigil/weave/local/agentfs-diff/src/diff.rs. SHA-256: 85189316d858f9e3f817333fcaeeebc97d467b158b83c28bbea2c89ed20c26e5.

This reference follows declared source modules, retains conditional attributes, and includes public declarations and implementation methods. Private-module re-exports and trait resolution require the compiler; this is a source reference, not a claim that every listed item is a root import. Function bodies and constant values are omitted.

diff::DiffKind

Kind of difference between files/directories

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum DiffKind {
    /// File/directory added in target
    Added,
    /// File/directory modified
    Modified,
    /// File/directory deleted from source
    Deleted,
    /// File/directory moved/renamed
    Moved,
    /// Metadata changed only
    MetadataOnly,
    /// Content changed only
    ContentOnly,
}

Source line: 10.

diff::Diff

A single difference between two file systems

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Diff {
/// Path in source file system

pub source_path: Option<PathBuf>,
/// Path in target file system

pub target_path: Option<PathBuf>,
/// Kind of difference

pub kind: DiffKind,
/// Detailed diff information

pub details: DiffDetails,
/// Timestamp when diff was detected

pub timestamp: DateTime<Utc>
}

Source line: 27.

diff::DiffDetails

Detailed information about a difference

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum DiffDetails {
    /// File difference details
    File(FileDiff),
    /// Directory difference details
    Directory(DirectoryDiff),
    /// Symlink difference details
    Symlink(SymlinkDiff),
}

Source line: 46.

diff::FileDiff

File-specific diff information

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FileDiff {
/// Size in source

pub source_size: Option<u64>,
/// Size in target

pub target_size: Option<u64>,
/// Content hash in source

pub source_hash: Option<String>,
/// Content hash in target

pub target_hash: Option<String>,
/// Metadata differences

pub metadata_diff: Option<MetadataDiff>
}

Source line: 57.

diff::DirectoryDiff

Directory-specific diff information

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct DirectoryDiff {
/// Number of entries in source

pub source_entries: Option<usize>,
/// Number of entries in target

pub target_entries: Option<usize>,
/// Metadata differences

pub metadata_diff: Option<MetadataDiff>
}

Source line: 76.

diff::SymlinkDiff

Symlink-specific diff information

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SymlinkDiff {
/// Target in source

pub source_target: Option<PathBuf>,
/// Target in target

pub target_target: Option<PathBuf>
}

Source line: 89.

diff::MetadataDiff

Metadata differences

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetadataDiff {
/// Permission differences

pub permissions_changed: bool,
/// Owner agent changed

pub owner_changed: bool,
/// Source owner identity

pub source_owner: Option<Identity>,
/// Target owner identity

pub target_owner: Option<Identity>,
/// Modified time changed

pub mtime_changed: bool,
/// Source modified time

pub source_mtime: Option<DateTime<Utc>>,
/// Target modified time

pub target_mtime: Option<DateTime<Utc>>
}

Source line: 99.

diff::Diff::path

Get the primary path for this diff

pub fn path(&self) -> &PathBuf;

Source line: 124.

diff::Diff::is_content_change

Check if this is a content change

pub fn is_content_change(&self) -> bool;

Source line: 132.

diff::Diff::is_metadata_only

Check if this is a metadata-only change

pub fn is_metadata_only(&self) -> bool;

Source line: 137.

On this page