Skip to main content

Generator

Struct Generator 

Source
pub struct Generator { /* private fields */ }
Expand description

A statement writer.

Cheap to build and cheap to clone, and a run is a seed, so the same generator with the same seed writes the same statement on any machine and in any order.

Implementations§

Source§

impl Generator

Source

pub fn new() -> Self

A generator over the default catalog.

Source

pub fn with_catalog(catalog: Catalog) -> Self

A generator over a catalog somebody else built, which is the case that matters.

Source

pub fn budget(self, tokens: u32) -> Self

How many tokens to write before finishing as cheaply as possible.

Source

pub fn repeats(self, times: u32) -> Self

How many times one rule may appear on the path from the root before the same thing happens.

One is every statement written with no nesting in it at all. Three is a couple of levels of subquery and of arithmetic, which is where the interesting shapes are.

Source

pub fn statement(&self, seed: u64) -> String

One statement, from this seed.

§Panics

Never, in the sense that matters: the rule it writes from is one of the 1088 in the table and every_rule_in_the_table_can_be_written_down says every one of those has a finite text.

Source

pub fn from_rule(&self, rule: &str, seed: u64) -> Result<String>

One piece of a statement, from a named rule.

For a harness that wants expressions rather than statements, and for the tests, which are much easier to read over Expression than over Statement.

§Errors

There is no rule with that name, or there is and nothing finite can be written from it.

Trait Implementations§

Source§

impl Clone for Generator

Source§

fn clone(&self) -> Generator

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Generator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Generator

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.