Struct Renderer

Source
pub struct Renderer { /* private fields */ }
Expand description

The main tree rendering engine.

Renderer is responsible for converting tree node structures into styled text output. It handles complex features like:

  • Multi-line content with proper indentation
  • Custom enumerators and indenters
  • Style inheritance and override resolution
  • Alignment of custom enumerators
  • Branch continuation across container nodes

§Examples

use lipgloss_tree::{Renderer, Children};
use lipgloss_tree::renderer::TreeStyle;
use lipgloss::Style;

let renderer = Renderer::new()
    .style(TreeStyle::default())
    .enumerator(|children, i| {
        if i == children.length() - 1 { "└──".to_string() }
        else { "├──".to_string() }
    });

Implementations§

Source§

impl Renderer

Source

pub fn new() -> Self

Creates a new renderer with default configuration.

The default renderer uses:

  • Standard box-drawing characters for branches (├──, └──)
  • Standard indentation (│ for continuing, spaces for last)
  • Default styling with padding after enumerators
§Examples
use lipgloss_tree::Renderer;

let renderer = Renderer::new();
Source

pub fn style(self, style: TreeStyle) -> Self

Sets the styling configuration for this renderer.

This replaces the entire TreeStyle, affecting how enumerators, items, and the root are styled.

§Arguments
  • style - The new TreeStyle configuration to use
§Examples
use lipgloss_tree::Renderer;
use lipgloss_tree::renderer::TreeStyle;
use lipgloss::Style;

let custom_style = TreeStyle {
    root: Style::new().bold(true),
    ..TreeStyle::default()
};

let renderer = Renderer::new().style(custom_style);
Source

pub fn enumerator(self, enumerator: Enumerator) -> Self

Sets the enumerator function for this renderer.

The enumerator function generates the branch characters (like ├──, └──) based on the child’s position in its parent’s children collection.

§Arguments
  • enumerator - Function that takes (children, index) and returns a string
§Examples
use lipgloss_tree::{Renderer, Children};

let renderer = Renderer::new()
    .enumerator(|children, i| {
        if i == children.length() - 1 {
            "╰──".to_string()  // Rounded last branch
        } else {
            "├──".to_string()  // Standard continuing branch
        }
    });
Source

pub fn indenter(self, indenter: Indenter) -> Self

Sets the indenter function for this renderer.

The indenter function generates indentation strings for child content that appears below parent nodes, providing the visual connection between parent and nested children.

§Arguments
  • indenter - Function that takes (children, index) and returns indentation string
§Examples
use lipgloss_tree::{Renderer, Children};

let renderer = Renderer::new()
    .indenter(|children, i| {
        if i == children.length() - 1 {
            "    ".to_string()  // Spaces for last child
        } else {
            "│   ".to_string()  // Vertical line for continuing
        }
    });
Source

pub fn render(&self, node: &dyn Node, root: bool, prefix: &str) -> String

Renders a tree node and its children to a formatted string.

This is the main rendering method that converts a tree structure into styled text output. It handles complex scenarios like multi-line content, style inheritance, custom enumerators, and proper indentation.

§Arguments
  • node - The tree node to render
  • root - Whether this is the root node (affects root style application)
  • prefix - String prefix to prepend to each line (for nested rendering)
§Returns

A formatted string representation of the tree with proper styling and indentation

§Examples
use lipgloss_tree::{Renderer, Tree};

let tree = Tree::new()
    .root("My Tree")
    .child(vec!["Item 1".into(), "Item 2".into()]);

let renderer = Renderer::new();
let output = renderer.render(&tree, true, "");
println!("{}", output);

Trait Implementations§

Source§

impl Clone for Renderer

Source§

fn clone(&self) -> Renderer

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Default for Renderer

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, D: AdaptFrom<S, Swp, Dwp, T>,

Source§

fn adapt_into_using<M>(self, method: M) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.