Enum generator_combinator::Generator [−][src]
pub enum Generator {}Show variants
AlphaLower, AlphaUpper, Digit, AlphaNumLower, AlphaNumUpper, HexUpper, HexLower, Char(char), Str(String), OneOf { v: Vec<Generator>, is_optional: bool, }, RepeatedN(Box<Generator>, usize), RepeatedMN(Box<Generator>, usize, usize), Sequence(Vec<Generator>), Transform { inner: Box<Generator>, transform_fn: TransformFn, },
Expand description
The building block of generator-combinators.
A Generator
can be constructed from strings, chars, and slices:
use generator_combinator::Generator; let foo = Generator::from("foo"); // generates the string `foo` let dot = Generator::from('.'); // generates the string `.` let countries = Generator::from(&["US", "FR", "NZ", "CH"][..]); // generates strings `US`, `FR`, `NZ`, and `CH`.
Individual Generator
s can be combined as sequences with +
, as variants with |
, and with repetition with * usize
and * (usize, usize)
:
use generator_combinator::Generator; let foo = Generator::from("foo"); let bar = Generator::from("bar"); let foobar = foo.clone() + bar.clone(); // generates `foobar` let foo_or_bar = foo.clone() | bar.clone(); // generates `foo`, `bar` let foo_or_bar_x2 = foo_or_bar.clone() * 2; // generates `foofoo`, `foobar`, `barfoo`, `barbar` let foo_x2_to_x4 = foo.clone() * (2, 4); // generates `foofoo`, `foofoofoo`, `foofoofoofoo`
Variants
Lowercase letters (a-z)
Uppercase letters (A-Z)
Base-10 digits (0-9)
Lowercase letters and digits (a-z0-9)
Uppercase letters and digits (A-Z0-9)
Uppercase hexadecimal values (0-9A-F)
Lowercase hexadecimal values (0-9a-f)
Char(char)
Generates a char
literal.
Str(String)
Generates a String
literal.
Note that this is not a character class.
Str("foo".into())
generates the exact string "foo"
A choice between two or more patterns
As a regex, this would be, eg, (a|b|c)?
(depending on is_optional
)
A pattern repeated exactly n times. This is the same as RepeatedMN
(a, n, n)
As a regex, this would be a{n}
A pattern repeated at least m times, as many as n times.
As a regex, this would be a{m,n}
Two or more sequential patterns.
As a regex, this would be, eg, abc
Wrap the current generator in a user-defined transformation.
Implementations
Create a regular expression that represents the patterns generated.
The result here is currently best-guess. It’s not guaranteed valid, correct, idiomatic, etc.
Generates the String
encoded by the specified num
.
Panics if num
exceeds the length given by Generator::len
Makes this Generator
optional.
As a regex, this is the ?
operator.
pub fn generate_all(&self) -> StringIter<'_>ⓘNotable traits for StringIter<'a>
impl<'a> Iterator for StringIter<'a> type Item = String;
[src]
pub fn generate_all(&self) -> StringIter<'_>ⓘNotable traits for StringIter<'a>
impl<'a> Iterator for StringIter<'a> type Item = String;
[src]Provides an iterator across all possible values for this Generator
.
Includes a user-defined transformation when generating values.
For a value specified by num
, applies the callback cb
for each of the component values
for this Generator.
This may be preferable to [generate_one
] if you want to see the individual components
comprising the final string and/or if you want to avoid the memory allocation and freeing
by creating the values.
Trait Implementations
Add operator for exact repetitions.
The following expressions are equivalent:
use generator_combinator::Generator; let foostr = Generator::from("foofoo"); let foomul = Generator::from("foo") * 2; let fooadd = Generator::from("foo") + Generator::from("foo");
Performs the +=
operation. Read more
Performs the |=
operation. Read more
Mul operator for repetitions between m
and n
(inclusive)
use generator_combinator::Generator; let foo_two_to_five_times = Generator::from("foo") * (2,5);
Mul operator for exact repetitions.
The following expressions are equivalent:
use generator_combinator::Generator; let foostr = Generator::from("foofoo"); let foomul = Generator::from("foo") * 2; let fooadd = Generator::from("foo") + Generator::from("foo");
Performs the *=
operation. Read more
Auto Trait Implementations
impl RefUnwindSafe for Generator
impl UnwindSafe for Generator
Blanket Implementations
Mutably borrows from an owned value. Read more
pub fn vzip(self) -> V