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 2571 : fn from(value: Box<tokio_epoll_uring::ops::statx::statx>) -> Self {
12 2571 : Metadata::TokioEpollUring(value)
13 2571 : }
14 : }
15 :
16 : impl From<std::fs::Metadata> for Metadata {
17 2571 : fn from(value: std::fs::Metadata) -> Self {
18 2571 : Metadata::StdFs(value)
19 2571 : }
20 : }
21 :
22 : impl Metadata {
23 9354 : pub fn len(&self) -> u64 {
24 9354 : match self {
25 4677 : Metadata::StdFs(metadata) => metadata.len(),
26 : #[cfg(target_os = "linux")]
27 4677 : Metadata::TokioEpollUring(statx) => statx.stx_size,
28 : }
29 9354 : }
30 : }
|