libside 0.3.0

a library for building configuration management tools
Documentation
use crate::graph::{Applied, Graph, VerificationState};
use crate::requirements::Requirement;
use crate::system::System;
use std::fmt::Debug;
use std::fmt::Display;

#[derive(Debug, Clone)]
pub struct SystemState<R> {
    pub graph: Graph<R, Applied>,
}

impl<R: Requirement> Default for SystemState<R> {
    fn default() -> Self {
        Self {
            graph: Graph::new(),
        }
    }
}

impl<R: Requirement + Display> SystemState<R> {
    pub fn verify_system_state<'r, S: System>(
        &'r self,
        system: &mut S,
    ) -> Result<VerificationState<'r, R>, ()> {
        let seq = self.graph.generate_verify_sequence()?;
        seq.run(system)
    }
}