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§
fn generate( &mut self, rng: &mut R, generators: &mut Generators<R>, fields: &IndexMap<String, Vec<Node<Field>>>, ) -> Result<Value, ResponseError>
Provided Methods§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".