1#[cfg(doc)]
2use super::*;
3
4use crate::base::iters::{DevTreeIter, DevTreeNodePropIter};
5use crate::error::Result;
6
7#[derive(Clone)]
9pub struct DevTreeNode<'a, 'dt: 'a> {
10 pub(super) name: Result<&'dt str>,
11 pub(super) parse_iter: DevTreeIter<'a, 'dt>,
12}
13
14impl<'a, 'dt: 'a> PartialEq for DevTreeNode<'a, 'dt> {
15 fn eq(&self, other: &Self) -> bool {
16 self.parse_iter == other.parse_iter
17 }
18}
19
20impl<'a, 'dt: 'a> DevTreeNode<'a, 'dt> {
21 #[inline]
23 pub fn name(&'a self) -> Result<&'dt str> {
24 self.name
25 }
26
27 #[must_use]
29 pub fn props(&self) -> DevTreeNodePropIter<'a, 'dt> {
30 DevTreeNodePropIter(self.parse_iter.clone())
31 }
32
33 pub fn find_next_compatible_node(&self, string: &str) -> Result<Option<DevTreeNode<'a, 'dt>>> {
43 self.parse_iter.clone().next_compatible_node(string)
44 }
45}