pub struct TreeItem {
pub label: String,
pub icon: Option<String>,
pub children: Vec<TreeItem>,
pub expanded: bool,
}Expand description
A single item in a tree view.
Fields§
§label: StringDisplay label for this item.
icon: Option<String>Optional icon displayed before the label.
children: Vec<TreeItem>Child items (empty for leaf nodes).
expanded: boolWhether this node is expanded (showing children).
Implementations§
Source§impl TreeItem
impl TreeItem
Sourcepub fn new(label: impl Into<String>) -> Self
pub fn new(label: impl Into<String>) -> Self
Create a new tree item with the given label.
Examples found in repository?
examples/16_tree.rs (line 136)
132fn build_tree(expanded_paths: &[TreePath]) -> Vec<TreeItem> {
133 let is_expanded = |path: &[usize]| expanded_paths.iter().any(|p| p == path);
134
135 vec![
136 TreeItem::new("src")
137 .icon("📁")
138 .expanded(is_expanded(&[0]))
139 .child(
140 TreeItem::new("components")
141 .icon("📁")
142 .expanded(is_expanded(&[0, 0]))
143 .child(TreeItem::new("button.rs").icon("📄"))
144 .child(TreeItem::new("input.rs").icon("📄"))
145 .child(TreeItem::new("list.rs").icon("📄")),
146 )
147 .child(
148 TreeItem::new("utils")
149 .icon("📁")
150 .expanded(is_expanded(&[0, 1]))
151 .child(TreeItem::new("helpers.rs").icon("📄"))
152 .child(TreeItem::new("macros.rs").icon("📄")),
153 )
154 .child(TreeItem::new("main.rs").icon("📄"))
155 .child(TreeItem::new("lib.rs").icon("📄")),
156 TreeItem::new("tests")
157 .icon("📁")
158 .expanded(is_expanded(&[1]))
159 .child(TreeItem::new("integration_tests.rs").icon("📄"))
160 .child(TreeItem::new("unit_tests.rs").icon("📄")),
161 TreeItem::new("Cargo.toml").icon("📦"),
162 TreeItem::new("README.md").icon("📝"),
163 ]
164}Sourcepub fn icon(self, icon: impl Into<String>) -> Self
pub fn icon(self, icon: impl Into<String>) -> Self
Set the icon for this item.
Examples found in repository?
examples/16_tree.rs (line 137)
132fn build_tree(expanded_paths: &[TreePath]) -> Vec<TreeItem> {
133 let is_expanded = |path: &[usize]| expanded_paths.iter().any(|p| p == path);
134
135 vec![
136 TreeItem::new("src")
137 .icon("📁")
138 .expanded(is_expanded(&[0]))
139 .child(
140 TreeItem::new("components")
141 .icon("📁")
142 .expanded(is_expanded(&[0, 0]))
143 .child(TreeItem::new("button.rs").icon("📄"))
144 .child(TreeItem::new("input.rs").icon("📄"))
145 .child(TreeItem::new("list.rs").icon("📄")),
146 )
147 .child(
148 TreeItem::new("utils")
149 .icon("📁")
150 .expanded(is_expanded(&[0, 1]))
151 .child(TreeItem::new("helpers.rs").icon("📄"))
152 .child(TreeItem::new("macros.rs").icon("📄")),
153 )
154 .child(TreeItem::new("main.rs").icon("📄"))
155 .child(TreeItem::new("lib.rs").icon("📄")),
156 TreeItem::new("tests")
157 .icon("📁")
158 .expanded(is_expanded(&[1]))
159 .child(TreeItem::new("integration_tests.rs").icon("📄"))
160 .child(TreeItem::new("unit_tests.rs").icon("📄")),
161 TreeItem::new("Cargo.toml").icon("📦"),
162 TreeItem::new("README.md").icon("📝"),
163 ]
164}Sourcepub fn child(self, child: TreeItem) -> Self
pub fn child(self, child: TreeItem) -> Self
Add a child item.
Examples found in repository?
examples/16_tree.rs (lines 139-146)
132fn build_tree(expanded_paths: &[TreePath]) -> Vec<TreeItem> {
133 let is_expanded = |path: &[usize]| expanded_paths.iter().any(|p| p == path);
134
135 vec![
136 TreeItem::new("src")
137 .icon("📁")
138 .expanded(is_expanded(&[0]))
139 .child(
140 TreeItem::new("components")
141 .icon("📁")
142 .expanded(is_expanded(&[0, 0]))
143 .child(TreeItem::new("button.rs").icon("📄"))
144 .child(TreeItem::new("input.rs").icon("📄"))
145 .child(TreeItem::new("list.rs").icon("📄")),
146 )
147 .child(
148 TreeItem::new("utils")
149 .icon("📁")
150 .expanded(is_expanded(&[0, 1]))
151 .child(TreeItem::new("helpers.rs").icon("📄"))
152 .child(TreeItem::new("macros.rs").icon("📄")),
153 )
154 .child(TreeItem::new("main.rs").icon("📄"))
155 .child(TreeItem::new("lib.rs").icon("📄")),
156 TreeItem::new("tests")
157 .icon("📁")
158 .expanded(is_expanded(&[1]))
159 .child(TreeItem::new("integration_tests.rs").icon("📄"))
160 .child(TreeItem::new("unit_tests.rs").icon("📄")),
161 TreeItem::new("Cargo.toml").icon("📦"),
162 TreeItem::new("README.md").icon("📝"),
163 ]
164}Sourcepub fn expanded(self, expanded: bool) -> Self
pub fn expanded(self, expanded: bool) -> Self
Set whether this node is expanded.
Examples found in repository?
examples/16_tree.rs (line 138)
132fn build_tree(expanded_paths: &[TreePath]) -> Vec<TreeItem> {
133 let is_expanded = |path: &[usize]| expanded_paths.iter().any(|p| p == path);
134
135 vec![
136 TreeItem::new("src")
137 .icon("📁")
138 .expanded(is_expanded(&[0]))
139 .child(
140 TreeItem::new("components")
141 .icon("📁")
142 .expanded(is_expanded(&[0, 0]))
143 .child(TreeItem::new("button.rs").icon("📄"))
144 .child(TreeItem::new("input.rs").icon("📄"))
145 .child(TreeItem::new("list.rs").icon("📄")),
146 )
147 .child(
148 TreeItem::new("utils")
149 .icon("📁")
150 .expanded(is_expanded(&[0, 1]))
151 .child(TreeItem::new("helpers.rs").icon("📄"))
152 .child(TreeItem::new("macros.rs").icon("📄")),
153 )
154 .child(TreeItem::new("main.rs").icon("📄"))
155 .child(TreeItem::new("lib.rs").icon("📄")),
156 TreeItem::new("tests")
157 .icon("📁")
158 .expanded(is_expanded(&[1]))
159 .child(TreeItem::new("integration_tests.rs").icon("📄"))
160 .child(TreeItem::new("unit_tests.rs").icon("📄")),
161 TreeItem::new("Cargo.toml").icon("📦"),
162 TreeItem::new("README.md").icon("📝"),
163 ]
164}Trait Implementations§
Auto Trait Implementations§
impl Freeze for TreeItem
impl RefUnwindSafe for TreeItem
impl Send for TreeItem
impl Sync for TreeItem
impl Unpin for TreeItem
impl UnwindSafe for TreeItem
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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>
Convert
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>
Convert
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)
Convert
&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)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.