use std::fs; pub enum Metadata { StdFs(fs::Metadata), #[cfg(target_os = "linux")] TokioEpollUring(Box), } #[cfg(target_os = "linux")] impl From> for Metadata { fn from(value: Box) -> Self { Metadata::TokioEpollUring(value) } } impl From for Metadata { fn from(value: std::fs::Metadata) -> Self { Metadata::StdFs(value) } } impl Metadata { pub fn len(&self) -> u64 { match self { Metadata::StdFs(metadata) => metadata.len(), #[cfg(target_os = "linux")] Metadata::TokioEpollUring(statx) => statx.stx_size, } } }