From c7f7328f00944c03b1e458678ae944240120d2ce Mon Sep 17 00:00:00 2001 From: xiaoxigua-1 Date: Thu, 1 May 2025 15:58:01 +0800 Subject: [PATCH] refactor(json): clean up and simplify imports for clarity --- yazi-plugin/src/utils/json.rs | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/yazi-plugin/src/utils/json.rs b/yazi-plugin/src/utils/json.rs index 58aee692..b507166f 100644 --- a/yazi-plugin/src/utils/json.rs +++ b/yazi-plugin/src/utils/json.rs @@ -1,8 +1,11 @@ use mlua::{ - Function, IntoLuaMulti, Lua, LuaSerdeExt, MetaMethod, UserData, UserDataMethods, Value, + Error as MluaError, Function, IntoLuaMulti, Lua, LuaSerdeExt, MetaMethod, UserData, + UserDataFields, UserDataMethods, Value, }; use serde::Serialize; +use serde::Serializer; +use serde::ser::Error as SerdeError; use serde_json::value::Value as JsonValue; use std::cell::{Ref, RefCell, RefMut}; @@ -28,7 +31,7 @@ struct OrderedTable { impl Serialize for OrderedTable { fn serialize(&self, serializer: S) -> Result where - S: serde::Serializer, + S: Serializer, { use OrderedTableIndex::*; let current = self.data.borrow(); @@ -37,14 +40,13 @@ impl Serialize for OrderedTable { for index in &self.path { match index { Key(key) => { - value = value - .get(key) - .ok_or_else(|| serde::ser::Error::custom(format!("Key '{}' not found", key)))?; + value = + value.get(key).ok_or_else(|| SerdeError::custom(format!("Key '{}' not found", key)))?; } Index(i) => { value = value .get(*i) - .ok_or_else(|| serde::ser::Error::custom(format!("Index {} out of bounds", i)))?; + .ok_or_else(|| SerdeError::custom(format!("Index {} out of bounds", i)))?; } } } @@ -106,7 +108,7 @@ impl OrderedTable { } impl UserData for OrderedTable { - fn add_fields>(fields: &mut F) { + fn add_fields>(fields: &mut F) { fields.add_meta_field("__ordered", true); } @@ -137,7 +139,7 @@ impl UserData for OrderedTable { methods.add_meta_method_mut(MetaMethod::Pairs, |lua, this: &mut OrderedTable, ()| { let curr = - this.get_current_mut().ok_or_else(|| mlua::Error::RuntimeError("invalid path".into()))?; + this.get_current_mut().ok_or_else(|| MluaError::RuntimeError("invalid path".into()))?; let keys = match &*curr { JsonValue::Object(obj) => { @@ -188,28 +190,28 @@ impl UserData for OrderedTable { methods.add_meta_method_mut( MetaMethod::NewIndex, |_, this: &mut OrderedTable, (key, value): (Value, Value)| { - let value = serde_json::to_value(value).map_err(mlua::Error::external)?; + let value = serde_json::to_value(value).map_err(MluaError::external)?; let mut curr = - this.get_current_mut().ok_or_else(|| mlua::Error::RuntimeError("invalid path".into()))?; + this.get_current_mut().ok_or_else(|| MluaError::RuntimeError("invalid path".into()))?; match &mut *curr { JsonValue::Object(obj) => { let k = key .as_str() - .ok_or_else(|| mlua::Error::RuntimeError("object key must be string".into()))?; + .ok_or_else(|| MluaError::RuntimeError("object key must be string".into()))?; obj.insert(k.to_string(), value); } JsonValue::Array(arr) => { let i = key .as_integer() - .ok_or_else(|| mlua::Error::RuntimeError("array index must be integer".into()))?; + .ok_or_else(|| MluaError::RuntimeError("array index must be integer".into()))?; let idx = (i - 1) as usize; if idx < arr.len() { arr[idx] = value; } } _ => { - return Err(mlua::Error::RuntimeError("not an object or array".into())); + return Err(MluaError::RuntimeError("not an object or array".into())); } } @@ -226,7 +228,7 @@ impl Utils { Value::UserData(ud) => { let table = ud .borrow::() - .map_err(|_| mlua::Error::RuntimeError("Unknown userdata type".into()))?; + .map_err(|_| MluaError::RuntimeError("Unknown userdata type".into()))?; serde_json::to_string(&*table).map_err(Error::Serde) } _ => serde_json::to_string(&value).map_err(Error::Serde),