lfs_core/
inodes.rs

1
2/// inode information
3///
4/// This structure isn't built if data aren't consistent
5#[derive(Debug, Clone)]
6pub struct Inodes {
7    /// number of inodes, always > 0
8    pub files: u64,
9    /// number of free inodes
10    pub ffree: u64,
11    /// number of free inodes for underpriviledged users
12    pub favail: u64,
13}
14
15impl Inodes {
16    /// Create the structure if the given values are consistent,
17    /// return None if they aren't.
18    pub fn new(files: u64, ffree: u64, favail: u64) -> Option<Self> {
19        if files > 0 && ffree <= files && favail <= files {
20            Some(Self { files, ffree, favail })
21        } else {
22            None
23        }
24    }
25    /// number of non available inodes, always > 0
26    pub fn used(&self) -> u64 {
27        self.files - self.favail
28    }
29    /// share of non available inodes, always in [0, 1], never NaN
30    pub fn use_share(&self) -> f64 {
31        self.used() as f64 / self.files as f64
32    }
33}