ratatui_toolkit/widgets/file_system_tree/methods/
get_entry_at_path.rs1use crate::primitives::tree_view::TreeNode;
2use crate::widgets::file_system_tree::{FileSystemEntry, FileSystemTree};
3
4impl<'a> FileSystemTree<'a> {
5 pub fn get_entry_at_path(&self, path: &[usize]) -> Option<&FileSystemEntry> {
6 fn find_entry<'a>(
7 nodes: &'a [TreeNode<FileSystemEntry>],
8 path: &[usize],
9 ) -> Option<&'a FileSystemEntry> {
10 if path.is_empty() {
11 return None;
12 }
13
14 if let Some(node) = nodes.get(path[0]) {
15 if path.len() == 1 {
16 return Some(&node.data);
17 }
18 return find_entry(&node.children, &path[1..]);
19 }
20 None
21 }
22
23 find_entry(&self.nodes, path)
24 }
25}