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
Stringto produce string expressionsVec<u8>to produce byte sequencesu64to produce equivalence class IDs of the traversal path. Seecrate::Grammar::how_manyfor 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§
Provided Methods§
Sourcefn visit_or(&mut self, _index: usize)
fn visit_or(&mut self, _index: usize)
Visits the X | Y branch in the grammar and provides the indexth path that was taken.
Sourcefn visit_concat(&mut self)
fn visit_concat(&mut self)
Visits the X Y operation.
Sourcefn visit_optional(&mut self, _was_chosen: bool)
fn visit_optional(&mut self, _was_chosen: bool)
Visits X? and provides whether or not X will be evaluated.
Sourcefn visit_repetition(&mut self, _reps: usize)
fn visit_repetition(&mut self, _reps: usize)
Visits X*, X+, X{k}, or X{min,max} and provides how many repetitions were arbitrarily selected.
Sourcefn visit_reference(&mut self, _name: &str, _index: usize)
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.
Sourcefn visit_literal(&mut self, _s: &str)
fn visit_literal(&mut self, _s: &str)
Visits the literal str.
Sourcefn visit_bytes(&mut self, _val: &[u8])
fn visit_bytes(&mut self, _val: &[u8])
Visits the literal &[u8].
Sourcefn visit_regex(&mut self, _generated: &[u8])
fn visit_regex(&mut self, _generated: &[u8])
Visits regex and provides the arbitrary regex that was generated.
Sourcefn visit_group(&mut self)
fn visit_group(&mut self)
Visits the (X) group.
Sourcefn visit_str(&mut self, _s: &str)
fn visit_str(&mut self, _s: &str)
Visits String pre-defined rule and provides the generated arbitrary str.
Sourcefn visit_char(&mut self, _c: char)
fn visit_char(&mut self, _c: char)
Visits char pre-defined rule and provides the generated arbitrary char.
Sourcefn visit_f32(&mut self, _f: f32)
fn visit_f32(&mut self, _f: f32)
Visits f32 pre-defined rule and provides the generated arbitrary f32.
Sourcefn visit_f64(&mut self, _f: f64)
fn visit_f64(&mut self, _f: f64)
Visits f64 pre-defined rule and provides the generated arbitrary f64.
Sourcefn visit_u8(&mut self, _num: u8)
fn visit_u8(&mut self, _num: u8)
Visits u8 pre-defined rule and provides the generated arbitrary u8.
Sourcefn visit_u16(&mut self, _num: u16)
fn visit_u16(&mut self, _num: u16)
Visits u16 pre-defined rule and provides the generated arbitrary u16.
Sourcefn visit_u32(&mut self, _num: u32)
fn visit_u32(&mut self, _num: u32)
Visits u32 pre-defined rule and provides the generated arbitrary u32.
Sourcefn visit_u64(&mut self, _num: u64)
fn visit_u64(&mut self, _num: u64)
Visits u64 pre-defined rule and provides the generated arbitrary u64.
Sourcefn visit_u128(&mut self, _num: u128)
fn visit_u128(&mut self, _num: u128)
Visits u128 pre-defined rule and provides the generated arbitrary u128.
Sourcefn visit_usize(&mut self, _num: usize)
fn visit_usize(&mut self, _num: usize)
Visits usize pre-defined rule and provides the generated arbitrary usize.
Sourcefn visit_i8(&mut self, _num: i8)
fn visit_i8(&mut self, _num: i8)
Visits i8 pre-defined rule and provides the generated arbitrary i8.
Sourcefn visit_i16(&mut self, _num: i16)
fn visit_i16(&mut self, _num: i16)
Visits i16 pre-defined rule and provides the generated arbitrary i16.
Sourcefn visit_i32(&mut self, _num: i32)
fn visit_i32(&mut self, _num: i32)
Visits i32 pre-defined rule and provides the generated arbitrary i32.
Sourcefn visit_i64(&mut self, _num: i64)
fn visit_i64(&mut self, _num: i64)
Visits i64 pre-defined rule and provides the generated arbitrary i64.
Sourcefn visit_i128(&mut self, _num: i128)
fn visit_i128(&mut self, _num: i128)
Visits i128 pre-defined rule and provides the generated arbitrary i128.
Sourcefn visit_isize(&mut self, _num: isize)
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.
impl Visitor for u64
Returns an identifier of the path taken during the traversal.
fn new() -> Self
fn visit_or(&mut self, index: usize)
fn visit_concat(&mut self)
fn visit_optional(&mut self, was_chosen: bool)
fn visit_reference(&mut self, _: &str, index: usize)
fn visit_repetition(&mut self, reps: usize)
fn visit_literal(&mut self, _: &str)
fn visit_bytes(&mut self, _: &[u8])
fn visit_regex(&mut self, _: &[u8])
fn visit_group(&mut self)
Source§impl Visitor for String
Returns an arbitrary expression String matching the grammar.
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.
fn new() -> Self
fn visit_literal(&mut self, val: &str)
fn visit_bytes(&mut self, val: &[u8])
fn visit_regex(&mut self, regex_result: &[u8])
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)
fn visit_f32(&mut self, num: f32)
fn visit_f64(&mut self, num: f64)
fn visit_str(&mut self, s: &str)
fn visit_char(&mut self, c: char)
Source§impl Visitor for Vec<u8>
Returns an arbitrary byte sequence matching the grammar.
impl Visitor for Vec<u8>
Returns an arbitrary byte sequence matching the grammar.