Function same_across_all_reqs

Source
pub fn same_across_all_reqs<T: PartialEq>(
    req_name: &str,
    var: &mut Option<T>,
    new: T,
) -> Result<()>
Expand description

Helper method to streamline request validation in cases where a value is expected to be identical across all incoming requests.

§Example: Request Aggregation Pattern

When a node receives multiple requests, it often needs to ensure certain values are consistent across all requests. This helper simplifies that pattern:

fn emit(requests: Vec<Self::Request>, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
    let mut version = None;
    let mut ensure_installed = Vec::new();
     
    for req in requests {
        match req {
            Request::Version(v) => {
                // Ensure all requests agree on the version
                same_across_all_reqs("Version", &mut version, v)?;
            }
            Request::EnsureInstalled(v) => {
                ensure_installed.push(v);
            }
        }
    }
     
    let version = version.ok_or(anyhow::anyhow!("Missing required request: Version"))?;
     
    // ... emit steps using aggregated requests
    Ok(())
}