Skip to main content

DeencodeTree

Struct DeencodeTree 

Source
pub struct DeencodeTree {
    pub input: String,
    pub encoders: Vec<EncodeNode>,
}
Expand description

The root of the deencoding tree.

Fields§

§input: String

The input string.

§encoders: Vec<EncodeNode>

The underlying encoding steps.

Implementations§

Source§

impl DeencodeTree

Source

pub fn deencode( input: &str, engines: &[&dyn Engine], depth: usize, ) -> DeencodeTree

Recursively call EncodeNode::make_nodes() and DecodeNode::make_nodes() to build a deencoding tree for the given input.

depth specify the number of encodings in any branch, and encodings are always followed by decodings, so the actual depth of the generated tree is 2 * depth.

The process starts with encoding, so you may not have depth == 0. (see EncodeNode::make_nodes()’s documentation)

Source

pub fn deduplicate(&mut self) -> (Vec<String>, Vec<Vec<u8>>)

Prune the tree by only keeping one instance of any single encoding and decoding output.

Nodes are explored depth-first, in the same order as the engines slice passed to DeencodeTree::deencode(), meaning earlier engines outputs are kept over later engines.

Return the list of unique decodings (including the input, guaranteed to be in the first position), and the list of unique encodings.

Source

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

Format the tree with box drawings, recursively.

Trait Implementations§

Source§

impl Display for DeencodeTree

Source§

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

Format the tree with box drawings, recursively.

Source§

impl Serialize for DeencodeTree

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

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> 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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.