sluice/domain/
document.rs1use super::field::Field;
2
3#[derive(Debug, Clone, Default, PartialEq, Eq)]
8#[cfg_attr(feature = "serde", derive(serde::Serialize))]
9pub struct Document {
10 fields: Vec<Field>,
11}
12
13impl Document {
14 #[must_use]
16 pub fn new(fields: Vec<Field>) -> Self {
17 Self { fields }
18 }
19
20 #[must_use]
22 pub fn fields(&self) -> &[Field] {
23 &self.fields
24 }
25
26 #[must_use]
28 pub fn find(&self, key: &str) -> Option<&str> {
29 self.fields
30 .iter()
31 .find(|f| f.name == key)
32 .map(|f| f.value.as_str())
33 }
34
35 #[must_use]
37 pub fn has(&self, key: &str) -> bool {
38 self.fields.iter().any(|f| f.name == key)
39 }
40}