pub struct ComposedVisitor<'a, Context, A: Visitor<'a, Context>, B: Visitor<'a, Context>> {
pub a: A,
pub b: B,
/* private fields */
}
Expand description
This structure implements the Visitor
trait and runs two child Visitors in parallel,
executing and calling callbacks on them both.
During traversal the Composed Visitor will keep track of the visitor’s VisitFlow
signals and
will avoid calling callbacks on them appropriately, while letting the other visitor continue as
usual. In short, this visitor aims to minimize the work it does while preserving expected
behavior.
Visitors may be composed indefinitely since a Composed Visitor can be passed into another
Composed Visitor, as long as all visitors accept the same Context
type.
Fields§
§a: A
§b: B
Implementations§
Source§impl<'a, C, A: Visitor<'a, C>, B: Visitor<'a, C>> ComposedVisitor<'a, C, A, B>
impl<'a, C, A: Visitor<'a, C>, B: Visitor<'a, C>> ComposedVisitor<'a, C, A, B>
Sourcepub fn new(a: A, b: B) -> ComposedVisitor<'a, C, A, B>
pub fn new(a: A, b: B) -> ComposedVisitor<'a, C, A, B>
Composes two input visitors into one Composed Visitor.
Trait Implementations§
Source§impl<'a, A, B> Default for ComposedVisitor<'a, ValidationContext<'a>, A, B>where
A: ValidationRule<'a>,
B: ValidationRule<'a>,
impl<'a, A, B> Default for ComposedVisitor<'a, ValidationContext<'a>, A, B>where
A: ValidationRule<'a>,
B: ValidationRule<'a>,
Source§impl<'a, A, B> ValidationRule<'a> for ComposedVisitor<'a, ValidationContext<'a>, A, B>where
A: ValidationRule<'a>,
B: ValidationRule<'a>,
impl<'a, A, B> ValidationRule<'a> for ComposedVisitor<'a, ValidationContext<'a>, A, B>where
A: ValidationRule<'a>,
B: ValidationRule<'a>,
Source§impl<'a, C, A: Visitor<'a, C>, B: Visitor<'a, C>> Visitor<'a, C> for ComposedVisitor<'a, C, A, B>
impl<'a, C, A: Visitor<'a, C>, B: Visitor<'a, C>> Visitor<'a, C> for ComposedVisitor<'a, C, A, B>
Source§fn enter_document(
&mut self,
ctx: &mut C,
document: &'a Document<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_document( &mut self, ctx: &mut C, document: &'a Document<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a Document is visited and before its child nodes are visited.
Source§fn leave_document(
&mut self,
ctx: &mut C,
document: &'a Document<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_document( &mut self, ctx: &mut C, document: &'a Document<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a Document and its child nodes were visited.
Source§fn enter_operation(
&mut self,
ctx: &mut C,
operation: &'a OperationDefinition<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_operation( &mut self, ctx: &mut C, operation: &'a OperationDefinition<'a>, info: &VisitInfo, ) -> VisitFlow
Called when an
OperationDefinition
node is visited and before its child nodes are visited.Source§fn leave_operation(
&mut self,
ctx: &mut C,
operation: &'a OperationDefinition<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_operation( &mut self, ctx: &mut C, operation: &'a OperationDefinition<'a>, info: &VisitInfo, ) -> VisitFlow
Called after an
OperationDefinition
and its child node were visited.Source§fn enter_fragment(
&mut self,
ctx: &mut C,
fragment: &'a FragmentDefinition<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_fragment( &mut self, ctx: &mut C, fragment: &'a FragmentDefinition<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a
FragmentDefinition
node is visited and before its child nodes are visited.Source§fn leave_fragment(
&mut self,
ctx: &mut C,
fragment: &'a FragmentDefinition<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_fragment( &mut self, ctx: &mut C, fragment: &'a FragmentDefinition<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a
FragmentDefinition
node and its child nodes were visited.Source§fn enter_variable_definition(
&mut self,
ctx: &mut C,
var_def: &'a VariableDefinition<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_variable_definition( &mut self, ctx: &mut C, var_def: &'a VariableDefinition<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a
VariableDefinition
node is visited and before its child nodes are visited.Source§fn leave_variable_definition(
&mut self,
ctx: &mut C,
var_def: &'a VariableDefinition<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_variable_definition( &mut self, ctx: &mut C, var_def: &'a VariableDefinition<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a
VariableDefinition
node and its child nodes were visited.Source§fn enter_selection_set(
&mut self,
ctx: &mut C,
selection_set: &'a SelectionSet<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_selection_set( &mut self, ctx: &mut C, selection_set: &'a SelectionSet<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a
SelectionSet
node is visited and before its child nodes are visited.Source§fn leave_selection_set(
&mut self,
ctx: &mut C,
selection_set: &'a SelectionSet<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_selection_set( &mut self, ctx: &mut C, selection_set: &'a SelectionSet<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a
SelectionSet
node and its child nodes were visited.Source§fn enter_fragment_spread(
&mut self,
ctx: &mut C,
fragment_spread: &'a FragmentSpread<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_fragment_spread( &mut self, ctx: &mut C, fragment_spread: &'a FragmentSpread<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a
FragmentSpread
node is visited and before its child nodes are visited.Source§fn leave_fragment_spread(
&mut self,
ctx: &mut C,
fragment_spread: &'a FragmentSpread<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_fragment_spread( &mut self, ctx: &mut C, fragment_spread: &'a FragmentSpread<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a
FragmentSpread
node and its child nodes were visited.Source§fn enter_inline_fragment(
&mut self,
ctx: &mut C,
inline_fragment: &'a InlineFragment<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_inline_fragment( &mut self, ctx: &mut C, inline_fragment: &'a InlineFragment<'a>, info: &VisitInfo, ) -> VisitFlow
Called when an
InlineFragment
node is visited and before its child nodes are visited.Source§fn leave_inline_fragment(
&mut self,
ctx: &mut C,
inline_fragment: &'a InlineFragment<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_inline_fragment( &mut self, ctx: &mut C, inline_fragment: &'a InlineFragment<'a>, info: &VisitInfo, ) -> VisitFlow
Called after an
InlineFragment
node and its child nodes were visited.Source§fn enter_field(
&mut self,
ctx: &mut C,
field: &'a Field<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_field( &mut self, ctx: &mut C, field: &'a Field<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a Field node is visited and before its child nodes are visited.
Source§fn leave_field(
&mut self,
ctx: &mut C,
field: &'a Field<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_field( &mut self, ctx: &mut C, field: &'a Field<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a Field node and its child nodes were visited.
Source§fn enter_directive(
&mut self,
ctx: &mut C,
directive: &'a Directive<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_directive( &mut self, ctx: &mut C, directive: &'a Directive<'a>, info: &VisitInfo, ) -> VisitFlow
Called when a Directive node is visited and before its child nodes are visited.
Source§fn leave_directive(
&mut self,
ctx: &mut C,
directive: &'a Directive<'a>,
info: &VisitInfo,
) -> VisitFlow
fn leave_directive( &mut self, ctx: &mut C, directive: &'a Directive<'a>, info: &VisitInfo, ) -> VisitFlow
Called after a Directive node and its child nodes were visited.
Source§fn enter_argument(
&mut self,
ctx: &mut C,
argument: &'a Argument<'a>,
info: &VisitInfo,
) -> VisitFlow
fn enter_argument( &mut self, ctx: &mut C, argument: &'a Argument<'a>, info: &VisitInfo, ) -> VisitFlow
Called when an Argument node is visited and before its child nodes are visited.
Auto Trait Implementations§
impl<'a, Context, A, B> Freeze for ComposedVisitor<'a, Context, A, B>
impl<'a, Context, A, B> RefUnwindSafe for ComposedVisitor<'a, Context, A, B>
impl<'a, Context, A, B> Send for ComposedVisitor<'a, Context, A, B>
impl<'a, Context, A, B> Sync for ComposedVisitor<'a, Context, A, B>
impl<'a, Context, A, B> Unpin for ComposedVisitor<'a, Context, A, B>
impl<'a, Context, A, B> UnwindSafe for ComposedVisitor<'a, Context, A, B>
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
Mutably borrows from an owned value. Read more