]> git.lizzy.rs Git - rust.git/commitdiff
Improvided map_entry_replace examples
authorJeroen Bollen <contact@jeroenbollen.eu>
Sat, 11 Nov 2017 15:21:49 +0000 (16:21 +0100)
committerJeroen Bollen <contact@jeroenbollen.eu>
Sat, 11 Nov 2017 18:45:32 +0000 (19:45 +0100)
The current examples should be more realistic.

src/libstd/collections/hash/map.rs

index a7b02fb2b766590963cea8c731ca7b63765966a8..7a79a472d58d9b8701aa8546c075651cebec9896 100644 (file)
@@ -2247,17 +2247,18 @@ fn take_key(&mut self) -> Option<K> {
     /// ```
     /// #![feature(map_entry_replace)]
     /// use std::collections::hash_map::{Entry, HashMap};
+    /// use std::rc::Rc;
     ///
-    /// let mut map: HashMap<String, u32> = HashMap::new();
-    /// map.insert("poneyland".to_string(), 15);
+    /// let mut map: HashMap<Rc<String>, u32> = HashMap::new();
+    /// map.insert(Rc::new("Stringthing".to_string()), 15);
     ///
-    /// if let Entry::Occupied(entry) = map.entry("poneyland".to_string()) {
-    ///     let (old_key, old_value): (String, u32) = entry.replace_entry(16);
-    ///     assert_eq!(old_key, "poneyland");
-    ///     assert_eq!(old_value, 15);
+    /// let my_key = Rc::new("Stringthing".to_string());
+    ///
+    /// if let Entry::Occupied(entry) = map.entry(my_key) {
+    ///     // Also replace the key with a handle to our other key.
+    ///     let (old_key, old_value): (Rc<String>, u32) = entry.replace_entry(16);
     /// }
     ///
-    /// assert_eq!(map.get("poneyland"), Some(&16));
     /// ```
     #[unstable(feature = "map_entry_replace", issue = "44286")]
     pub fn replace_entry(mut self, value: V) -> (K, V) {
@@ -2276,13 +2277,22 @@ pub fn replace_entry(mut self, value: V) -> (K, V) {
     /// ```
     /// #![feature(map_entry_replace)]
     /// use std::collections::hash_map::{Entry, HashMap};
+    /// use std::rc::Rc;
+    ///
+    /// let mut map: HashMap<Rc<String>, u32> = HashMap::new();
+    /// let mut known_strings: Vec<Rc<String>> = Vec::new();
+    ///
+    /// // Initialise known strings, run program, etc.
     ///
-    /// let mut map: HashMap<String, u32> = HashMap::new();
-    /// map.insert("poneyland".to_string(), 15);
+    /// reclaim_memory(&mut map, &known_strings);
     ///
-    /// if let Entry::Occupied(entry) = map.entry("poneyland".to_string()) {
-    ///     let old_key = entry.replace_key();
-    ///     assert_eq!(old_key, "poneyland");
+    /// fn reclaim_memory(map: &mut HashMap<Rc<String>, u32>, known_strings: &[Rc<String>] ) {
+    ///     for s in known_strings {
+    ///         if let Entry::Occupied(entry) = map.entry(s.clone()) {
+    ///             // Replaces the entry's key with our version of it in `known_strings`.
+    ///             entry.replace_key();
+    ///         }
+    ///     }
     /// }
     /// ```
     #[unstable(feature = "map_entry_replace", issue = "44286")]