lib/contexts/
entry.rs

1//! Defines the context for [`Entry`] data.
2
3use serde::Serialize;
4
5use crate::models::entry::Entry;
6
7use super::annotation::AnnotationContext;
8use super::book::BookContext;
9
10/// A struct representing an [`Entry`] within a template context.
11///
12/// See [`Entry`] for undocumented fields.
13#[derive(Debug, Serialize)]
14pub struct EntryContext<'a> {
15    #[allow(missing_docs)]
16    pub book: BookContext<'a>,
17    #[allow(missing_docs)]
18    pub annotations: Vec<AnnotationContext<'a>>,
19}
20
21impl<'a> From<&'a Entry> for EntryContext<'a> {
22    fn from(entry: &'a Entry) -> Self {
23        Self {
24            book: BookContext::from(&entry.book),
25            annotations: entry
26                .annotations
27                .iter()
28                .map(AnnotationContext::from)
29                .collect(),
30        }
31    }
32}