pub struct TreeViewRef<'a, 'b, T> { /* private fields */ }Expand description
Tree view widget that borrows nodes instead of owning them.
This is useful when you want to avoid cloning the tree on every render frame.
Unlike TreeView which takes ownership of nodes, TreeViewRef borrows them,
allowing the original data to remain in place after rendering.
§Type Parameters
'a- Lifetime for borrowed UI elements.'b- Lifetime for borrowed tree nodes.T- The type of data stored in tree nodes.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Root")];
let tree = TreeViewRef::new(&nodes)
.render_fn(|data, state| {
ratatui::text::Line::from(*data)
});Implementations§
Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn new(nodes: &'b [TreeNode<T>]) -> Self
pub fn new(nodes: &'b [TreeNode<T>]) -> Self
Creates a new tree view with a reference to nodes (avoids cloning).
§Arguments
nodes- A reference to the root nodes of the tree.
§Returns
A new TreeViewRef with default settings.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes);Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn block(self, block: Block<'a>) -> Self
pub fn block(self, block: Block<'a>) -> Self
Sets the block to wrap the tree.
§Arguments
block- The block to wrap the tree view.
§Returns
Self for method chaining.
§Example
use ratatui::widgets::{Block, Borders};
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes)
.block(Block::default().borders(Borders::ALL).title("Tree"));Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn filter_fn<F>(self, _f: F) -> Self
pub fn filter_fn<F>(self, _f: F) -> Self
Sets a filter function for filtering nodes based on the filter text.
The function receives the node data and the current filter text, and returns true if the node should be visible.
Note: This method is currently a no-op for API compatibility.
Filtering is typically handled externally via get_visible_paths_filtered.
§Arguments
f- A function that takes node data and filter, returns true if matches.
§Returns
Self for method chaining.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef, helpers::matches_filter};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes)
.filter_fn(|data, filter| matches_filter(data, filter));Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn highlight_style(self, style: Style) -> Self
pub fn highlight_style(self, style: Style) -> Self
Sets the highlight style for selected rows (full-width background).
§Arguments
style- The style to apply to selected rows.
§Returns
Self for method chaining.
§Example
use ratatui::style::{Color, Style};
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes)
.highlight_style(Style::default().bg(Color::Blue));Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn icon_style(self, style: Style) -> Self
pub fn icon_style(self, style: Style) -> Self
Sets the style for expand/collapse icons.
§Arguments
style- The style to apply to icons.
§Returns
Self for method chaining.
§Example
use ratatui::style::{Color, Style};
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes)
.icon_style(Style::default().fg(Color::Yellow));Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn icons(self, expand: &'a str, collapse: &'a str) -> Self
pub fn icons(self, expand: &'a str, collapse: &'a str) -> Self
Sets custom expand/collapse icons.
§Arguments
expand- The icon to show for collapsed nodes.collapse- The icon to show for expanded nodes.
§Returns
Self for method chaining.
§Example
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes)
.icons("+", "-");Source§impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> TreeViewRef<'a, 'b, T>
Sourcepub fn render_fn<F>(self, f: F) -> Self
pub fn render_fn<F>(self, f: F) -> Self
Sets the render function for nodes.
§Arguments
f- A function that takes node data and state, returns a Line.
§Returns
Self for method chaining.
§Example
use ratatui::text::Line;
use ratatui_toolkit::tree_view::{TreeNode, TreeViewRef};
let nodes = vec![TreeNode::new("Item")];
let tree = TreeViewRef::new(&nodes)
.render_fn(|data, state| {
if state.is_selected {
Line::from(format!("> {}", data))
} else {
Line::from(*data)
}
});Trait Implementations§
Source§impl<'a, 'b, T> StatefulWidget for TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> StatefulWidget for TreeViewRef<'a, 'b, T>
Auto Trait Implementations§
impl<'a, 'b, T> Freeze for TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> !RefUnwindSafe for TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> !Send for TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> !Sync for TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> Unpin for TreeViewRef<'a, 'b, T>
impl<'a, 'b, T> !UnwindSafe for TreeViewRef<'a, 'b, T>
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more