fluidattacks-blends-domain 0.3.0

Blends functional core: pure AST graph to syntax graph (no_std)
Documentation
//! Cfg builder that links a pair to its key and value.

use crate::syntax::cfg::{SyntaxCfgArgs, SyntaxCfgError};
use crate::syntax::SyntaxNode;
use crate::NodeId;

pub fn build(
    args: &mut SyntaxCfgArgs<'_>,
    n_id: NodeId,
    nxt_id: Option<NodeId>,
) -> Result<NodeId, SyntaxCfgError> {
    let Some(&SyntaxNode::Pair { key_id, value_id }) = args.graph.nodes.get(&n_id) else {
        return Ok(n_id);
    };
    let built_key = args.generic(key_id, nxt_id)?;
    args.graph.add_cfg_edge(n_id, built_key);
    let built_value = args.generic(value_id, nxt_id)?;
    args.graph.add_cfg_edge(n_id, built_value);
    Ok(n_id)
}