Skip to main content

Hunk

Struct Hunk 

Source
pub struct Hunk {
    pub old_start: usize,
    pub old_count: usize,
    pub new_start: usize,
    pub new_count: usize,
    pub lines: Vec<HunkLine>,
}
Expand description

A hunk in a unified diff

Fields§

§old_start: usize

Starting line in original file

§old_count: usize

Number of lines in original file

§new_start: usize

Starting line in new file

§new_count: usize

Number of lines in new file

§lines: Vec<HunkLine>

Lines in the hunk

Implementations§

Source§

impl Hunk

Source

pub fn new( old_start: usize, old_count: usize, new_start: usize, new_count: usize, ) -> Self

Creates a new hunk

§Arguments
  • old_start - Starting line in original file
  • old_count - Number of lines in original file
  • new_start - Starting line in new file
  • new_count - Number of lines in new file
§Returns

A new Hunk with empty lines

§Examples
use rust_diff_analyzer::git::Hunk;

let hunk = Hunk::new(10, 5, 10, 7);
assert_eq!(hunk.old_start, 10);
assert!(hunk.lines.is_empty());
Source

pub fn added_count(&self) -> usize

Returns count of added lines

§Returns

Number of added lines in hunk

§Examples
use rust_diff_analyzer::git::{Hunk, HunkLine};

let mut hunk = Hunk::new(1, 1, 1, 2);
hunk.lines.push(HunkLine::added(1, "new line".to_string()));
assert_eq!(hunk.added_count(), 1);
Source

pub fn removed_count(&self) -> usize

Returns count of removed lines

§Returns

Number of removed lines in hunk

§Examples
use rust_diff_analyzer::git::{Hunk, HunkLine};

let mut hunk = Hunk::new(1, 2, 1, 1);
hunk.lines
    .push(HunkLine::removed(1, "old line".to_string()));
assert_eq!(hunk.removed_count(), 1);
Source

pub fn added_lines(&self) -> Vec<usize>

Returns all added line numbers in new file

§Returns

Vector of line numbers that were added

§Examples
use rust_diff_analyzer::git::{Hunk, HunkLine};

let mut hunk = Hunk::new(1, 1, 1, 2);
hunk.lines.push(HunkLine::added(5, "new".to_string()));
hunk.lines.push(HunkLine::added(6, "lines".to_string()));
assert_eq!(hunk.added_lines(), vec![5, 6]);
Source

pub fn removed_lines(&self) -> Vec<usize>

Returns all removed line numbers in old file

§Returns

Vector of line numbers that were removed

§Examples
use rust_diff_analyzer::git::{Hunk, HunkLine};

let mut hunk = Hunk::new(1, 2, 1, 1);
hunk.lines.push(HunkLine::removed(3, "old".to_string()));
assert_eq!(hunk.removed_lines(), vec![3]);
Source

pub fn removed_positions_in_new(&self) -> Vec<usize>

Returns the new-file line positions where removals occurred

Each removed line is attributed to the line number that occupies its place in the new file, so removals can be mapped onto semantic units extracted from post-change content. A removal at the very end of the hunk yields the first line after the hunk.

§Returns

Vector of new-file line numbers, one per removed line

§Examples
use rust_diff_analyzer::git::{Hunk, HunkLine};

let mut hunk = Hunk::new(1, 3, 1, 2);
hunk.lines
    .push(HunkLine::context(1, 1, "fn a() {".to_string()));
hunk.lines
    .push(HunkLine::removed(2, "    old();".to_string()));
hunk.lines.push(HunkLine::context(3, 2, "}".to_string()));
assert_eq!(hunk.removed_positions_in_new(), vec![2]);

Trait Implementations§

Source§

impl Clone for Hunk

Source§

fn clone(&self) -> Hunk

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 Hunk

Source§

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

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

impl<'de> Deserialize<'de> for Hunk

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Eq for Hunk

Source§

impl PartialEq for Hunk

Source§

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

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

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

Inequality operator !=. Read more
Source§

impl Serialize for Hunk

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Hunk

Auto Trait Implementations§

§

impl Freeze for Hunk

§

impl RefUnwindSafe for Hunk

§

impl Send for Hunk

§

impl Sync for Hunk

§

impl Unpin for Hunk

§

impl UnsafeUnpin for Hunk

§

impl UnwindSafe for Hunk

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> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

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