Skip to main content

presolve_compiler/
resume_instance.rs

1use crate::application_semantic_model::ApplicationSemanticModel;
2use crate::component_graph::SerializableValue;
3use crate::semantic_id::SemanticId;
4use serde::Serialize;
5use std::collections::BTreeMap;
6
7#[derive(Debug, Clone, PartialEq, Eq, Serialize)]
8pub struct SerializableInstance {
9    pub component: SemanticId,
10    pub state: BTreeMap<SemanticId, SerializableValue>,
11}
12
13#[must_use]
14pub fn build_serializable_instances(model: &ApplicationSemanticModel) -> Vec<SerializableInstance> {
15    model
16        .components
17        .iter()
18        .map(|component| SerializableInstance {
19            component: component.id.clone(),
20            state: component
21                .state_fields
22                .iter()
23                .filter_map(|field| {
24                    field
25                        .initial_value
26                        .as_ref()
27                        .map(|value| (field.id.clone(), value.clone()))
28                })
29                .collect(),
30        })
31        .collect()
32}