summary refs log tree commit diff
path: root/src/libcollections/enum_set.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2014-11-08 21:06:37 +0000
committerbors <bors@rust-lang.org>2014-11-08 21:06:37 +0000
commitf0ca717c643cbef31859e443ee20db4465ac8864 (patch)
tree05190af84acccdfc795368a8e2431ab3f43038b5 /src/libcollections/enum_set.rs
parentb80edf1d1257bf521fd9e62b732b6302258374e7 (diff)
parenta11f16739f08ec480263ba549d510fffc8ce557e (diff)
downloadrust-f0ca717c643cbef31859e443ee20db4465ac8864.tar.gz
rust-f0ca717c643cbef31859e443ee20db4465ac8864.zip
auto merge of #18475 : gamazeps/rust/toExtend, r=alexcrichton
Ensured that Extend & FromIterator are implemented for the libcollection.

Removed the fact that FromIterator had to be implemented in order to implement Extend, as it did not make sense for LruCache (it needs to be given a size and there are no Default for LruCache).

Changed the name from Extend to Extendable.

Part of #18424 
Diffstat (limited to 'src/libcollections/enum_set.rs')
-rw-r--r--src/libcollections/enum_set.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/libcollections/enum_set.rs b/src/libcollections/enum_set.rs
index 68991628b22..b13e45099ee 100644
--- a/src/libcollections/enum_set.rs
+++ b/src/libcollections/enum_set.rs
@@ -235,6 +235,22 @@ impl<E:CLike> Iterator<E> for Items<E> {
     }
 }
 
+impl<E:CLike> FromIterator<E> for EnumSet<E> {
+    fn from_iter<I:Iterator<E>>(iterator: I) -> EnumSet<E> {
+        let mut ret = EnumSet::new();
+        ret.extend(iterator);
+        ret
+    }
+}
+
+impl<E:CLike> Extend<E> for EnumSet<E> {
+    fn extend<I: Iterator<E>>(&mut self, mut iterator: I) {
+        for element in iterator {
+            self.insert(element);
+        }
+    }
+}
+
 #[cfg(test)]
 mod test {
     use std::prelude::*;