Skip to content

Commit ed5198c

Browse files
committed
fix: 修复了everything依赖项导致的arm编译失败的问题,添加了更多的条件编译内容
1 parent 69605c8 commit ed5198c

3 files changed

Lines changed: 70 additions & 90 deletions

File tree

src-tauri/Cargo.toml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ bincode = "2.0.1"
109109
arboard = "3.6.1"
110110
zip = "6.0.0"
111111
whoami = "1.6.1"
112-
everything-rs = "0.1.10"
113112
blake3 = "1.8.2"
114113

115114
[features]
@@ -124,3 +123,6 @@ ai = [
124123

125124
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
126125
tauri-plugin-single-instance = { version = "2", features = ["deep-link"] }
126+
127+
[target.'cfg(target_arch = "x86_64")'.dependencies]
128+
everything-rs = "0.1.10"

src-tauri/src/modules/everything/config.rs

Lines changed: 35 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#[cfg(target_arch = "x86_64")]
12
use everything_rs::EverythingSort;
23
use parking_lot::RwLock;
34
use serde::{Deserialize, Serialize};
@@ -36,7 +37,7 @@ impl EverythingConfigInner {
3637
}
3738

3839
pub(crate) fn default_sort_method() -> EverythingSortKind {
39-
EverythingSortKind::NameAscending
40+
EverythingSortKind("NameAscending".to_string())
4041
}
4142

4243
pub(crate) fn default_result_limit() -> usize {
@@ -58,7 +59,7 @@ impl EverythingConfigInner {
5859
pub fn to_partial(&self) -> PartialEverythingConfig {
5960
PartialEverythingConfig {
6061
sort_threshold: Some(self.sort_threshold),
61-
sort_method: Some(self.sort_method),
62+
sort_method: Some(self.sort_method.clone()),
6263
result_limit: Some(self.result_limit),
6364
}
6465
}
@@ -93,81 +94,48 @@ impl EverythingConfig {
9394
}
9495

9596
pub fn get_sort_method(&self) -> EverythingSortKind {
96-
self.inner.read().sort_method
97+
self.inner.read().sort_method.clone()
9798
}
9899

99100
pub fn get_result_limit(&self) -> usize {
100101
self.inner.read().result_limit
101102
}
102103
}
103104

104-
#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq)]
105-
pub enum EverythingSortKind {
106-
NameAscending,
107-
NameDescending,
108-
PathAscending,
109-
PathDescending,
110-
SizeAscending,
111-
SizeDescending,
112-
ExtensionAscending,
113-
ExtensionDescending,
114-
TypeNameAscending,
115-
TypeNameDescending,
116-
DateCreatedAscending,
117-
DateCreatedDescending,
118-
DateModifiedAscending,
119-
DateModifiedDescending,
120-
AttributesAscending,
121-
AttributesDescending,
122-
FileListFilenameAscending,
123-
FileListFilenameDescending,
124-
RunCountAscending,
125-
RunCountDescending,
126-
DateRecentlyChangedAscending,
127-
DateRecentlyChangedDescending,
128-
DateAccessedAscending,
129-
DateAccessedDescending,
130-
DateRunAscending,
131-
DateRunDescending,
132-
}
105+
#[derive(Debug, Clone, Serialize, Deserialize)]
106+
pub struct EverythingSortKind(String);
133107

108+
#[cfg(target_arch = "x86_64")]
134109
impl From<EverythingSortKind> for EverythingSort {
135110
fn from(kind: EverythingSortKind) -> Self {
136-
match kind {
137-
EverythingSortKind::NameAscending => EverythingSort::NameAscending,
138-
EverythingSortKind::NameDescending => EverythingSort::NameDescending,
139-
EverythingSortKind::PathAscending => EverythingSort::PathAscending,
140-
EverythingSortKind::PathDescending => EverythingSort::PathDescending,
141-
EverythingSortKind::SizeAscending => EverythingSort::SizeAscending,
142-
EverythingSortKind::SizeDescending => EverythingSort::SizeDescending,
143-
EverythingSortKind::ExtensionAscending => EverythingSort::ExtensionAscending,
144-
EverythingSortKind::ExtensionDescending => EverythingSort::ExtensionDescending,
145-
EverythingSortKind::TypeNameAscending => EverythingSort::TypeNameAscending,
146-
EverythingSortKind::TypeNameDescending => EverythingSort::TypeNameDescending,
147-
EverythingSortKind::DateCreatedAscending => EverythingSort::DateCreatedAscending,
148-
EverythingSortKind::DateCreatedDescending => EverythingSort::DateCreatedDescending,
149-
EverythingSortKind::DateModifiedAscending => EverythingSort::DateModifiedAscending,
150-
EverythingSortKind::DateModifiedDescending => EverythingSort::DateModifiedDescending,
151-
EverythingSortKind::AttributesAscending => EverythingSort::AttributesAscending,
152-
EverythingSortKind::AttributesDescending => EverythingSort::AttributesDescending,
153-
EverythingSortKind::FileListFilenameAscending => {
154-
EverythingSort::FileListFilenameAscending
155-
}
156-
EverythingSortKind::FileListFilenameDescending => {
157-
EverythingSort::FileListFilenameDescending
158-
}
159-
EverythingSortKind::RunCountAscending => EverythingSort::RunCountAscending,
160-
EverythingSortKind::RunCountDescending => EverythingSort::RunCountDescending,
161-
EverythingSortKind::DateRecentlyChangedAscending => {
162-
EverythingSort::DateRecentlyChangedAscending
163-
}
164-
EverythingSortKind::DateRecentlyChangedDescending => {
165-
EverythingSort::DateRecentlyChangedDescending
166-
}
167-
EverythingSortKind::DateAccessedAscending => EverythingSort::DateAccessedAscending,
168-
EverythingSortKind::DateAccessedDescending => EverythingSort::DateAccessedDescending,
169-
EverythingSortKind::DateRunAscending => EverythingSort::DateRunAscending,
170-
EverythingSortKind::DateRunDescending => EverythingSort::DateRunDescending,
111+
match kind.0.as_str() {
112+
"NameAscending" => EverythingSort::NameAscending,
113+
"NameDescending" => EverythingSort::NameDescending,
114+
"PathAscending" => EverythingSort::PathAscending,
115+
"PathDescending" => EverythingSort::PathDescending,
116+
"SizeAscending" => EverythingSort::SizeAscending,
117+
"SizeDescending" => EverythingSort::SizeDescending,
118+
"ExtensionAscending" => EverythingSort::ExtensionAscending,
119+
"ExtensionDescending" => EverythingSort::ExtensionDescending,
120+
"TypeNameAscending" => EverythingSort::TypeNameAscending,
121+
"TypeNameDescending" => EverythingSort::TypeNameDescending,
122+
"DateCreatedAscending" => EverythingSort::DateCreatedAscending,
123+
"DateCreatedDescending" => EverythingSort::DateCreatedDescending,
124+
"DateModifiedAscending" => EverythingSort::DateModifiedAscending,
125+
"DateModifiedDescending" => EverythingSort::DateModifiedDescending,
126+
"AttributesAscending" => EverythingSort::AttributesAscending,
127+
"AttributesDescending" => EverythingSort::AttributesDescending,
128+
"FileListFilenameAscending" => EverythingSort::FileListFilenameAscending,
129+
"FileListFilenameDescending" => EverythingSort::FileListFilenameDescending,
130+
"RunCountAscending" => EverythingSort::RunCountAscending,
131+
"RunCountDescending" => EverythingSort::RunCountDescending,
132+
"DateRecentlyChangedAscending" => EverythingSort::DateRecentlyChangedAscending,
133+
"DateRecentlyChangedDescending" => EverythingSort::DateRecentlyChangedDescending,
134+
"DateAccessedAscending" => EverythingSort::DateAccessedAscending,
135+
"DateAccessedDescending" => EverythingSort::DateAccessedDescending,
136+
"DateRunAscending" => EverythingSort::DateRunAscending,
137+
"DateRunDescending" => EverythingSort::DateRunDescending,
138+
_ => EverythingSort::NameAscending, // 默认值
171139
}
172140
}
173141
}

src-tauri/src/modules/everything/mod.rs

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1+
use crate::modules::everything::config::EverythingSortKind;
12
use crate::utils::defer::defer;
2-
use everything_rs::{Everything, EverythingRequestFlags, EverythingSort};
3+
#[cfg(target_arch = "x86_64")]
4+
use everything_rs::{Everything, EverythingRequestFlags};
35
use parking_lot::RwLock;
46
use std::sync::atomic::{AtomicBool, Ordering};
57
use std::sync::Arc;
@@ -22,7 +24,7 @@ pub struct EverythingManagerInner {
2224
// 排序阈值
2325
pub sort_threshold: usize,
2426
// 排序方式
25-
pub sort_method: EverythingSort,
27+
pub sort_method: EverythingSortKind,
2628
// 结果限制
2729
pub result_limit: usize,
2830
}
@@ -38,14 +40,14 @@ impl EverythingManagerInner {
3840
Self {
3941
is_searching: AtomicBool::new(false),
4042
sort_threshold: EverythingConfig::default().get_sort_threshold(),
41-
sort_method: EverythingConfig::default().get_sort_method().into(),
43+
sort_method: EverythingConfig::default().get_sort_method().clone(),
4244
result_limit: EverythingConfig::default().get_result_limit(),
4345
}
4446
}
4547

4648
pub fn load_from_config(&mut self, config: Arc<EverythingConfig>) {
4749
self.sort_threshold = config.get_sort_threshold();
48-
self.sort_method = config.get_sort_method().into();
50+
self.sort_method = config.get_sort_method().clone();
4951
self.result_limit = config.get_result_limit();
5052
}
5153

@@ -68,27 +70,35 @@ impl EverythingManagerInner {
6870
return Ok(Vec::new());
6971
}
7072

71-
let everything = Everything::new();
72-
everything.set_search(query);
73-
// FullPathAndFileName 已经包含完整路径和文件名(包括扩展名)
74-
everything.set_request_flags(EverythingRequestFlags::FullPathAndFileName);
75-
everything.set_max_results(self.result_limit as u32);
73+
// 这里允许使用无更改的mut,因为对于arm64架构来说,everything.rs并不支持
74+
#[allow(unused_mut)]
75+
let mut results = Vec::new();
7676

77-
// Use sort_threshold from config
78-
if query.len() >= self.sort_threshold {
79-
everything.set_sort(self.sort_method);
77+
#[cfg(target_arch = "x86_64")]
78+
{
79+
// 如果启用了everything集成,则使用everything进行搜索,否则就对results无处理
80+
let everything = Everything::new();
81+
everything.set_search(query);
82+
// FullPathAndFileName 已经包含完整路径和文件名(包括扩展名)
83+
everything.set_request_flags(EverythingRequestFlags::FullPathAndFileName);
84+
everything.set_max_results(self.result_limit as u32);
85+
86+
// Use sort_threshold from config
87+
if query.len() >= self.sort_threshold {
88+
everything.set_sort(self.sort_method.clone().into());
89+
}
90+
91+
everything
92+
.query()
93+
.map_err(|e| format!("Everything query failed: {:?}", e))?;
94+
95+
for path in everything.full_path_iter().flatten() {
96+
let hash = blake3::hash(path.as_bytes());
97+
let id: u64 = u64::from_le_bytes(hash.as_bytes()[0..8].try_into().unwrap());
98+
results.push(EverythingSearchResult { id, path });
99+
}
80100
}
81101

82-
everything
83-
.query()
84-
.map_err(|e| format!("Everything query failed: {:?}", e))?;
85-
86-
let mut results = Vec::new();
87-
for path in everything.full_path_iter().flatten() {
88-
let hash = blake3::hash(path.as_bytes());
89-
let id: u64 = u64::from_le_bytes(hash.as_bytes()[0..8].try_into().unwrap());
90-
results.push(EverythingSearchResult { id, path });
91-
}
92102
Ok(results)
93103
}
94104

0 commit comments

Comments
 (0)