Line data Source code
1 : use std::fs;
2 :
3 : pub enum Metadata {
4 : StdFs(fs::Metadata),
5 : #[cfg(target_os = "linux")]
6 : TokioEpollUring(Box<tokio_epoll_uring::ops::statx::statx>),
7 : }
8 :
9 : #[cfg(target_os = "linux")]
10 : impl From<Box<tokio_epoll_uring::ops::statx::statx>> for Metadata {
11 865 : fn from(value: Box<tokio_epoll_uring::ops::statx::statx>) -> Self {
12 865 : Metadata::TokioEpollUring(value)
13 865 : }
14 : }
15 :
16 : impl From<std::fs::Metadata> for Metadata {
17 865 : fn from(value: std::fs::Metadata) -> Self {
18 865 : Metadata::StdFs(value)
19 865 : }
20 : }
21 :
22 : impl Metadata {
23 3144 : pub fn len(&self) -> u64 {
24 3144 : match self {
25 1572 : Metadata::StdFs(metadata) => metadata.len(),
26 : #[cfg(target_os = "linux")]
27 1572 : Metadata::TokioEpollUring(statx) => statx.stx_size,
28 : }
29 3144 : }
30 : }
|