From 7d0a1532a53036ad052ceb875c016d179e4285b5 Mon Sep 17 00:00:00 2001 From: Esteban Pavese Date: Tue, 3 Mar 2020 12:45:35 +0100 Subject: [PATCH] return value for insert() was inconsistent with std sets --- enumset/src/lib.rs | 2 +- enumset/tests/ops.rs | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/enumset/src/lib.rs b/enumset/src/lib.rs index 3be1cf0..66f605f 100644 --- a/enumset/src/lib.rs +++ b/enumset/src/lib.rs @@ -343,7 +343,7 @@ impl EnumSet { /// Adds a value to this set. pub fn insert(&mut self, value: T) -> bool { - let contains = self.contains(value); + let contains = !self.contains(value); self.__enumset_underlying = self.__enumset_underlying | Self::mask(value.enum_into_u8()); contains } diff --git a/enumset/tests/ops.rs b/enumset/tests/ops.rs index b6cfe2a..217ebd4 100644 --- a/enumset/tests/ops.rs +++ b/enumset/tests/ops.rs @@ -112,6 +112,15 @@ macro_rules! test_enum { assert!(set.is_empty()); } + #[test] + fn already_present_element() { + let mut set = EnumSet::new(); + assert!(set.insert($e::A)); + assert!(!set.insert($e::A)); + set.remove($e::A); + assert!(set.insert($e::A)); + } + #[test] fn empty_is_empty() { assert_eq!(EnumSet::<$e>::empty().len(), 0) -- 2.44.0