Trait bolero_generator::driver::Driver
source · pub trait Driver: Sized {
Show 18 methods
// Required methods
fn gen_u8(&mut self, min: Bound<&u8>, max: Bound<&u8>) -> Option<u8>;
fn gen_i8(&mut self, min: Bound<&i8>, max: Bound<&i8>) -> Option<i8>;
fn gen_u16(&mut self, min: Bound<&u16>, max: Bound<&u16>) -> Option<u16>;
fn gen_i16(&mut self, min: Bound<&i16>, max: Bound<&i16>) -> Option<i16>;
fn gen_u32(&mut self, min: Bound<&u32>, max: Bound<&u32>) -> Option<u32>;
fn gen_i32(&mut self, min: Bound<&i32>, max: Bound<&i32>) -> Option<i32>;
fn gen_u64(&mut self, min: Bound<&u64>, max: Bound<&u64>) -> Option<u64>;
fn gen_i64(&mut self, min: Bound<&i64>, max: Bound<&i64>) -> Option<i64>;
fn gen_u128(&mut self, min: Bound<&u128>, max: Bound<&u128>) -> Option<u128>;
fn gen_i128(&mut self, min: Bound<&i128>, max: Bound<&i128>) -> Option<i128>;
fn gen_usize(
&mut self,
min: Bound<&usize>,
max: Bound<&usize>
) -> Option<usize>;
fn gen_isize(
&mut self,
min: Bound<&isize>,
max: Bound<&isize>
) -> Option<isize>;
fn gen_f32(&mut self, min: Bound<&f32>, max: Bound<&f32>) -> Option<f32>;
fn gen_f64(&mut self, min: Bound<&f64>, max: Bound<&f64>) -> Option<f64>;
fn gen_char(&mut self, min: Bound<&char>, max: Bound<&char>) -> Option<char>;
fn gen_bool(&mut self, probability: Option<f32>) -> Option<bool>;
fn gen_from_bytes<Gen, T>(
&mut self,
len: RangeInclusive<usize>,
gen: Gen
) -> Option<T>
where Gen: FnMut(&[u8]) -> Option<(usize, T)>;
// Provided method
fn gen<T: TypeGenerator>(&mut self) -> Option<T> { ... }
}
Expand description
Trait for driving the generation of a value
In a test engine, this is typically backed by a byte slice, but other drivers can be used instead, e.g. an RNG implementation.
Required Methods§
fn gen_u8(&mut self, min: Bound<&u8>, max: Bound<&u8>) -> Option<u8>
fn gen_i8(&mut self, min: Bound<&i8>, max: Bound<&i8>) -> Option<i8>
fn gen_u16(&mut self, min: Bound<&u16>, max: Bound<&u16>) -> Option<u16>
fn gen_i16(&mut self, min: Bound<&i16>, max: Bound<&i16>) -> Option<i16>
fn gen_u32(&mut self, min: Bound<&u32>, max: Bound<&u32>) -> Option<u32>
fn gen_i32(&mut self, min: Bound<&i32>, max: Bound<&i32>) -> Option<i32>
fn gen_u64(&mut self, min: Bound<&u64>, max: Bound<&u64>) -> Option<u64>
fn gen_i64(&mut self, min: Bound<&i64>, max: Bound<&i64>) -> Option<i64>
fn gen_u128(&mut self, min: Bound<&u128>, max: Bound<&u128>) -> Option<u128>
fn gen_i128(&mut self, min: Bound<&i128>, max: Bound<&i128>) -> Option<i128>
fn gen_usize(&mut self, min: Bound<&usize>, max: Bound<&usize>) -> Option<usize>
fn gen_isize(&mut self, min: Bound<&isize>, max: Bound<&isize>) -> Option<isize>
fn gen_f32(&mut self, min: Bound<&f32>, max: Bound<&f32>) -> Option<f32>
fn gen_f64(&mut self, min: Bound<&f64>, max: Bound<&f64>) -> Option<f64>
fn gen_char(&mut self, min: Bound<&char>, max: Bound<&char>) -> Option<char>
fn gen_bool(&mut self, probability: Option<f32>) -> Option<bool>
sourcefn gen_from_bytes<Gen, T>(
&mut self,
len: RangeInclusive<usize>,
gen: Gen
) -> Option<T>where
Gen: FnMut(&[u8]) -> Option<(usize, T)>,
fn gen_from_bytes<Gen, T>( &mut self, len: RangeInclusive<usize>, gen: Gen ) -> Option<T>where Gen: FnMut(&[u8]) -> Option<(usize, T)>,
Generate a value from bytes off this generator
len
is the size of the slice that should be passed to gen
. The range’s minimal size
is the minimal amount of bytes needed to properly generate an input. The range’s maximal
value should be so that every T
can be generated by gen
from a slice of this length.
gen
is the function that actually does the generation. It takes as input the byte slice,
and returns either None
(if not enough bytes were provided to build a T
, this can
happen even with a slice of maximum length but should happen as rarely as possible), or
a Some
value if it could generate a T
. In this case, it also returns the number of
bytes that were actually consumed from the slice.
Note that gen
may be called multiple times with increasing slice lengths, eg. if the
driver is in forced mode.
Provided Methods§
sourcefn gen<T: TypeGenerator>(&mut self) -> Option<T>
fn gen<T: TypeGenerator>(&mut self) -> Option<T>
Generate a value with type T