Visitor

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, _name: &str, _index: usize) { ... } fn visit_literal(&mut self, _s: &str) { ... } fn visit_bytes(&mut self, _val: &[u8]) { ... } fn visit_regex(&mut self, _generated: &[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 crate::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 paths or transitions
  • are more accurate
  • care about characterics of the arbitrary data, such as if a string is ascii or not. Or implement a visitor to build some structured state, such as a tree a collection of generated data.

Required Methods§

Source

fn new() -> Self

Instiates the visitor before traversal.

Provided Methods§

Source

fn visit_or(&mut self, _index: usize)

Visits the X | Y branch in the grammar and provides the indexth path that was taken.

Source

fn visit_concat(&mut self)

Visits the X Y operation.

Source

fn visit_optional(&mut self, _was_chosen: bool)

Visits X? and provides whether or not X will be evaluated.

Source

fn visit_repetition(&mut self, _reps: usize)

Visits X*, X+, X{k}, or X{min,max} and provides how many repetitions were arbitrarily selected.

Source

fn visit_reference(&mut self, _name: &str, _index: usize)

Visits a use/reference of a defined rule and provides the rule name and index/id.

Source

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

Visits the literal str.

Source

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

Visits the literal &[u8].

Source

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

Visits regex and provides the arbitrary regex that was generated.

Source

fn visit_group(&mut self)

Visits the (X) group.

Source

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

Visits String pre-defined rule and provides the generated arbitrary str.

Source

fn visit_char(&mut self, _c: char)

Visits char pre-defined rule and provides the generated arbitrary char.

Source

fn visit_f32(&mut self, _f: f32)

Visits f32 pre-defined rule and provides the generated arbitrary f32.

Source

fn visit_f64(&mut self, _f: f64)

Visits f64 pre-defined rule and provides the generated arbitrary f64.

Source

fn visit_u8(&mut self, _num: u8)

Visits u8 pre-defined rule and provides the generated arbitrary u8.

Source

fn visit_u16(&mut self, _num: u16)

Visits u16 pre-defined rule and provides the generated arbitrary u16.

Source

fn visit_u32(&mut self, _num: u32)

Visits u32 pre-defined rule and provides the generated arbitrary u32.

Source

fn visit_u64(&mut self, _num: u64)

Visits u64 pre-defined rule and provides the generated arbitrary u64.

Source

fn visit_u128(&mut self, _num: u128)

Visits u128 pre-defined rule and provides the generated arbitrary u128.

Source

fn visit_usize(&mut self, _num: usize)

Visits usize pre-defined rule and provides the generated arbitrary usize.

Source

fn visit_i8(&mut self, _num: i8)

Visits i8 pre-defined rule and provides the generated arbitrary i8.

Source

fn visit_i16(&mut self, _num: i16)

Visits i16 pre-defined rule and provides the generated arbitrary i16.

Source

fn visit_i32(&mut self, _num: i32)

Visits i32 pre-defined rule and provides the generated arbitrary i32.

Source

fn visit_i64(&mut self, _num: i64)

Visits i64 pre-defined rule and provides the generated arbitrary i64.

Source

fn visit_i128(&mut self, _num: i128)

Visits i128 pre-defined rule and provides the generated arbitrary i128.

Source

fn visit_isize(&mut self, _num: isize)

Visits isize pre-defined rule and provides the generated arbitrary 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, _: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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, name: &str, 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§