ratatui_toolkit/widgets/file_system_tree/methods/
get_entry_at_path.rs

1use 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}