#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub struct FileStats {
pub total_size: u64,
pub number_of_files: u64,
pub ctime_first: i64,
pub ctime_last: i64,
pub mtime_first: i64,
pub mtime_last: i64,
}
use serde::{Serialize, Serializer};
impl Serialize for FileStats {
fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where
S: Serializer,
{
use serde::ser::SerializeStruct;
let mut state = serializer.serialize_struct("FileStats", 7)?;
state.serialize_field("_type", "FileStats")?;
state.serialize_field("total_size", &self.total_size)?;
state.serialize_field("number_of_files", &self.number_of_files)?;
state.serialize_field("ctime_first", &self.ctime_first)?;
state.serialize_field("ctime_last", &self.ctime_last)?;
state.serialize_field("mtime_first", &self.mtime_first)?;
state.serialize_field("mtime_last", &self.mtime_last)?;
state.end()
}
}
use mlua::{IntoLua, Lua};
impl IntoLua for FileStats {
fn into_lua(self, lua: &Lua) -> mlua::Result<mlua::Value> {
let table = lua.create_table()?;
table.set("_type", "FileStats")?;
table.set("total_size", self.total_size)?;
table.set("number_of_files", self.number_of_files)?;
table.set("ctime_first", self.ctime_first)?;
table.set("ctime_last", self.ctime_last)?;
table.set("mtime_first", self.mtime_first)?;
table.set("mtime_last", self.mtime_last)?;
Ok(mlua::Value::Table(table))
}
}