1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
extern crate rand;

#[cfg(test)]
extern crate regex;
#[macro_use]
extern crate log;

mod combinator;
mod value;

pub use combinator::*;
pub use value::*;

/// A trait for all Generators to implement. This allows pervasive use of
/// impl trait throughout the implementations of the various Generators and
/// allows not specifying concrete types.
pub trait Generator: ::std::fmt::Debug {
    /// Generate a value from the specific implementation of the Generator
    fn generate(&self) -> Vec<u8>;

    /// Generate a value of the negation of the specified Generator
    fn negate(&self) -> Vec<u8>;
}