parallel_disk_usage/
inode.rs

1use derive_more::{Display, From, Into, LowerHex, Octal, UpperHex};
2
3#[cfg(feature = "json")]
4use serde::{Deserialize, Serialize};
5
6/// The inode number of a file or directory.
7#[derive(
8    Debug, Display, LowerHex, UpperHex, Octal, Clone, Copy, PartialEq, Eq, Hash, From, Into,
9)]
10#[cfg_attr(feature = "json", derive(Deserialize, Serialize))]
11pub struct InodeNumber(u64);
12
13/// POSIX-exclusive functions.
14#[cfg(unix)]
15impl InodeNumber {
16    /// Get inode number of a [`std::fs::Metadata`].
17    #[inline]
18    pub fn get(stats: &std::fs::Metadata) -> Self {
19        use pipe_trait::Pipe;
20        use std::os::unix::fs::MetadataExt;
21        stats.ino().pipe(InodeNumber)
22    }
23}