From: Esteban Pavese Date: Tue, 3 Mar 2020 11:45:35 +0000 (+0100) Subject: return value for insert() was inconsistent with std sets X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=7d0a1532a53036ad052ceb875c016d179e4285b5;p=enumset.git return value for insert() was inconsistent with std sets --- 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)