flashcards/src/models.rs

46 lines
813 B
Rust

use std::ops::{AddAssign, Deref, DerefMut};
use serde::Deserialize;
#[derive(Debug, Default, Clone, Deserialize)]
pub struct Questions {
pub questions: Vec<Question>,
}
impl AddAssign for Questions {
fn add_assign(&mut self, rhs: Self) {
self.extend(rhs.questions)
}
}
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,
}