Skip to main content

TreeDisplayAdapter

Trait TreeDisplayAdapter 

Source
pub trait TreeDisplayAdapter {
    type Node: ?Sized;
    type Context: TreeDisplayContext<Self::Node>;

    // Required methods
    fn write_node(
        &self,
        node: &Self::Node,
        context: &Self::Context,
        formatter: &mut Formatter<'_>,
    ) -> Result;
    fn visit_children(
        &self,
        node: &Self::Node,
        visit: &mut dyn FnMut(&str, &Self::Node, bool) -> Result,
    ) -> Result;

    // Provided method
    fn write_details(
        &self,
        node: &Self::Node,
        context: &Self::Context,
        formatter: &mut IndentedFormatter<'_, '_>,
    ) -> Result { ... }
}
Expand description

Adapts a domain-specific node and traversal context to the shared tree renderers.

Required Associated Types§

Source

type Node: ?Sized

Node type traversed by this adapter.

Source

type Context: TreeDisplayContext<Self::Node>

State made available while each node is rendered.

Required Methods§

Source

fn write_node( &self, node: &Self::Node, context: &Self::Context, formatter: &mut Formatter<'_>, ) -> Result

Write the node’s display content.

The indented renderer writes name: first, so implementations normally write space-prefixed annotations. The branch renderer uses this as the complete node label.

Source

fn visit_children( &self, node: &Self::Node, visit: &mut dyn FnMut(&str, &Self::Node, bool) -> Result, ) -> Result

Visit each named child in display order.

The final argument to visit must be true only for the last child. Renderers call the visitor synchronously, so adapters may pass either stored or temporarily owned nodes.

Provided Methods§

Source

fn write_details( &self, node: &Self::Node, context: &Self::Context, formatter: &mut IndentedFormatter<'_, '_>, ) -> Result

Write detail lines beneath an indented node header.

Dyn Compatibility§

This trait is dyn compatible.

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

Implementors§