1#![deny(
2missing_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#[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}