diff options
| author | Jonas Hietala <tradet.h@gmail.com> | 2014-07-24 16:28:34 +0200 |
|---|---|---|
| committer | Jonas Hietala <tradet.h@gmail.com> | 2014-07-24 16:30:29 +0200 |
| commit | 222b780e7ac3fa1937948cb159c2e88422adb715 (patch) | |
| tree | cbd17b11267e8bd56b76fcb301102a54c5a3dc36 | |
| parent | 9e2bb9d67bb47b9a3a6c7389efa45cefc33206a6 (diff) | |
| download | rust-222b780e7ac3fa1937948cb159c2e88422adb715.tar.gz rust-222b780e7ac3fa1937948cb159c2e88422adb715.zip | |
Document update and update_with_key in SmallIntMap.
Move update above for better docs progression.
| -rw-r--r-- | src/libcollections/smallintmap.rs | 48 |
1 files changed, 44 insertions, 4 deletions
diff --git a/src/libcollections/smallintmap.rs b/src/libcollections/smallintmap.rs index eb97215c721..5e71b2c4e59 100644 --- a/src/libcollections/smallintmap.rs +++ b/src/libcollections/smallintmap.rs @@ -167,6 +167,50 @@ impl<V> SmallIntMap<V> { } impl<V:Clone> SmallIntMap<V> { + /// Update a value in the map. If the key already exists in the map, + /// modify the value with `ff` taking `oldval, newval`. + /// Otherwise set the value to `newval`. + /// Return `true` if the key did not already exist in the map. + /// + /// # Example + /// + /// ``` + /// use std::collections::SmallIntMap; + /// + /// let mut map = SmallIntMap::new(); + /// + /// // Key does not exist, will do a simple insert + /// assert!(map.update(1, vec![1i, 2], |old, new| old.append(new.as_slice()))); + /// assert_eq!(map.get(&1), &vec![1i, 2]); + /// + /// // Key exists, update the value + /// assert!(!map.update(1, vec![3i, 4], |old, new| old.append(new.as_slice()))); + /// assert_eq!(map.get(&1), &vec![1i, 2, 3, 4]); + /// ``` + pub fn update(&mut self, key: uint, newval: V, ff: |V, V| -> V) -> bool { + self.update_with_key(key, newval, |_k, v, v1| ff(v,v1)) + } + + /// Update a value in the map. If the key already exists in the map, + /// modify the value with `ff` taking `key, oldval, newval`. + /// Otherwise set the value to `newval`. + /// Return `true` if the key did not already exist in the map. + /// + /// # Example + /// + /// ``` + /// use std::collections::SmallIntMap; + /// + /// let mut map = SmallIntMap::new(); + /// + /// // Key does not exist, will do a simple insert + /// assert!(map.update_with_key(7, 10, |key, old, new| (old + new) % key)); + /// assert_eq!(map.get(&7), &10); + /// + /// // Key exists, update the value + /// assert!(!map.update_with_key(7, 20, |key, old, new| (old + new) % key)); + /// assert_eq!(map.get(&7), &2); + /// ``` pub fn update_with_key(&mut self, key: uint, val: V, @@ -178,10 +222,6 @@ impl<V:Clone> SmallIntMap<V> { }; self.insert(key, new_val) } - - pub fn update(&mut self, key: uint, newval: V, ff: |V, V| -> V) -> bool { - self.update_with_key(key, newval, |_k, v, v1| ff(v,v1)) - } } impl<V: fmt::Show> fmt::Show for SmallIntMap<V> { |
