refactor: reuse ordered-float as it's already in the dependency tree (#2891)

This commit is contained in:
三咲雅 misaki masa 2025-06-18 13:29:39 +08:00 committed by GitHub
parent 002b742cd9
commit a0ce7c0ae7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 48 additions and 70 deletions

39
Cargo.lock generated
View file

@ -174,9 +174,9 @@ dependencies = [
[[package]]
name = "autocfg"
version = "1.4.0"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
[[package]]
name = "av1-grain"
@ -1308,9 +1308,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
[[package]]
name = "libc"
version = "0.2.173"
version = "0.2.174"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d8cfeafaffdbc32176b64fb251369d52ea9f0a8fbc6f8759edffef7b525d64bb"
checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776"
[[package]]
name = "libfuzzer-sys"
@ -1755,6 +1755,17 @@ dependencies = [
"num-traits",
]
[[package]]
name = "ordered-float"
version = "5.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2c1f9f56e534ac6a9b8a4600bdf0f530fb393b5f393e7b4d03489c3cf0c3f01"
dependencies = [
"num-traits",
"rand 0.8.5",
"serde",
]
[[package]]
name = "overload"
version = "0.1.1"
@ -1982,9 +1993,9 @@ dependencies = [
[[package]]
name = "r-efi"
version = "5.2.0"
version = "5.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5"
checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
[[package]]
name = "radium"
@ -2001,6 +2012,7 @@ dependencies = [
"libc",
"rand_chacha 0.3.1",
"rand_core 0.6.4",
"serde",
]
[[package]]
@ -2040,6 +2052,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom 0.2.16",
"serde",
]
[[package]]
@ -2770,9 +2783,9 @@ dependencies = [
[[package]]
name = "tracing-attributes"
version = "0.1.29"
version = "0.1.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1b1ffbcf9c6f6b99d386e7444eb608ba646ae452a36b39737deb9663b610f662"
checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903"
dependencies = [
"proc-macro2",
"quote",
@ -3567,6 +3580,7 @@ version = "25.6.11"
dependencies = [
"anyhow",
"mlua",
"ordered-float 5.0.0",
"parking_lot",
"serde",
"serde_json",
@ -3756,6 +3770,7 @@ dependencies = [
"futures",
"libc",
"memchr",
"ordered-float 5.0.0",
"parking_lot",
"percent-encoding",
"ratatui",
@ -3798,18 +3813,18 @@ dependencies = [
[[package]]
name = "zerocopy"
version = "0.8.25"
version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1702d9583232ddb9174e01bb7c15a2ab8fb1bc6f227aa1233858c351a3ba0cb"
checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.25"
version = "0.8.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28a6e20d751156648aa063f3800b706ee209a32c0b4d9f24be3d980b01be55ef"
checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181"
dependencies = [
"proc-macro2",
"quote",

View file

@ -32,10 +32,11 @@ foldhash = "0.1.5"
futures = "0.3.31"
globset = "0.4.16"
indexmap = { version = "2.9.0", features = [ "serde" ] }
libc = "0.2.173"
libc = "0.2.174"
lru = "0.14.0"
mlua = { version = "0.10.5", features = [ "anyhow", "async", "error-send", "lua54", "macros", "serialize" ] }
objc = "0.2.7"
ordered-float = { version = "5.0.0", features = [ "serde" ] }
parking_lot = "0.12.4"
paste = "1.0.15"
ratatui = { version = "0.29.0", features = [ "unstable-rendered-line-info" ] }

View file

@ -20,15 +20,16 @@ yazi-macro = { path = "../yazi-macro", version = "25.6.11" }
yazi-shared = { path = "../yazi-shared", version = "25.6.11" }
# External dependencies
anyhow = { workspace = true }
mlua = { workspace = true }
parking_lot = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
tokio-util = { workspace = true }
tracing = { workspace = true }
anyhow = { workspace = true }
mlua = { workspace = true }
ordered-float = { workspace = true }
parking_lot = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true }
tokio-stream = { workspace = true }
tokio-util = { workspace = true }
tracing = { workspace = true }
[build-dependencies]
vergen-gitcl = { version = "1.0.8", features = [ "build" ] }

View file

@ -1,7 +1,8 @@
use std::{any::TypeId, borrow::Cow, collections::HashMap};
use mlua::{ExternalError, IntoLua, Lua, MultiValue, Table, Value};
use yazi_shared::{OrderedFloat, event::{Data, DataKey}, replace_cow};
use ordered_float::OrderedFloat;
use yazi_shared::{event::{Data, DataKey}, replace_cow};
pub struct Sendable;
@ -193,7 +194,7 @@ impl Sendable {
Value::Boolean(b) => DataKey::Boolean(b),
Value::LightUserData(_) => Err("light userdata is not supported".into_lua_err())?,
Value::Integer(i) => DataKey::Integer(i),
Value::Number(n) => DataKey::Number(OrderedFloat::new(n)),
Value::Number(n) => DataKey::Number(OrderedFloat(n)),
Value::String(s) => {
if let Ok(s) = s.to_str() {
DataKey::String(s.to_owned().into())
@ -235,7 +236,7 @@ impl Sendable {
DataKey::Nil => Value::Nil,
DataKey::Boolean(b) => Value::Boolean(*b),
DataKey::Integer(i) => Value::Integer(*i),
DataKey::Number(n) => Value::Number(n.get()),
DataKey::Number(n) => Value::Number(n.0),
DataKey::String(s) => Value::String(lua.create_string(s.as_ref())?),
DataKey::Id(i) => yazi_binding::Id(*i).into_lua(lua)?,
DataKey::Url(u) => yazi_binding::Url::new(u.clone()).into_lua(lua)?,

View file

@ -18,6 +18,7 @@ crossterm = { workspace = true }
foldhash = { workspace = true }
futures = { workspace = true }
memchr = "2.7.5"
ordered-float = { workspace = true }
parking_lot = { workspace = true }
percent-encoding = "2.3.1"
ratatui = { workspace = true }

View file

@ -1,8 +1,9 @@
use std::{any::Any, borrow::Cow, collections::HashMap};
use ordered_float::OrderedFloat;
use serde::{Deserialize, Serialize, de};
use crate::{Id, OrderedFloat, url::{Url, UrnBuf}};
use crate::{Id, url::{Url, UrnBuf}};
// --- Data
#[derive(Debug, Serialize, Deserialize)]
@ -134,7 +135,7 @@ pub enum DataKey {
Boolean(bool),
#[serde(deserialize_with = "Self::deserialize_integer")]
Integer(i64),
Number(OrderedFloat),
Number(OrderedFloat<f64>),
String(Cow<'static, str>),
Id(Id),
#[serde(skip_deserializing)]

View file

@ -2,7 +2,7 @@
yazi_macro::mod_pub!(errors event shell translit url);
yazi_macro::mod_flat!(bytes chars condition debounce either env id layer natsort number os osstr rand ro_cell sync_cell terminal throttle time utf8);
yazi_macro::mod_flat!(bytes chars condition debounce either env id layer natsort os osstr rand ro_cell sync_cell terminal throttle time utf8);
pub fn init() {
LOG_LEVEL.replace(<_>::from(std::env::var("YAZI_LOG").unwrap_or_default()));

View file

@ -1,42 +0,0 @@
use std::hash::{Hash, Hasher};
use serde::{Deserialize, Deserializer, Serialize};
#[derive(Clone, Copy, Debug, Serialize)]
#[serde(transparent)]
pub struct OrderedFloat(f64);
impl OrderedFloat {
#[inline]
pub fn new(t: f64) -> Self {
debug_assert!(!t.is_nan());
Self(t)
}
#[inline]
pub const fn get(&self) -> f64 { self.0 }
}
impl Hash for OrderedFloat {
fn hash<H: Hasher>(&self, state: &mut H) { self.0.to_bits().hash(state) }
}
impl PartialEq for OrderedFloat {
fn eq(&self, other: &Self) -> bool { self.0.to_bits() == other.0.to_bits() }
}
impl Eq for OrderedFloat {}
impl<'de> Deserialize<'de> for OrderedFloat {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let f = f64::deserialize(deserializer)?;
if f.is_nan() {
Err(serde::de::Error::custom("NaN is not a valid OrderedFloat"))
} else {
Ok(Self::new(f))
}
}
}