#[derive(Default)] pub struct OptionalContainerConfig { pub image: Option, pub tag: Option, pub container_name: Option, pub database_name: Option, pub user: Option, pub password: Option, } #[derive(Clone)] pub struct DatabaseContainerConfig { pub image: String, pub tag: String, pub container_name: String, pub database_name: String, pub user: String, pub password: String, } impl OptionalContainerConfig { pub fn fill_with(&self, other: &DatabaseContainerConfig) -> DatabaseContainerConfig { DatabaseContainerConfig { image: self.image.clone().unwrap_or_else(|| other.image.clone()), tag: self.tag.clone().unwrap_or_else(|| other.tag.clone()), container_name: self .container_name .clone() .unwrap_or_else(|| other.container_name.clone()), database_name: self .database_name .clone() .unwrap_or_else(|| other.database_name.clone()), user: self.user.clone().unwrap_or_else(|| other.user.clone()), password: self .password .clone() .unwrap_or_else(|| other.password.clone()), } } }