wikibase/
reference.rs

1#![deny(
2//    missing_docs,
3    missing_debug_implementations,
4    missing_copy_implementations,
5    trivial_casts,
6    trivial_numeric_casts,
7    unsafe_code,
8    unstable_features,
9    unused_import_braces,
10    unused_qualifications
11)]
12
13use crate::snak::Snak;
14use serde::Serialize;
15
16/// Reference
17///
18/// A Reference holds a vector of Snaks.
19#[derive(Debug, Clone, Serialize, PartialEq)]
20pub struct Reference {
21    snaks: Vec<Snak>,
22}
23
24impl Reference {
25    pub fn new(snaks: Vec<Snak>) -> Reference {
26        Self { snaks }
27    }
28
29    pub fn set_snaks(&mut self, snaks: Vec<Snak>) {
30        self.snaks = snaks;
31    }
32
33    pub fn snaks(&self) -> &Vec<Snak> {
34        &self.snaks
35    }
36}
37
38#[cfg(test)]
39mod tests {
40    use super::*;
41
42    #[test]
43    fn reference() {
44        let snak = vec![Snak::new_string("P123", "foo")];
45        let mut reference = Reference::new(snak.clone());
46        assert_eq!(*reference.snaks(), snak);
47        reference.set_snaks(vec![]);
48        assert_eq!(*reference.snaks(), vec![]);
49    }
50}