ora-server 0.12.7

Part of the Ora scheduler framework.
Documentation
use ora_backend::common::Label;
use serde::de::IgnoredAny;

pub(crate) fn validate_json(json_str: &str) -> Result<(), serde_json::Error> {
    serde_json::from_str::<IgnoredAny>(json_str).map(|_| ())
}

pub(crate) fn deduplicate_labels(labels: &mut Vec<Label>) {
    let mut seen = std::collections::HashSet::new();
    labels.retain(|l| seen.insert(l.key.clone()));
}

pub(crate) fn inherit_labels(parent: &[Label], child: &mut Vec<Label>) {
    let mut existing_keys: std::collections::HashSet<String> =
        child.iter().map(|l| l.key.clone()).collect();

    for label in parent {
        if !existing_keys.contains(&label.key) {
            child.push(label.clone());
            existing_keys.insert(label.key.clone());
        }
    }
}