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,7 +33,7 @@ impl App {
33 33
             tld.map(|tld| {
34 34
                 let word = self.get_random_word(&tld);
35 35
                 if word.is_some() {
36
-                    let mut word = word.unwrap();
36
+                    let mut word = word.unwrap().to_string();
37 37
                     word.truncate(word.len() - 2);
38 38
                     domain = format!("{}.{}", word, tld);
39 39
                 }
@@ -49,14 +49,18 @@ impl App {
49 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 53
         self.words
54
-            .clone()
55
-            .into_iter()
54
+            .iter()
56 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 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