Skip to main content

StatementSummary

Struct StatementSummary 

Source
pub struct StatementSummary {
    pub shape_tag: u8,
    pub native_kind: Option<Lexeme>,
    pub token_start: usize,
    pub token_end: usize,
}
Expand description

A statement reduced to its shape and the span of its tokens.

The shape carries the rename-invariant signal that aligns two statement sequences; the span is how the text itself is recovered, for the lexical comparison that decides whether aligned statements are actually copies.

The span is kept rather than the token texts because a compound statement covers its whole body: cloning the texts would cost a copy of the token stream once per level of nesting, while an index pair costs the same whatever the statement contains. It is a position into one file’s stream and nothing more — identity in this tool is content-derived, and no fingerprint reads this type.

Fields§

§shape_tag: u8

Shape tag of the statement (see Shape::tag).

§native_kind: Option<Lexeme>

Native kind name when the statement is a Shape::Native node.

§token_start: usize

Index of the statement’s first token in its file’s stream.

§token_end: usize

Index one past the statement’s last token in its file’s stream.

Implementations§

Source§

impl StatementSummary

Source

pub fn of(node: &IrNode, tokens: &[Token]) -> Self

Summarise one node against its file’s token stream.

Source

pub fn tokens<'a>(&self, tokens: &'a [Token]) -> &'a [Token]

The statement’s tokens, resolved against the stream it was summarised from. Empty for any other stream, since the span would not be its own.

Trait Implementations§

Source§

impl Clone for StatementSummary

Source§

fn clone(&self) -> StatementSummary

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 StatementSummary

Source§

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

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

impl Eq for StatementSummary

Source§

impl PartialEq for StatementSummary

Source§

fn eq(&self, other: &StatementSummary) -> 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 StatementSummary

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, 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> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
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.