|
|
@ -1,5 +1,5 @@ |
|
|
|
use std::collections::BTreeMap; |
|
|
|
use std::collections::BTreeMap; |
|
|
|
use std::collections::LinkedList; |
|
|
|
use std::collections::BTreeSet; |
|
|
|
use std::fs::File; |
|
|
|
use std::fs::File; |
|
|
|
use std::io::{Read, Write}; |
|
|
|
use std::io::{Read, Write}; |
|
|
|
|
|
|
|
|
|
|
@ -7,7 +7,7 @@ use serde_derive::Deserialize; |
|
|
|
use serde_derive::Serialize; |
|
|
|
use serde_derive::Serialize; |
|
|
|
use toml; |
|
|
|
use toml; |
|
|
|
|
|
|
|
|
|
|
|
pub type WordStorage = BTreeMap<String, LinkedList<String>>; |
|
|
|
pub type WordStorage = BTreeMap<String, BTreeSet<String>>; |
|
|
|
|
|
|
|
|
|
|
|
#[derive(Debug, Serialize, Deserialize)] |
|
|
|
#[derive(Debug, Serialize, Deserialize)] |
|
|
|
pub struct WordList { |
|
|
|
pub struct WordList { |
|
|
@ -19,7 +19,6 @@ pub struct WordList { |
|
|
|
pub enum WordListError { |
|
|
|
pub enum WordListError { |
|
|
|
InvalidFormat, |
|
|
|
InvalidFormat, |
|
|
|
InvalidWord, |
|
|
|
InvalidWord, |
|
|
|
WordAlreadyExists, |
|
|
|
|
|
|
|
SaveFailure, |
|
|
|
SaveFailure, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -106,18 +105,14 @@ impl WordList { |
|
|
|
.to_string() |
|
|
|
.to_string() |
|
|
|
.to_lowercase(); |
|
|
|
.to_lowercase(); |
|
|
|
let mut list = if !target.contains_key(&initial) { |
|
|
|
let mut list = if !target.contains_key(&initial) { |
|
|
|
let empty_list = LinkedList::new(); |
|
|
|
let empty_list = BTreeSet::new(); |
|
|
|
empty_list |
|
|
|
empty_list |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
target.get(&initial).unwrap().to_owned() |
|
|
|
target.get(&initial).unwrap().to_owned() |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
if list.contains(&word.to_string()) { |
|
|
|
list.insert(word.to_string().to_lowercase()); |
|
|
|
Err(WordListError::WordAlreadyExists) |
|
|
|
target.insert(initial, list); |
|
|
|
} else { |
|
|
|
Ok(()) |
|
|
|
list.push_back(word.to_string().to_lowercase()); |
|
|
|
|
|
|
|
target.insert(initial, list); |
|
|
|
|
|
|
|
Ok(()) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|