diff --git a/yazi-fs/src/provider/local/casefold.rs b/yazi-fs/src/provider/local/casefold.rs index 445f11a6..55136207 100644 --- a/yazi-fs/src/provider/local/casefold.rs +++ b/yazi-fs/src/provider/local/casefold.rs @@ -47,6 +47,7 @@ fn casefold_impl(path: PathBuf) -> io::Result { } #[cfg(any(target_os = "linux", target_os = "android"))] +#[allow(irrefutable_let_patterns)] fn casefold_impl(path: PathBuf) -> io::Result { use std::{ffi::{CString, OsStr, OsString}, fs::File, os::{fd::{AsRawFd, FromRawFd}, unix::{ffi::{OsStrExt, OsStringExt}, fs::MetadataExt}}}; @@ -94,18 +95,18 @@ fn casefold_impl(path: PathBuf) -> io::Result { } } - if let Some(i) = names.iter().position(|n| n == name) { + if names.iter().find(|&n| n == name).is_some() { // Exact match Ok(PathBuf::from(OsString::from_vec(cstr.into_bytes()))) } else if names.len() == 1 { // No hardlink that shares the same inode - Ok(parent.join(names[0])) + Ok(parent.join(&names[0])) } else if let mut it = names.iter().enumerate().filter(|&(_, n)| n.eq_ignore_ascii_case(name)) && let Some((i, _)) = it.next() && it.next().is_none() { // Case-insensitive match - Ok(parent.join(names[i])) + Ok(parent.join(&names[i])) } else { Err(io::Error::from(io::ErrorKind::NotFound)) }