Trait Visitor

Source
pub trait Visitor<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues> {
    type ExtraInfo;

    // Required method
    fn new(
        operation_definition: &'a E::OperationDefinition,
        schema_definition: &'a S,
        variable_values: &'a V,
        cache: &'a Cache<'a, E, S>,
        extra_info: Self::ExtraInfo,
    ) -> Self;

    // Provided methods
    fn visit_variable_argument(
        &mut self,
        argument: &'a E::Argument<false>,
        _input_value_definition: &'a S::InputValueDefinition,
    ) { ... }
    fn visit_field(
        &mut self,
        field: &'a E::Field,
        field_definition: &'a S::FieldDefinition,
        scoped_type: TypeDefinitionReference<'a, S::TypeDefinition>,
        included: bool,
    ) { ... }
    fn leave_field(
        &mut self,
        field: &'a <E as ExecutableDocument>::Field,
        field_definition: &'a S::FieldDefinition,
        scoped_type: TypeDefinitionReference<'a, S::TypeDefinition>,
        included: bool,
    ) { ... }
    fn visit_variable_definition(
        &mut self,
        variable_definition: &'a E::VariableDefinition,
    ) { ... }
}

Required Associated Types§

Required Methods§

Source

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Provided Methods§

Source

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, _input_value_definition: &'a S::InputValueDefinition, )

Source

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, scoped_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Visits the field. If a field is part of a fragment definition, it will be visited every time the fragment is spread.

§Variables
  • field is the field being visited
  • field_definition is the definition of the field
  • scoped_type is the type that the field definition is defined within
  • included is true when the field is known to be included in the response (based on the usage of @include and @skip directives and the variable values)
Source

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, scoped_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Called after the field and all of its children have been visited. See visit_field for more information about the variables.

Source

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Visits the variable definition.

§Variables
  • variable_definition is the variable definition being visited

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>, T4: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3, T4)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo, <T4 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>, T4: Visitor<'a, E, S, V>, T5: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3, T4, T5)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo, <T4 as Visitor<'a, E, S, V>>::ExtraInfo, <T5 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>, T4: Visitor<'a, E, S, V>, T5: Visitor<'a, E, S, V>, T6: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3, T4, T5, T6)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo, <T4 as Visitor<'a, E, S, V>>::ExtraInfo, <T5 as Visitor<'a, E, S, V>>::ExtraInfo, <T6 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>, T4: Visitor<'a, E, S, V>, T5: Visitor<'a, E, S, V>, T6: Visitor<'a, E, S, V>, T7: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3, T4, T5, T6, T7)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo, <T4 as Visitor<'a, E, S, V>>::ExtraInfo, <T5 as Visitor<'a, E, S, V>>::ExtraInfo, <T6 as Visitor<'a, E, S, V>>::ExtraInfo, <T7 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>, T4: Visitor<'a, E, S, V>, T5: Visitor<'a, E, S, V>, T6: Visitor<'a, E, S, V>, T7: Visitor<'a, E, S, V>, T8: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3, T4, T5, T6, T7, T8)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo, <T4 as Visitor<'a, E, S, V>>::ExtraInfo, <T5 as Visitor<'a, E, S, V>>::ExtraInfo, <T6 as Visitor<'a, E, S, V>>::ExtraInfo, <T7 as Visitor<'a, E, S, V>>::ExtraInfo, <T8 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, T0: Visitor<'a, E, S, V>, T1: Visitor<'a, E, S, V>, T2: Visitor<'a, E, S, V>, T3: Visitor<'a, E, S, V>, T4: Visitor<'a, E, S, V>, T5: Visitor<'a, E, S, V>, T6: Visitor<'a, E, S, V>, T7: Visitor<'a, E, S, V>, T8: Visitor<'a, E, S, V>, T9: Visitor<'a, E, S, V>> Visitor<'a, E, S, V> for (T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)

Source§

type ExtraInfo = (<T0 as Visitor<'a, E, S, V>>::ExtraInfo, <T1 as Visitor<'a, E, S, V>>::ExtraInfo, <T2 as Visitor<'a, E, S, V>>::ExtraInfo, <T3 as Visitor<'a, E, S, V>>::ExtraInfo, <T4 as Visitor<'a, E, S, V>>::ExtraInfo, <T5 as Visitor<'a, E, S, V>>::ExtraInfo, <T6 as Visitor<'a, E, S, V>>::ExtraInfo, <T7 as Visitor<'a, E, S, V>>::ExtraInfo, <T8 as Visitor<'a, E, S, V>>::ExtraInfo, <T9 as Visitor<'a, E, S, V>>::ExtraInfo)

Source§

fn new( operation_definition: &'a E::OperationDefinition, schema_definition: &'a S, variable_values: &'a V, cache: &'a Cache<'a, E, S>, extra_info: Self::ExtraInfo, ) -> Self

Source§

fn visit_field( &mut self, field: &'a E::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn leave_field( &mut self, field: &'a <E as ExecutableDocument>::Field, field_definition: &'a S::FieldDefinition, owner_type: TypeDefinitionReference<'a, S::TypeDefinition>, included: bool, )

Source§

fn visit_variable_definition( &mut self, variable_definition: &'a E::VariableDefinition, )

Source§

fn visit_variable_argument( &mut self, argument: &'a E::Argument<false>, input_value_definition: &'a S::InputValueDefinition, )

Implementors§

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, V: VariableValues, C: CostComputer<'a, E, S, V>> Visitor<'a, E, S, V> for ComplexityCost<'a, E, S, V, C>

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, VV: VariableValues> Visitor<'a, E, S, VV> for Deprecation<'a, E, S, VV>

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, VV: VariableValues> Visitor<'a, E, S, VV> for InputSize<'a, E, VV>

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, VV: VariableValues> Visitor<'a, E, S, VV> for QueryDepth

Source§

impl<'a, E: ExecutableDocument, S: SchemaDefinition, VV: VariableValues> Visitor<'a, E, S, VV> for VariableValuesAreValid<'a, E, S, VV>