Skip to main content

Walker

Trait Walker 

Source
pub trait Walker<Context> {
    type Item;

    // Required method
    fn walk_next(&mut self, context: Context) -> Option<Self::Item>;

    // Provided method
    fn iter(self, context: Context) -> WalkerIter<Self, Context> 
       where Self: Sized,
             Context: Clone { ... }
}
Expand description

A walker is a traversal state, but where part of the traversal information is supplied manually to each next call.

This for example allows graph traversals that don’t hold a borrow of the graph they are traversing.

Required Associated Types§

Required Methods§

Source

fn walk_next(&mut self, context: Context) -> Option<Self::Item>

Advance to the next item

Provided Methods§

Source

fn iter(self, context: Context) -> WalkerIter<Self, Context>
where Self: Sized, Context: Clone,

Create an iterator out of the walker and given context.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementations on Foreign Types§

Source§

impl<C, W> Walker<C> for &mut W
where W: Walker<C> + ?Sized,

Source§

type Item = <W as Walker<C>>::Item

Source§

fn walk_next(&mut self, context: C) -> Option<Self::Item>

Implementors§

Source§

impl<G> Walker<G> for Bfs<G::NodeId, G::Map>

Source§

impl<G> Walker<G> for Dfs<G::NodeId, G::Map>

Source§

impl<G> Walker<G> for DfsPostOrder<G::NodeId, G::Map>

Source§

impl<G> Walker<G> for Topo<G::NodeId, G::Map>