Skip to main content

cargo_declared/
output.rs

1use crate::error::Error;
2use crate::metadata::ParsedMetadata;
3
4pub fn display_human(parsed: &ParsedMetadata) -> Result<String, Error> {
5    let sets = crate::delta::compute_sets(parsed);
6    Ok(crate::delta::format_human(&sets))
7}
8
9pub fn display_json(parsed: &ParsedMetadata) -> Result<String, Error> {
10    let sets = crate::delta::compute_sets(parsed);
11    Ok(crate::delta::format_json(&sets)?)
12}
13
14pub fn validate_invariant(parsed: &ParsedMetadata) -> Result<bool, Error> {
15    let sets = crate::delta::compute_sets(parsed);
16    let invariant_holds = sets.declared.len() + sets.delta.len() == sets.compiled.len();
17    Ok(invariant_holds)
18}
19
20pub fn display_invariant(invariant_holds: bool) -> String {
21    if invariant_holds {
22        "Invariant holds: declared + delta = compiled".to_string()
23    } else {
24        "Invariant violated: declared + delta != compiled".to_string()
25    }
26}