Skip to main content

presolve_compiler/
capability_projection.rs

1//! V2 inspection of capability admission.
2use crate::SemanticCapabilityRegistry;
3use serde::Serialize;
4pub const CAPABILITY_PROJECTION_SCHEMA_VERSION: u32 = 1;
5#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
6pub struct CapabilityProjectionV1 {
7    pub schema_version: u32,
8    pub admitted: usize,
9    pub deferred: usize,
10}
11#[must_use]
12pub fn build_capability_projection_v1(
13    registry: &SemanticCapabilityRegistry,
14) -> CapabilityProjectionV1 {
15    CapabilityProjectionV1 {
16        schema_version: CAPABILITY_PROJECTION_SCHEMA_VERSION,
17        admitted: registry
18            .capabilities
19            .iter()
20            .filter(|c| matches!(c.status, crate::SemanticCapabilityStatus::Admitted))
21            .count(),
22        deferred: registry
23            .capabilities
24            .iter()
25            .filter(|c| matches!(c.status, crate::SemanticCapabilityStatus::Deferred))
26            .count(),
27    }
28}