2025-06-16 00:05:35 +03:00
|
|
|
use std::ops::{AddAssign, Deref, DerefMut};
|
2025-06-15 13:00:47 +03:00
|
|
|
|
|
|
|
use serde::Deserialize;
|
|
|
|
|
2025-06-16 02:22:25 +03:00
|
|
|
#[derive(Debug, Default, Clone, Deserialize)]
|
2025-06-15 13:00:47 +03:00
|
|
|
pub struct Questions {
|
|
|
|
pub questions: Vec<Question>,
|
|
|
|
}
|
|
|
|
|
2025-06-16 00:05:35 +03:00
|
|
|
impl AddAssign for Questions {
|
|
|
|
fn add_assign(&mut self, rhs: Self) {
|
|
|
|
self.extend(rhs.questions)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-06-15 13:00:47 +03:00
|
|
|
impl Deref for Questions {
|
|
|
|
type Target = Vec<Question>;
|
|
|
|
|
|
|
|
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<Answer>,
|
|
|
|
}
|
|
|
|
|
|
|
|
#[derive(Debug, Clone, PartialEq, Deserialize)]
|
|
|
|
pub struct Answer {
|
|
|
|
pub message: String,
|
|
|
|
|
|
|
|
#[serde(default)]
|
|
|
|
pub is_correct: Option<bool>,
|
|
|
|
|
|
|
|
#[serde(default, skip)]
|
|
|
|
pub checked: bool,
|
|
|
|
}
|