capability-skeleton 0.1.0

A Rust library for managing and building complex hierarchical tree structures such as skill trees. Supports serialization, error handling, and deep tree metrics.
Documentation
// ---------------- [ File: capability-skeleton/src/build_skeleton_level_map.rs ]
crate::ix!();

// -----------------------------------------------------------------------------
// Helper to build a node->level map using BFS
// -----------------------------------------------------------------------------
#[instrument(level = "trace", skip(skel))]
pub fn build_skeleton_level_map(skel: &Skeleton) -> HashMap<u16, u8> {
    trace!("Building node->level map with BFS for Skeleton.");

    let mut level_map = HashMap::<u16, u8>::new();
    let mut visited   = HashSet::new();
    let mut queue     = VecDeque::new();

    if let Some(root_id) = skel.root_id() {
        queue.push_back((*root_id, 0u8));
    } else {
        debug!("No root => empty level map.");
        return level_map;
    }

    while let Some((nid, lvl)) = queue.pop_front() {
        if !visited.insert(nid) {
            trace!("Already visited node_id={} => skipping BFS re-processing", nid);
            continue;
        }
        level_map.insert(nid, lvl);

        if let Some(node_ref) = skel.nodes().iter().find(|n| n.id() == nid) {
            for &child_id in node_ref.child_ids() {
                queue.push_back((child_id, lvl.saturating_add(1)));
            }
        } else {
            trace!("Node id={} not found in skeleton => ignoring children references.", nid);
        }
    }

    trace!("Finished BFS => found {} nodes in level_map.", level_map.len());
    level_map
}