use std::ops::{AddAssign, Deref, DerefMut}; use serde::Deserialize; #[derive(Debug, Default, Clone, Deserialize)] pub struct Questions { pub questions: Vec, } impl AddAssign for Questions { fn add_assign(&mut self, rhs: Self) { self.extend(rhs.questions) } } impl Deref for Questions { type Target = Vec; fn deref(&self) -> &Self::Target { &self.questions } } impl DerefMut for Questions { fn deref_mut(&mut self) -> &mut Self::Target { &mut self.questions } } #[derive(Debug, Clone, PartialEq, Deserialize)] pub struct Question { pub message: String, pub answers: Vec, } #[derive(Debug, Clone, PartialEq, Deserialize)] pub struct Answer { pub message: String, #[serde(default)] pub is_correct: Option, #[serde(default, skip)] pub checked: bool, }