plottery_project 0.7.0

Project management library of Plottery, a creative coding framework for generative vector graphics and pen plotting.
Documentation
use serde::{Deserialize, Serialize};

use super::project_param::ProjectParam;

#[derive(Debug, Serialize, Deserialize, Clone)]
pub struct ProjectParamsListWrapper {
    pub list: Vec<ProjectParam>,
}

impl ProjectParamsListWrapper {
    pub fn new(list: Vec<ProjectParam>) -> Self {
        Self { list }
    }
    pub fn empty() -> Self {
        Self { list: Vec::new() }
    }

    pub fn new_combined(old: &[ProjectParam], new: &[ProjectParam]) -> Self {
        let mut out_list = Vec::with_capacity(old.len() + new.len());
        for old_el in old.iter() {
            if new.contains(old_el) {
                out_list.push(old_el.clone());
            }
        }
        for new_el in new.iter() {
            if !out_list.contains(new_el) {
                out_list.push(new_el.clone());
            }
        }

        Self::new(out_list)
    }
}