Remove many unwrap
This commit is contained in:
+1
-1
@@ -611,7 +611,7 @@ pub fn app_data_dir() -> PathBuf {
|
|||||||
let mut dir = dirs::data_dir().unwrap();
|
let mut dir = dirs::data_dir().unwrap();
|
||||||
dir.push("jap_learn");
|
dir.push("jap_learn");
|
||||||
if !dir.exists() {
|
if !dir.exists() {
|
||||||
fs::create_dir(dir.clone()).unwrap();
|
fs::create_dir_all(dir.clone()).unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
dir
|
dir
|
||||||
|
|||||||
@@ -171,11 +171,17 @@ impl DictionaryQuizState {
|
|||||||
self.is_help = false;
|
self.is_help = false;
|
||||||
self.answer = String::new();
|
self.answer = String::new();
|
||||||
|
|
||||||
if self.current_set.is_empty() {
|
let next : WordData =
|
||||||
self.update_set();
|
match self.current_set.pop() {
|
||||||
|
Some(word) => {
|
||||||
|
word
|
||||||
}
|
}
|
||||||
|
None => {
|
||||||
|
self.update_set();
|
||||||
|
self.current_set.pop().expect("Empty set")
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
let next = self.current_set.pop().unwrap();
|
|
||||||
if self.reverse {
|
if self.reverse {
|
||||||
self.view = next.value.clone();
|
self.view = next.value.clone();
|
||||||
self.correct = next.key.clone();
|
self.correct = next.key.clone();
|
||||||
|
|||||||
+1
-1
@@ -512,7 +512,7 @@ impl ImportState {
|
|||||||
.map(|name| (name.clone(), Vec::<usize>::with_capacity(1)))
|
.map(|name| (name.clone(), Vec::<usize>::with_capacity(1)))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
for (key, endpoint) in &group.mapping {
|
for (key, endpoint) in &group.mapping {
|
||||||
let property_index = group.fields.iter().position(|f| f == key).unwrap();
|
let property_index = group.fields.iter().position(|f| f == key).expect("Unknown property");
|
||||||
let group_index = result
|
let group_index = result
|
||||||
.iter()
|
.iter()
|
||||||
.position(|(name, _)| name == endpoint)
|
.position(|(name, _)| name == endpoint)
|
||||||
|
|||||||
+14
-8
@@ -500,12 +500,14 @@ impl RandomSRSModule {
|
|||||||
}
|
}
|
||||||
impl SRSModule for RandomSRSModule {
|
impl SRSModule for RandomSRSModule {
|
||||||
fn next(&mut self, set: &mut DeckData) -> usize {
|
fn next(&mut self, set: &mut DeckData) -> usize {
|
||||||
if self.basket.is_empty() {
|
match self.basket.pop() {
|
||||||
|
Some(index) => index,
|
||||||
|
None => {
|
||||||
self.basket = (0..set.words.len()).collect::<Vec<usize>>();
|
self.basket = (0..set.words.len()).collect::<Vec<usize>>();
|
||||||
self.basket.shuffle(&mut rand::rng())
|
self.basket.shuffle(&mut rand::rng());
|
||||||
|
self.basket.pop().expect("empty basket")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.basket.pop().unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {}
|
fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {}
|
||||||
@@ -552,7 +554,7 @@ impl SRSModule for SemiRandomSRSModule {
|
|||||||
let new_weight = (100.0 / word.calculated_score()).powf(2.0);
|
let new_weight = (100.0 / word.calculated_score()).powf(2.0);
|
||||||
self.last_weights
|
self.last_weights
|
||||||
.update_weights(&[(index, &new_weight)])
|
.update_weights(&[(index, &new_weight)])
|
||||||
.unwrap();
|
.expect("update weights error");
|
||||||
}
|
}
|
||||||
fn init(&mut self, set: &mut DeckData) {
|
fn init(&mut self, set: &mut DeckData) {
|
||||||
self.initialized = true;
|
self.initialized = true;
|
||||||
@@ -585,12 +587,16 @@ impl SRSModule for WorstWordsSRSModule {
|
|||||||
self.rounds_remaining = self.rounds_count;
|
self.rounds_remaining = self.rounds_count;
|
||||||
}
|
}
|
||||||
|
|
||||||
if self.queue.is_empty() {
|
match self.queue.pop() {
|
||||||
|
Some(index) => {
|
||||||
|
index
|
||||||
|
}
|
||||||
|
None => {
|
||||||
self.queue.append(&mut self.pool.clone());
|
self.queue.append(&mut self.pool.clone());
|
||||||
self.rounds_remaining -= 1;
|
self.rounds_remaining -= 1;
|
||||||
|
self.queue.pop().expect("empty queue")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self.queue.pop().unwrap()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {}
|
fn open(&mut self, _: WordOpenMode, _: usize, _: CardStatistics) {}
|
||||||
|
|||||||
+10
-3
@@ -3,7 +3,7 @@ use crate::data_provider::sqlite::{create_db, default_connection};
|
|||||||
use crate::data_provider::web_api::{
|
use crate::data_provider::web_api::{
|
||||||
get_local_version, get_web_version, load_data, set_local_version,
|
get_local_version, get_web_version, load_data, set_local_version,
|
||||||
};
|
};
|
||||||
use crate::dictionary::{DictionaryMessage, DictionaryState, app_data_dir};
|
use crate::dictionary::{app_data_dir, DictionaryMessage, DictionaryState};
|
||||||
use crate::dictionary_test::{DictionaryQuizMessage, DictionaryQuizState};
|
use crate::dictionary_test::{DictionaryQuizMessage, DictionaryQuizState};
|
||||||
use crate::history::{HistoryMessage, HistoryState};
|
use crate::history::{HistoryMessage, HistoryState};
|
||||||
use crate::import::{ImportMessage, ImportState};
|
use crate::import::{ImportMessage, ImportState};
|
||||||
@@ -23,7 +23,7 @@ use crate::sync::{SyncMessage, SyncState};
|
|||||||
use crate::view_navigation;
|
use crate::view_navigation;
|
||||||
use crate::word::{WordMessage, WordState};
|
use crate::word::{WordMessage, WordState};
|
||||||
use crate::writing::{WritingMessage, WritingState};
|
use crate::writing::{WritingMessage, WritingState};
|
||||||
use crate::{AppState, fill_state};
|
use crate::{fill_state, AppState};
|
||||||
use chrono::NaiveDate;
|
use chrono::NaiveDate;
|
||||||
use hashbrown::HashMap;
|
use hashbrown::HashMap;
|
||||||
use iced::keyboard::Event;
|
use iced::keyboard::Event;
|
||||||
@@ -126,7 +126,11 @@ impl ScreenState {
|
|||||||
let mut map = HashMap::new();
|
let mut map = HashMap::new();
|
||||||
for file in directory.read_dir().unwrap().flatten() {
|
for file in directory.read_dir().unwrap().flatten() {
|
||||||
let mut vec = vec![];
|
let mut vec = vec![];
|
||||||
let history_file_name = file.file_name().into_string().unwrap();
|
let history_file_name = match file.file_name().into_string() {
|
||||||
|
Err(_) => continue,
|
||||||
|
Ok(v) => v,
|
||||||
|
};
|
||||||
|
|
||||||
let id: Id = history_file_name[4..history_file_name.len() - 12]
|
let id: Id = history_file_name[4..history_file_name.len() - 12]
|
||||||
.parse::<Id>()
|
.parse::<Id>()
|
||||||
.unwrap();
|
.unwrap();
|
||||||
@@ -303,7 +307,10 @@ macro_rules! message_navigation {
|
|||||||
($msg:expr, $stack:expr, $state:expr) => {
|
($msg:expr, $stack:expr, $state:expr) => {
|
||||||
if let Some(new_page) = $state.navigate(&$msg) {
|
if let Some(new_page) = $state.navigate(&$msg) {
|
||||||
if let Page::PreviousPage = new_page {
|
if let Page::PreviousPage = new_page {
|
||||||
|
if $stack.len() > 1 {
|
||||||
$stack.pop();
|
$stack.pop();
|
||||||
|
}
|
||||||
|
|
||||||
return (Task::<RootMessage>::none(), true);
|
return (Task::<RootMessage>::none(), true);
|
||||||
} else {
|
} else {
|
||||||
$stack.push(new_page);
|
$stack.push(new_page);
|
||||||
|
|||||||
Reference in New Issue
Block a user