Skip to main content

Generator

Trait Generator 

Source
pub trait Generator<R: RandomProvider> {
    // Required method
    fn generate(
        &mut self,
        rng: &mut R,
        generators: &mut Generators<R>,
        fields: &IndexMap<String, Vec<Node<Field>>>,
    ) -> Result<Value, ResponseError>;

    // Provided method
    fn boxed(self) -> Box<dyn Generator<R>>
       where Self: Sized + 'static { ... }
}
Expand description

A pluggable generator for the value of a named GraphQL type.

Generators are registered on a ResponseBuilder under a type name via ResponseBuilder::with_generator and invoked when the builder is about to produce a value of that type.

The fields argument is the requested selection grouped by response key (alias if present, else field name); fragment spreads and inline fragments are pre-flattened against the concrete type. Leaf-type generators (scalars, enums) may ignore fields. The generators argument exposes the full registry so an implementation can delegate to other registered generators — most often to fill a leaf field via Generators::generate_scalar.

Required Methods§

Source

fn generate( &mut self, rng: &mut R, generators: &mut Generators<R>, fields: &IndexMap<String, Vec<Node<Field>>>, ) -> Result<Value, ResponseError>

Provided Methods§

Source

fn boxed(self) -> Box<dyn Generator<R>>
where Self: Sized + 'static,

Move this generator into a Box<dyn Generator<R>> for registration with ResponseBuilder::with_generator.

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§