avoid allocations for results
This commit is contained in:
parent
a0497b4452
commit
3c3d20b3d9
1 changed files with 5 additions and 3 deletions
|
@ -11,7 +11,7 @@ struct App {
|
|||
|
||||
impl App {
|
||||
/// check if word consists only of letters in query
|
||||
fn check_word(&self, word: &str) -> Option<String> {
|
||||
fn check_word<'a>(&self, word: &'a str) -> Option<&'a str> {
|
||||
let mut query = self.query.clone();
|
||||
word.chars()
|
||||
.try_for_each(|c| {
|
||||
|
@ -19,17 +19,19 @@ impl App {
|
|||
query.remove(position);
|
||||
Some(())
|
||||
})
|
||||
.and(Some(word.to_string()))
|
||||
.and(Some(word))
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let app: App = argh::from_env();
|
||||
|
||||
let start = std::time::Instant::now();
|
||||
let mut results = WORDS
|
||||
.lines()
|
||||
.filter_map(|line| app.check_word(line))
|
||||
.collect::<Vec<String>>();
|
||||
.collect::<Vec<&str>>();
|
||||
eprintln!("search took: {:?}", start.elapsed());
|
||||
|
||||
results.sort_by(|a, b| {
|
||||
a.len()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue