1use crate::Side;
2
3pub trait Paired {
4 type Item;
5
6 fn get_left(&self) -> &Self::Item;
7
8 fn get_right(&self) -> &Self::Item;
9
10 fn get_left_mut(&mut self) -> &mut Self::Item;
11
12 fn get_right_mut(&mut self) -> &mut Self::Item;
13
14 fn get(&self, s: Side) -> &Self::Item {
15 match s {
16 Side::L => self.get_left(),
17 Side::R => self.get_right(),
18 }
19 }
20
21 fn get_mut(&mut self, s: Side) -> &mut Self::Item {
22 match s {
23 Side::L => self.get_left_mut(),
24 Side::R => self.get_right_mut(),
25 }
26 }
27
28 fn swap(&mut self);
29}