[][src]Enum edit_tree::edit_tree::EditTree

pub enum EditTree<T> {
    MatchNode {
        pre: usize,
        suf: usize,
        left: Option<Box<EditTree<T>>>,
        right: Option<Box<EditTree<T>>>,
    },
    ReplaceNode {
        replacee: Vec<T>,
        replacement: Vec<T>,
    },
}

Enum representing a TreeNode of an Graph<TreeNode<T>,Place>.

Variants

MatchNode

Fields of MatchNode

pre: usizesuf: usizeleft: Option<Box<EditTree<T>>>right: Option<Box<EditTree<T>>>
ReplaceNode

Fields of ReplaceNode

replacee: Vec<T>replacement: Vec<T>

Methods

impl<T> EditTree<T> where
    T: PartialEq + Eq + Clone
[src]

pub fn create_tree(a: &[T], b: &[T]) -> Self[src]

Returns a edit tree specifying how to derive b from a.

Caution: when using with stringy types. UTF-8 multi byte chars will not be treated well. Consider passing in &char instead.

pub fn pretty_print(&self, format_vec: impl Fn(&[T]) -> String + Copy) -> String[src]

Returns a s-String representation of the EditTree.

format_vec defines how to transform the Vec<T> of a ReplaceNode into a String. This is useful when implementing Display for your own types where conversion to String may not be straight forward.

Trait Implementations

impl<T: PartialEq + Eq + Clone + Debug> Apply<T> for EditTree<T>[src]

fn apply(&self, form: &[T]) -> Option<Vec<T>>[src]

Recursively applies the nodes stored in the edit tree. Returns None if the tree is not applicable to form.

impl<T: Clone> Clone for EditTree<T>[src]

impl<T: Eq> Eq for EditTree<T>[src]

impl<T: PartialEq> PartialEq<EditTree<T>> for EditTree<T>[src]

impl<T: Debug> Debug for EditTree<T>[src]

impl Display for EditTree<char>[src]

impl<T: Hash> Hash for EditTree<T>[src]

impl<T> StructuralPartialEq for EditTree<T>[src]

impl<T> StructuralEq for EditTree<T>[src]

impl<T> Serialize for EditTree<T> where
    T: Serialize
[src]

impl<'de, T> Deserialize<'de> for EditTree<T> where
    T: Deserialize<'de>, 
[src]

Auto Trait Implementations

impl<T> Send for EditTree<T> where
    T: Send

impl<T> Sync for EditTree<T> where
    T: Sync

impl<T> Unpin for EditTree<T> where
    T: Unpin

impl<T> UnwindSafe for EditTree<T> where
    T: UnwindSafe

impl<T> RefUnwindSafe for EditTree<T> where
    T: RefUnwindSafe

Blanket Implementations

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = !

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> DeserializeOwned for T where
    T: Deserialize<'de>, 
[src]