diff options
author | qkzk <qu3nt1n@gmail.com> | 2022-12-05 15:31:12 +0100 |
---|---|---|
committer | qkzk <qu3nt1n@gmail.com> | 2022-12-05 15:31:12 +0100 |
commit | 93d408b8b0860eda8bd52ccdd088bc3da36803cf (patch) | |
tree | dcee5210b8f9a12ed7cc37c044d8fd5401e40597 | |
parent | d0d34172f6e1646e7ff16c8361a3a9d0df021395 (diff) |
clippydetect_disk_change
-rw-r--r-- | src/fileinfo.rs | 48 | ||||
-rw-r--r-- | src/shortcut.rs | 7 | ||||
-rw-r--r-- | src/utils.rs | 15 |
3 files changed, 36 insertions, 34 deletions
diff --git a/src/fileinfo.rs b/src/fileinfo.rs index 28daa14..a5782ef 100644 --- a/src/fileinfo.rs +++ b/src/fileinfo.rs @@ -267,31 +267,31 @@ impl PathContent { } fn files(path: &path::Path, show_hidden: bool, filter: FilterKind) -> FmResult<Vec<FileInfo>> { - info!("reading files..."); - let read_dir = read_dir(path); - if read_dir.is_err() { - info!("Couldn't read path {:?} - {:?}", path, read_dir); - return Ok(vec![]); + match read_dir(path) { + Ok(read_dir) => { + let files: Vec<FileInfo> = if show_hidden { + read_dir + .filter_map(|res_direntry| res_direntry.ok()) + .map(|direntry| FileInfo::new(&direntry)) + .filter_map(|res_file_entry| res_file_entry.ok()) + .filter(|fileinfo| filter.filter_by(fileinfo)) + .collect() + } else { + read_dir + .filter_map(|res_direntry| res_direntry.ok()) + .filter(|e| is_not_hidden(e).unwrap_or(true)) + .map(|direntry| FileInfo::new(&direntry)) + .filter_map(|res_file_entry| res_file_entry.ok()) + .filter(|fileinfo| filter.filter_by(fileinfo)) + .collect() + }; + Ok(files) + } + Err(error) => { + info!("Couldn't read path {} - {}", path.to_string_lossy(), error); + Ok(vec![]) + } } - info!("files read"); - let read_dir = read_dir.unwrap(); - let files: Vec<FileInfo> = if show_hidden { - read_dir - .filter_map(|res_direntry| res_direntry.ok()) - .map(|direntry| FileInfo::new(&direntry)) - .filter_map(|res_file_entry| res_file_entry.ok()) - .filter(|fileinfo| filter.filter_by(fileinfo)) - .collect() - } else { - read_dir - .filter_map(|res_direntry| res_direntry.ok()) - .filter(|e| is_not_hidden(e).unwrap_or(true)) - .map(|direntry| FileInfo::new(&direntry)) - .filter_map(|res_file_entry| res_file_entry.ok()) - .filter(|fileinfo| filter.filter_by(fileinfo)) - .collect() - }; - Ok(files) } pub fn path_to_str(&self) -> FmResult<&str> { diff --git a/src/shortcut.rs b/src/shortcut.rs index 79bd679..c2442fb 100644 --- a/src/shortcut.rs +++ b/src/shortcut.rs @@ -8,9 +8,14 @@ pub struct Shortcut { pub index: usize, } +impl Default for Shortcut { + fn default() -> Self { + Self::new() + } +} + impl Shortcut { pub fn new() -> Self { - // Since PathBuf::from_str returns a Result<String, Infaillible>, we can unwrap safely. let shortcuts = Self::reset_shortcuts(); Self { shortcuts, diff --git a/src/utils.rs b/src/utils.rs index 51b1c01..8068b2c 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,4 +1,4 @@ -use std::path::PathBuf; +use std::path::Path; use std::sync::Arc; use sysinfo::{Disk, DiskExt}; @@ -17,16 +17,13 @@ pub fn init_term() -> FmResult<Term> { Ok(term) } -fn disk_used_by_path<'a>(disks: &'a [Disk], path: &PathBuf) -> Option<&'a Disk> { +fn disk_used_by_path<'a>(disks: &'a [Disk], path: &Path) -> Option<&'a Disk> { let mut disks: Vec<&Disk> = disks.iter().collect(); disks.sort_by_key(|disk| disk.mount_point().as_os_str().len()); disks.reverse(); - for disk in disks { - if path.starts_with(disk.mount_point()) { - return Some(disk); - }; - } - None + disks + .into_iter() + .find(|&disk| path.starts_with(disk.mount_point())) } fn disk_space_used(disk: Option<&Disk>) -> String { @@ -36,7 +33,7 @@ fn disk_space_used(disk: Option<&Disk>) -> String { } } -pub fn disk_space(disks: &[Disk], path: &PathBuf) -> String { +pub fn disk_space(disks: &[Disk], path: &Path) -> String { if path.as_os_str().is_empty() { return "".to_owned(); } |