1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use std::num::NonZeroUsize;

/// Whether an item in [`children`](crate::data_tree::DataTree::children) is the last.
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum ChildPosition {
    /// The item is not the last child.
    Init,
    /// The item is the last child.
    Last,
}

impl ChildPosition {
    /// Deduce a child's position from its index and the number of children.
    pub const fn from_index(child_index: usize, child_count: NonZeroUsize) -> Self {
        if child_index + 1 < child_count.get() {
            ChildPosition::Init
        } else {
            ChildPosition::Last
        }
    }
}