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(())
}