From 5fab56829b6337e930b1c1a18c8b54c4ceeb01ca Mon Sep 17 00:00:00 2001 From: Pavel Grigorenko Date: Sun, 28 May 2023 02:10:34 +0300 Subject: [PATCH] Flip --- src/btree.rs | 24 ++++++++++++++++++++++++ src/hash.rs | 24 ++++++++++++++++++++++++ 2 files changed, 48 insertions(+) diff --git a/src/btree.rs b/src/btree.rs index 2267f2f..f6fd157 100644 --- a/src/btree.rs +++ b/src/btree.rs @@ -567,6 +567,30 @@ where inner: self.right2left.range::, _>((start, end)), } } + + /// Swaps the left side and the right side of the bimap. + /// + /// # Examples + /// + /// ``` + /// use std::iter::FromIterator; + /// use bimap::BiBTreeMap; + /// + /// let int_char = BiBTreeMap::from_iter([(0, '0'), (1, '1')]); + /// let char_int = BiBTreeMap::from_iter([('0', 0), ('1', 1)]); + /// assert_eq!(int_char.clone().flip(), char_int); + /// assert_eq!(int_char, char_int.flip()); + /// ``` + pub fn flip(self) -> BiBTreeMap { + let BiBTreeMap { + left2right, + right2left, + } = self; + BiBTreeMap { + left2right: right2left, + right2left: left2right, + } + } } impl Clone for BiBTreeMap diff --git a/src/hash.rs b/src/hash.rs index c56f84c..eaf9d3c 100644 --- a/src/hash.rs +++ b/src/hash.rs @@ -211,6 +211,30 @@ where inner: self.right2left.iter(), } } + + /// Swaps the left side and the right side of the bimap. + /// + /// # Examples + /// + /// ``` + /// use std::iter::FromIterator; + /// use bimap::BiHashMap; + /// + /// let int_char = BiHashMap::<_, _>::from_iter([(0, '0'), (1, '1')]); + /// let char_int = BiHashMap::<_, _>::from_iter([('0', 0), ('1', 1)]); + /// assert_eq!(int_char.clone().flip(), char_int); + /// assert_eq!(int_char, char_int.flip()); + /// ``` + pub fn flip(self) -> BiHashMap { + let BiHashMap { + left2right, + right2left, + } = self; + BiHashMap { + left2right: right2left, + right2left: left2right, + } + } } impl BiHashMap