ncollide3d/utils/
sorted_pair.rs
1use std::cmp::PartialOrd;
2use std::mem;
3use std::ops::Deref;
4
5#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
7pub struct SortedPair<T: PartialOrd>([T; 2]);
8
9impl<T: PartialOrd> SortedPair<T> {
10 pub fn new(element1: T, element2: T) -> Self {
12 if element1 > element2 {
13 SortedPair([element2, element1])
14 } else {
15 SortedPair([element1, element2])
16 }
17 }
18}
19
20impl<T: PartialOrd> Deref for SortedPair<T> {
21 type Target = (T, T);
22
23 fn deref(&self) -> &(T, T) {
24 unsafe { mem::transmute(self) }
25 }
26}