pub struct TreeItem<'text, Identifier> { /* private fields */ }
Expand description
One item inside a Tree
.
Can have zero or more children
.
§Identifier
The generic argument Identifier
is used to keep the state like the currently selected or opened TreeItem
s in the TreeState
.
It needs to be unique among its siblings but can be used again on parent or child TreeItem
s.
A common example would be a filename which has to be unique in its directory while it can exist in another.
The text
can be different from its identifier
.
To repeat the filename analogy: File browsers sometimes hide file extensions.
The filename main.rs
is the identifier while its shown as main
.
Two files main.rs
and main.toml
can exist in the same directory and can both be displayed as main
but their identifier is different.
Just like every file in a file system can be uniquely identified with its file and directory names each TreeItem
in a Tree
can be with these identifiers.
As an example the following two identifiers describe the main file in a Rust cargo project: vec!["src", "main.rs"]
.
The identifier does not need to be a String
and is therefore generic.
Until version 0.14 this crate used usize
and indices.
This might still be perfect for your use case.
§Example
let a = TreeItem::new_leaf("l", "Leaf");
let b = TreeItem::new("r", "Root", vec![a])?;
Implementations§
Source§impl<'text, Identifier> TreeItem<'text, Identifier>
impl<'text, Identifier> TreeItem<'text, Identifier>
Sourcepub fn new_leaf<T>(identifier: Identifier, text: T) -> Self
pub fn new_leaf<T>(identifier: Identifier, text: T) -> Self
Create a new TreeItem
without children.
Sourcepub fn new_leaf_with_data<T>(
identifier: Identifier,
text: T,
data: Row<'text>,
) -> Self
pub fn new_leaf_with_data<T>( identifier: Identifier, text: T, data: Row<'text>, ) -> Self
Create a new TreeItem
without children.
Sourcepub fn new<T>(
identifier: Identifier,
text: T,
children: Vec<Self>,
) -> Result<Self>
pub fn new<T>( identifier: Identifier, text: T, children: Vec<Self>, ) -> Result<Self>
Create a new TreeItem
with children.
§Errors
Errors when there are duplicate identifiers in the children.
Sourcepub fn new_with_data<T>(
identifier: Identifier,
text: T,
children: Vec<Self>,
data: Row<'text>,
) -> Result<Self>
pub fn new_with_data<T>( identifier: Identifier, text: T, children: Vec<Self>, data: Row<'text>, ) -> Result<Self>
Create a new TreeItem
with children.
§Errors
Errors when there are duplicate identifiers in the children.
Sourcepub const fn identifier(&self) -> &Identifier
pub const fn identifier(&self) -> &Identifier
Get a reference to the identifier.
pub fn children(&self) -> &[Self]
Sourcepub fn child_mut(&mut self, index: usize) -> Option<&mut Self>
pub fn child_mut(&mut self, index: usize) -> Option<&mut Self>
Get a mutable reference to a child by index.
When you choose to change the identifier
the TreeState
might not work as expected afterwards.
pub fn height(&self) -> usize
Trait Implementations§
Auto Trait Implementations§
impl<'text, Identifier> Freeze for TreeItem<'text, Identifier>where
Identifier: Freeze,
impl<'text, Identifier> RefUnwindSafe for TreeItem<'text, Identifier>where
Identifier: RefUnwindSafe,
impl<'text, Identifier> Send for TreeItem<'text, Identifier>where
Identifier: Send,
impl<'text, Identifier> Sync for TreeItem<'text, Identifier>where
Identifier: Sync,
impl<'text, Identifier> Unpin for TreeItem<'text, Identifier>where
Identifier: Unpin,
impl<'text, Identifier> UnwindSafe for TreeItem<'text, Identifier>where
Identifier: UnwindSafe,
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
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