Trait Visitor

Source
pub trait Visitor {
    // Required method
    fn new() -> Self;

    // Provided methods
    fn visit_or(&mut self, _index: usize) { ... }
    fn visit_concat(&mut self) { ... }
    fn visit_optional(&mut self, _was_chosen: bool) { ... }
    fn visit_repetition(&mut self, _reps: usize) { ... }
    fn visit_reference(&mut self, _index: usize) { ... }
    fn visit_literal(&mut self, _s: &str) { ... }
    fn visit_bytes(&mut self, _val: &[u8]) { ... }
    fn visit_regex(&mut self, _val: &[u8]) { ... }
    fn visit_group(&mut self) { ... }
    fn visit_u16(&mut self, _num: u16) { ... }
    fn visit_str(&mut self, _s: &str) { ... }
}
Expand description

Defines state that is built during Grammar::expression. This is implemented for

  • String to produce string expressions
  • Vec<u8> to produce byte sequences
  • u64 to produce equivalence class IDs of the traversal path.

You can implement this yourself, for example if you want to implement equivalence classes that

  • ignore order
  • ignore certain rules
  • are more accurate
  • care about characterics of the arbitrary data, such as if a string is ascii or not.

Required Methods§

Source

fn new() -> Self

Provided Methods§

Source

fn visit_or(&mut self, _index: usize)

Source

fn visit_concat(&mut self)

Source

fn visit_optional(&mut self, _was_chosen: bool)

Source

fn visit_repetition(&mut self, _reps: usize)

Source

fn visit_reference(&mut self, _index: usize)

Source

fn visit_literal(&mut self, _s: &str)

Source

fn visit_bytes(&mut self, _val: &[u8])

Source

fn visit_regex(&mut self, _val: &[u8])

Source

fn visit_group(&mut self)

Source

fn visit_u16(&mut self, _num: u16)

Source

fn visit_str(&mut self, _s: &str)

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl Visitor for u64

Returns an identifier of the path taken during the traversal.

Source§

fn new() -> Self

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, was_chosen: bool)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_literal(&mut self, _: &str)

Source§

fn visit_bytes(&mut self, _: &[u8])

Source§

fn visit_regex(&mut self, _: &[u8])

Source§

fn visit_group(&mut self)

Source§

impl Visitor for ()

Source§

impl Visitor for String

Returns an arbitrary expression String matching the grammar.

§Panics

Panics if the regex or byte sequence evaluates to non-utf8. This can be avoided by avoiding such regexes or non-utf8 bytes in the grammar.

Source§

fn new() -> Self

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, regex_result: &[u8])

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl Visitor for Vec<u8>

Returns an arbitrary byte sequence matching the grammar.

Source§

fn new() -> Self

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, regex_result: &[u8])

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor> Visitor for (T,)

Source§

fn new() -> (T,)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor> Visitor for (T, B)

Source§

fn new() -> (T, B)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor> Visitor for (T, B, C)

Source§

fn new() -> (T, B, C)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor> Visitor for (T, B, C, D)

Source§

fn new() -> (T, B, C, D)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor> Visitor for (T, B, C, D, E)

Source§

fn new() -> (T, B, C, D, E)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor> Visitor for (T, B, C, D, E, F)

Source§

fn new() -> (T, B, C, D, E, F)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor, G: Visitor> Visitor for (T, B, C, D, E, F, G)

Source§

fn new() -> (T, B, C, D, E, F, G)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor, G: Visitor, H: Visitor> Visitor for (T, B, C, D, E, F, G, H)

Source§

fn new() -> (T, B, C, D, E, F, G, H)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor, G: Visitor, H: Visitor, I: Visitor> Visitor for (T, B, C, D, E, F, G, H, I)

Source§

fn new() -> (T, B, C, D, E, F, G, H, I)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor, G: Visitor, H: Visitor, I: Visitor, J: Visitor> Visitor for (T, B, C, D, E, F, G, H, I, J)

Source§

fn new() -> (T, B, C, D, E, F, G, H, I, J)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor, G: Visitor, H: Visitor, I: Visitor, J: Visitor, K: Visitor> Visitor for (T, B, C, D, E, F, G, H, I, J, K)

Source§

fn new() -> (T, B, C, D, E, F, G, H, I, J, K)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Source§

impl<T: Visitor, B: Visitor, C: Visitor, D: Visitor, E: Visitor, F: Visitor, G: Visitor, H: Visitor, I: Visitor, J: Visitor, K: Visitor, L: Visitor> Visitor for (T, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn new() -> (T, B, C, D, E, F, G, H, I, J, K, L)

Source§

fn visit_or(&mut self, index: usize)

Source§

fn visit_concat(&mut self)

Source§

fn visit_optional(&mut self, b: bool)

Source§

fn visit_repetition(&mut self, reps: usize)

Source§

fn visit_reference(&mut self, index: usize)

Source§

fn visit_literal(&mut self, val: &str)

Source§

fn visit_bytes(&mut self, val: &[u8])

Source§

fn visit_regex(&mut self, val: &[u8])

Source§

fn visit_group(&mut self)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_str(&mut self, s: &str)

Implementors§