pub struct Generators<R: RandomProvider> { /* private fields */ }Expand description
Registry of Generators keyed by GraphQL type name.
Generators::default pre-registers a generator for each of the five
standard GraphQL scalars: BooleanGenerator, IntGenerator,
FloatGenerator, StringGenerator, and IdGenerator. The
ResponseBuilder starts from this set and layers
any overrides supplied via
ResponseBuilder::with_generator
on top.
Custom generators receive a &mut Generators<R> and can delegate back to
it via Self::generate_scalar (for leaf fields) or Self::try_generate
(for any registered type) — see the module-level docs for the full
picture.
Implementations§
Source§impl<R: RandomProvider> Generators<R>
impl<R: RandomProvider> Generators<R>
Sourcepub fn try_generate(
&mut self,
type_name: &Name,
rng: &mut R,
fields: &IndexMap<String, Vec<Node<Field>>>,
) -> Option<Result<Value, ResponseError>>
pub fn try_generate( &mut self, type_name: &Name, rng: &mut R, fields: &IndexMap<String, Vec<Node<Field>>>, ) -> Option<Result<Value, ResponseError>>
Dispatch to the generator registered for type_name, if any.
Returns None if no generator is registered. The caller decides what to do
in that case (the ResponseBuilder falls back to
default field-by-field object generation for composite types, and to a
default scalar generator for leaf types via Self::generate_scalar).
While the dispatched generator runs, its entry is temporarily removed from
the registry. A generator that recursively asks for its own registered type
will see None on the inner call; generators for other types remain
reachable as normal.
Sourcepub fn generate_scalar(
&mut self,
type_name: &Name,
rng: &mut R,
) -> Result<Value, ResponseError>
pub fn generate_scalar( &mut self, type_name: &Name, rng: &mut R, ) -> Result<Value, ResponseError>
Generate a leaf value for a named scalar type using the registered generator, falling back to an alphanumeric string of length 1–10 if none is registered.
Object generators typically call this to fill scalar fields without hand-rolling generation logic for each leaf.
Trait Implementations§
Source§impl<R: RandomProvider> Default for Generators<R>
impl<R: RandomProvider> Default for Generators<R>
Auto Trait Implementations§
impl<R> !RefUnwindSafe for Generators<R>
impl<R> !Send for Generators<R>
impl<R> !Sync for Generators<R>
impl<R> !UnwindSafe for Generators<R>
impl<R> Freeze for Generators<R>
impl<R> Unpin for Generators<R>
impl<R> UnsafeUnpin for Generators<R>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);