Day three of code refactoring... Trying to start to think this way
My original code:
let mut results: Vec<u32> = engine.search(&input);
let total = results.len();
if total > 10 {
results.drain(10..);
}
let mut top_ten: Vec<(u32, String)> = vec![];
for index in results {
top_ten.push((index, catalog[index as usize].1.clone()))
}
let mut answer_vec: Vec<u32> = vec![];
for (i, _) in top_ten.iter() {
answer_vec.push(*i)
}
After refactoring and explanations:
let answer_vec: Vec<u32> = engine
.search(&input)
.into_iter()
.take(10)
.collect();
Both do the same:
1) Send "input" to search function
2) Iterate through it's output
3) Take first 10 elements
4) Collect them into a vector
But look different.
It's important to catch an idea before you start to write code. If you can't - write step by step like in the first example then try to figure out what your idea actually is and try to refactor.
Top comments (0)