Browse Source

Don't copy a 200,000 element vec

master
Dylan Baker 3 years ago
parent
commit
862017930a
1 changed files with 10 additions and 6 deletions
  1. 10
    6
      src/lib.rs

+ 10
- 6
src/lib.rs View File

33
             tld.map(|tld| {
33
             tld.map(|tld| {
34
                 let word = self.get_random_word(&tld);
34
                 let word = self.get_random_word(&tld);
35
                 if word.is_some() {
35
                 if word.is_some() {
36
-                    let mut word = word.unwrap();
36
+                    let mut word = word.unwrap().to_string();
37
                     word.truncate(word.len() - 2);
37
                     word.truncate(word.len() - 2);
38
                     domain = format!("{}.{}", word, tld);
38
                     domain = format!("{}.{}", word, tld);
39
                 }
39
                 }
49
             .map(|v| String::from(v))
49
             .map(|v| String::from(v))
50
     }
50
     }
51
 
51
 
52
-    fn get_random_word(&self, tld: &str) -> Option<String> {
52
+    fn filter_words(&self, tld: &str) -> Vec<&str> {
53
         self.words
53
         self.words
54
-            .clone()
55
-            .into_iter()
54
+            .iter()
56
             .filter(|word| word.ends_with(tld))
55
             .filter(|word| word.ends_with(tld))
57
-            .collect::<Vec<String>>()
56
+            .map(|i| &i[..])
57
+            .collect()
58
+    }
59
+
60
+    fn get_random_word(&self, tld: &str) -> Option<&str> {
61
+        self.filter_words(tld)
58
             .choose(&mut rand::thread_rng())
62
             .choose(&mut rand::thread_rng())
59
-            .map(|v| v.to_string().to_lowercase())
63
+            .map(|w| *w)
60
     }
64
     }
61
 }
65
 }
62
 
66
 

Loading…
Cancel
Save