summaryrefslogtreecommitdiffstats
path: root/src/structs.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/structs.rs')
-rw-r--r--src/structs.rs41
1 files changed, 19 insertions, 22 deletions
diff --git a/src/structs.rs b/src/structs.rs
index c41cb52..ddc5d70 100644
--- a/src/structs.rs
+++ b/src/structs.rs
@@ -78,7 +78,7 @@ impl std::fmt::Debug for JoshutoDirEntry {
#[derive(Debug)]
pub struct JoshutoDirList {
- pub index: i32,
+ pub index: Option<usize>,
pub path: PathBuf,
pub update_needed: bool,
pub metadata: JoshutoMetadata,
@@ -91,7 +91,7 @@ impl JoshutoDirList {
let mut contents = Self::read_dir_list(path.as_path(), sort_type)?;
contents.sort_by(&sort_type.compare_func());
- let index = if !contents.is_empty() { 0 } else { -1 };
+ let index = if !contents.is_empty() { Some(0) } else { None };
let metadata = fs::metadata(&path)?;
let metadata = JoshutoMetadata::from(&metadata)?;
@@ -138,12 +138,9 @@ impl JoshutoDirList {
let contents_len = contents.len() as i32;
if contents_len == 0 {
- self.index = -1;
- } else if self.index >= contents_len {
- self.index = contents_len - 1;
- } else if self.index >= 0 && self.index < contents_len {
+ self.index = None;
} else {
- self.index = 0;
+ self.index = Some(0);
}
let metadata = std::fs::metadata(&self.path)?;
@@ -155,39 +152,39 @@ impl JoshutoDirList {
}
pub fn get_curr_ref(&self) -> Option<&JoshutoDirEntry> {
- self.get_curr_ref_(self.index)
+ self.get_curr_ref_(self.index?)
}
pub fn get_curr_mut(&mut self) -> Option<&mut JoshutoDirEntry> {
- let index = self.index;
- self.get_curr_mut_(index)
+ self.get_curr_mut_(self.index?)
}
- fn get_curr_mut_(&mut self, index: i32) -> Option<&mut JoshutoDirEntry> {
- if index >= 0 && (index as usize) < self.contents.len() {
- Some(&mut self.contents[index as usize])
+ fn get_curr_mut_(&mut self, index: usize) -> Option<&mut JoshutoDirEntry> {
+ if index < self.contents.len() {
+ Some(&mut self.contents[index])
} else {
None
}
}
- fn get_curr_ref_(&self, index: i32) -> Option<&JoshutoDirEntry> {
- if index >= 0 && (index as usize) < self.contents.len() {
- Some(&self.contents[index as usize])
+ fn get_curr_ref_(&self, index: usize) -> Option<&JoshutoDirEntry> {
+ if index < self.contents.len() {
+ Some(&self.contents[index])
} else {
None
}
}
pub fn curr_toggle_select(&mut self) {
- let index = self.index;
- self.toggle_select(index);
+ if let Some(index) = self.index {
+ self.toggle_select(index);
+ }
}
- fn toggle_select(&mut self, index: i32) {
- if index >= 0 && (index as usize) < self.contents.len() {
- let tmp_bool = !self.contents[index as usize].selected;
- self.contents[index as usize].selected = tmp_bool;
+ fn toggle_select(&mut self, index: usize) {
+ if index < self.contents.len() {
+ let tmp_bool = !self.contents[index].selected;
+ self.contents[index].selected = tmp_bool;
}
}
}