summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqkzk <qu3nt1n@gmail.com>2022-12-05 15:31:12 +0100
committerqkzk <qu3nt1n@gmail.com>2022-12-05 15:31:12 +0100
commit93d408b8b0860eda8bd52ccdd088bc3da36803cf (patch)
treedcee5210b8f9a12ed7cc37c044d8fd5401e40597
parentd0d34172f6e1646e7ff16c8361a3a9d0df021395 (diff)
-rw-r--r--src/fileinfo.rs48
-rw-r--r--src/shortcut.rs7
-rw-r--r--src/utils.rs15
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();
}