mirror of
https://github.com/clash-verge-rev/clash-verge-rev.git
synced 2026-01-29 00:35:38 +08:00
In Rust, the `or` and `or_else` methods have distinct behavioral differences. The `or` method always eagerly evaluates its argument and executes any associated function calls. This can lead to unnecessary performance costs—especially in expensive operations like string processing or file handling—and may even trigger unintended side effects. In contrast, `or_else` evaluates its closure lazily, only when necessary. Introducing a Clippy lint to disallow `or` sacrifices a bit of code simplicity but ensures predictable behavior and enforces lazy evaluation for better performance.
225 lines
5.9 KiB
TOML
Executable File
225 lines
5.9 KiB
TOML
Executable File
[package]
|
|
name = "clash-verge"
|
|
version = "2.4.3"
|
|
description = "clash verge"
|
|
authors = ["zzzgydi", "Tunglies", "wonfen", "MystiPanda"]
|
|
license = "GPL-3.0-only"
|
|
repository = "https://github.com/clash-verge-rev/clash-verge-rev.git"
|
|
default-run = "clash-verge"
|
|
edition = "2024"
|
|
build = "build.rs"
|
|
|
|
[package.metadata.bundle]
|
|
identifier = "io.github.clash-verge-rev.clash-verge-rev"
|
|
|
|
[build-dependencies]
|
|
tauri-build = { version = "2.5.0", features = [] }
|
|
|
|
[dependencies]
|
|
warp = { version = "0.4.2", features = ["server"] }
|
|
anyhow = "1.0.100"
|
|
dirs = "6.0"
|
|
open = "5.3.2"
|
|
log = "0.4.28"
|
|
dunce = "1.0.5"
|
|
nanoid = "0.4"
|
|
chrono = "0.4.42"
|
|
sysinfo = { version = "0.37.2", features = ["network", "system"] }
|
|
boa_engine = "0.21.0"
|
|
serde_json = "1.0.145"
|
|
serde_yaml_ng = "0.10.0"
|
|
once_cell = "1.21.3"
|
|
port_scanner = "0.1.5"
|
|
delay_timer = "0.11.6"
|
|
parking_lot = "0.12.5"
|
|
percent-encoding = "2.3.2"
|
|
tokio = { version = "1.48.0", features = [
|
|
"rt-multi-thread",
|
|
"macros",
|
|
"time",
|
|
"sync",
|
|
] }
|
|
serde = { version = "1.0.228", features = ["derive"] }
|
|
reqwest = { version = "0.12.24", features = ["json", "cookies"] }
|
|
regex = "1.12.2"
|
|
sysproxy = { git = "https://github.com/clash-verge-rev/sysproxy-rs" }
|
|
tauri = { version = "2.9.0", features = [
|
|
"protocol-asset",
|
|
"devtools",
|
|
"tray-icon",
|
|
"image-ico",
|
|
"image-png",
|
|
] }
|
|
network-interface = { version = "2.0.3", features = ["serde"] }
|
|
tauri-plugin-shell = "2.3.1"
|
|
tauri-plugin-dialog = "2.4.0"
|
|
tauri-plugin-fs = "2.4.2"
|
|
tauri-plugin-process = "2.3.0"
|
|
tauri-plugin-clipboard-manager = "2.3.0"
|
|
tauri-plugin-deep-link = "2.4.3"
|
|
tauri-plugin-window-state = "2.4.0"
|
|
zip = "6.0.0"
|
|
reqwest_dav = "0.2.2"
|
|
aes-gcm = { version = "0.10.3", features = ["std"] }
|
|
base64 = "0.22.1"
|
|
getrandom = "0.3.4"
|
|
futures = "0.3.31"
|
|
sys-locale = "0.3.2"
|
|
libc = "0.2.177"
|
|
gethostname = "1.1.0"
|
|
hmac = "0.12.1"
|
|
sha2 = "0.10.9"
|
|
hex = "0.4.3"
|
|
scopeguard = "1.2.0"
|
|
dashmap = "6.1.0"
|
|
tauri-plugin-notification = "2.3.1"
|
|
tokio-stream = "0.1.17"
|
|
isahc = { version = "1.7.2", default-features = false, features = [
|
|
"text-decoding",
|
|
"parking_lot",
|
|
] }
|
|
backoff = { version = "0.4.0", features = ["tokio"] }
|
|
compact_str = { version = "0.9.0", features = ["serde"] }
|
|
tauri-plugin-http = "2.5.2"
|
|
flexi_logger = "0.31.7"
|
|
console-subscriber = { version = "0.4.1", optional = true }
|
|
tauri-plugin-devtools = { version = "2.0.1" }
|
|
tauri-plugin-mihomo = { git = "https://github.com/clash-verge-rev/tauri-plugin-mihomo" }
|
|
clash_verge_logger = { version = "0.1.0", git = "https://github.com/clash-verge-rev/clash-verge-logger" }
|
|
async-trait = "0.1.89"
|
|
smartstring = { version = "1.0.1", features = ["serde"] }
|
|
clash_verge_service_ipc = { version = "2.0.17", features = [
|
|
"client",
|
|
], git = "https://github.com/clash-verge-rev/clash-verge-service-ipc" }
|
|
# clash_verge_service_ipc = { version = "2.0.17", features = [
|
|
# "client",
|
|
# ], path = "../../clash-verge-service-ipc" }
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
runas = "=1.2.0"
|
|
deelevate = "0.2.0"
|
|
winreg = "0.55.0"
|
|
winapi = { version = "0.3.9", features = [
|
|
"winbase",
|
|
"fileapi",
|
|
"winnt",
|
|
"handleapi",
|
|
"errhandlingapi",
|
|
"minwindef",
|
|
"winerror",
|
|
"tlhelp32",
|
|
"processthreadsapi",
|
|
"winhttp",
|
|
"winreg",
|
|
] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
users = "0.11.0"
|
|
|
|
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
|
|
tauri-plugin-autostart = "2.5.0"
|
|
tauri-plugin-global-shortcut = "2.3.0"
|
|
tauri-plugin-updater = "2.9.0"
|
|
|
|
[features]
|
|
default = ["custom-protocol"]
|
|
custom-protocol = ["tauri/custom-protocol"]
|
|
verge-dev = ["clash_verge_logger/color"]
|
|
tauri-dev = []
|
|
tokio-trace = ["console-subscriber"]
|
|
clippy = ["tauri/test"]
|
|
tracing = []
|
|
|
|
[[bench]]
|
|
name = "draft_benchmark"
|
|
path = "benches/draft_benchmark.rs"
|
|
harness = false
|
|
|
|
[profile.release]
|
|
panic = "abort"
|
|
codegen-units = 1
|
|
lto = "thin"
|
|
opt-level = 3
|
|
debug = false
|
|
strip = true
|
|
overflow-checks = false
|
|
rpath = false
|
|
|
|
[profile.dev]
|
|
incremental = true
|
|
codegen-units = 64
|
|
opt-level = 0
|
|
debug = true
|
|
strip = "none"
|
|
overflow-checks = true
|
|
lto = false
|
|
rpath = false
|
|
|
|
[profile.fast-release]
|
|
inherits = "release"
|
|
codegen-units = 64
|
|
incremental = true
|
|
lto = false
|
|
opt-level = 0
|
|
debug = true
|
|
strip = false
|
|
|
|
[lib]
|
|
name = "app_lib"
|
|
crate-type = ["staticlib", "cdylib", "rlib"]
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.7.0", features = ["async_tokio"] }
|
|
|
|
[lints.clippy]
|
|
# Core categories - most important for code safety and correctness
|
|
correctness = { level = "deny", priority = -1 }
|
|
suspicious = { level = "deny", priority = -1 }
|
|
|
|
# Critical safety lints - warn for now due to extensive existing usage
|
|
unwrap_used = "warn"
|
|
expect_used = "warn"
|
|
panic = "deny"
|
|
unimplemented = "deny"
|
|
|
|
# Development quality lints
|
|
todo = "warn"
|
|
dbg_macro = "warn"
|
|
#print_stdout = "warn"
|
|
#print_stderr = "warn"
|
|
|
|
# Performance lints for proxy application
|
|
clone_on_ref_ptr = "warn"
|
|
rc_clone_in_vec_init = "warn"
|
|
large_stack_arrays = "warn"
|
|
large_const_arrays = "warn"
|
|
|
|
# Security lints
|
|
#integer_division = "warn"
|
|
#lossy_float_literal = "warn"
|
|
#default_numeric_fallback = "warn"
|
|
|
|
# Mutex and async lints - strict control
|
|
async_yields_async = "deny" # Prevents missing await in async blocks
|
|
mutex_atomic = "deny" # Use atomics instead of Mutex<bool/int>
|
|
mutex_integer = "deny" # Use AtomicInt instead of Mutex<int>
|
|
rc_mutex = "deny" # Single-threaded Rc with Mutex is wrong
|
|
unused_async = "deny" # Too many false positives in Tauri/framework code
|
|
await_holding_lock = "deny"
|
|
large_futures = "deny"
|
|
future_not_send = "deny"
|
|
|
|
# Common style improvements
|
|
redundant_else = "deny" # Too many in existing code
|
|
needless_continue = "deny" # Too many in existing code
|
|
needless_raw_string_hashes = "deny" # Too many in existing code
|
|
|
|
# Disable noisy categories for existing codebase but keep them available
|
|
#style = { level = "allow", priority = -1 }
|
|
#complexity = { level = "allow", priority = -1 }
|
|
#perf = { level = "allow", priority = -1 }
|
|
#pedantic = { level = "allow", priority = -1 }
|
|
#nursery = { level = "allow", priority = -1 }
|
|
#restriction = { level = "allow", priority = -1 }
|
|
|
|
or_fun_call = "deny" |