Trait Visitor

Source
pub trait Visitor {
Show 26 methods // 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_str(&mut self, _s: &str) { ... } fn visit_char(&mut self, _c: char) { ... } fn visit_f32(&mut self, _f: f32) { ... } fn visit_f64(&mut self, _f: f64) { ... } fn visit_u8(&mut self, _num: u8) { ... } fn visit_u16(&mut self, _num: u16) { ... } fn visit_u32(&mut self, _num: u32) { ... } fn visit_u64(&mut self, _num: u64) { ... } fn visit_u128(&mut self, _num: u128) { ... } fn visit_usize(&mut self, _num: usize) { ... } fn visit_i8(&mut self, _num: i8) { ... } fn visit_i16(&mut self, _num: i16) { ... } fn visit_i32(&mut self, _num: i32) { ... } fn visit_i64(&mut self, _num: i64) { ... } fn visit_i128(&mut self, _num: i128) { ... } fn visit_isize(&mut self, _num: isize) { ... }
}
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. See crate::Grammar::how_many for more info.

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_str(&mut self, _s: &str)

Source

fn visit_char(&mut self, _c: char)

Source

fn visit_f32(&mut self, _f: f32)

Source

fn visit_f64(&mut self, _f: f64)

Source

fn visit_u8(&mut self, _num: u8)

Source

fn visit_u16(&mut self, _num: u16)

Source

fn visit_u32(&mut self, _num: u32)

Source

fn visit_u64(&mut self, _num: u64)

Source

fn visit_u128(&mut self, _num: u128)

Source

fn visit_usize(&mut self, _num: usize)

Source

fn visit_i8(&mut self, _num: i8)

Source

fn visit_i16(&mut self, _num: i16)

Source

fn visit_i32(&mut self, _num: i32)

Source

fn visit_i64(&mut self, _num: i64)

Source

fn visit_i128(&mut self, _num: i128)

Source

fn visit_isize(&mut self, _num: isize)

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_u8(&mut self, num: u8)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_u32(&mut self, num: u32)

Source§

fn visit_u64(&mut self, num: u64)

Source§

fn visit_u128(&mut self, num: u128)

Source§

fn visit_usize(&mut self, num: usize)

Source§

fn visit_i8(&mut self, num: i8)

Source§

fn visit_i16(&mut self, num: i16)

Source§

fn visit_i32(&mut self, num: i32)

Source§

fn visit_i64(&mut self, num: i64)

Source§

fn visit_i128(&mut self, num: i128)

Source§

fn visit_isize(&mut self, num: isize)

Source§

fn visit_f32(&mut self, num: f32)

Source§

fn visit_f64(&mut self, num: f64)

Source§

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

Source§

fn visit_char(&mut self, c: char)

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_u8(&mut self, num: u8)

Source§

fn visit_u16(&mut self, num: u16)

Source§

fn visit_u32(&mut self, num: u32)

Source§

fn visit_u64(&mut self, num: u64)

Source§

fn visit_u128(&mut self, num: u128)

Source§

fn visit_usize(&mut self, num: usize)

Source§

fn visit_i8(&mut self, num: i8)

Source§

fn visit_i16(&mut self, num: i16)

Source§

fn visit_i32(&mut self, num: i32)

Source§

fn visit_i64(&mut self, num: i64)

Source§

fn visit_i128(&mut self, num: i128)

Source§

fn visit_isize(&mut self, num: isize)

Source§

fn visit_f32(&mut self, num: f32)

Source§

fn visit_f64(&mut self, num: f64)

Source§

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

Source§

fn visit_char(&mut self, c: char)

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§