pair_utils/
paired.rs

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}