beetry-editor-types 0.2.0

Internal beetry crate. For the public API, check the beetry crate.
Documentation
use std::collections::HashMap;

use schemars::JsonSchema;
use serde::{Deserialize, Serialize};

use crate::{id::NodeId, output::node::Parameters};

#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct Store {
    parameters: HashMap<NodeId, Values>,
}

impl Store {
    pub fn new(parameters: impl IntoIterator<Item = (NodeId, Values)>) -> Self {
        Self {
            parameters: parameters.into_iter().collect(),
        }
    }

    pub fn get(&self, id: &NodeId) -> Option<&Values> {
        self.parameters.get(id)
    }

    pub fn iter(&self) -> impl Iterator<Item = (&NodeId, &Values)> {
        self.parameters.iter()
    }

    pub fn take(&mut self, id: &NodeId) -> Option<Values> {
        self.parameters.remove(id)
    }
}

#[derive(Debug, Serialize, Deserialize, JsonSchema)]
pub struct Values {
    pub params: Parameters,
}