1 #![stable(feature = "metadata_ext", since = "1.1.0")]
3 use crate::fs::Metadata;
4 use crate::sys_common::AsInner;
6 /// OS-specific extensions to [`fs::Metadata`].
8 /// [`fs::Metadata`]: crate::fs::Metadata
9 #[stable(feature = "metadata_ext", since = "1.1.0")]
10 pub trait MetadataExt {
11 #[stable(feature = "metadata_ext2", since = "1.8.0")]
12 fn st_dev(&self) -> u64;
13 #[stable(feature = "metadata_ext2", since = "1.8.0")]
14 fn st_ino(&self) -> u64;
15 #[stable(feature = "metadata_ext2", since = "1.8.0")]
16 fn st_mode(&self) -> u32;
17 #[stable(feature = "metadata_ext2", since = "1.8.0")]
18 fn st_nlink(&self) -> u64;
19 #[stable(feature = "metadata_ext2", since = "1.8.0")]
20 fn st_uid(&self) -> u32;
21 #[stable(feature = "metadata_ext2", since = "1.8.0")]
22 fn st_gid(&self) -> u32;
23 #[stable(feature = "metadata_ext2", since = "1.8.0")]
24 fn st_rdev(&self) -> u64;
25 #[stable(feature = "metadata_ext2", since = "1.8.0")]
26 fn st_size(&self) -> u64;
27 #[stable(feature = "metadata_ext2", since = "1.8.0")]
28 fn st_atime(&self) -> i64;
29 #[stable(feature = "metadata_ext2", since = "1.8.0")]
30 fn st_atime_nsec(&self) -> i64;
31 #[stable(feature = "metadata_ext2", since = "1.8.0")]
32 fn st_mtime(&self) -> i64;
33 #[stable(feature = "metadata_ext2", since = "1.8.0")]
34 fn st_mtime_nsec(&self) -> i64;
35 #[stable(feature = "metadata_ext2", since = "1.8.0")]
36 fn st_ctime(&self) -> i64;
37 #[stable(feature = "metadata_ext2", since = "1.8.0")]
38 fn st_ctime_nsec(&self) -> i64;
39 #[stable(feature = "metadata_ext2", since = "1.8.0")]
40 fn st_blksize(&self) -> u64;
41 #[stable(feature = "metadata_ext2", since = "1.8.0")]
42 fn st_blocks(&self) -> u64;
45 #[stable(feature = "metadata_ext", since = "1.1.0")]
46 impl MetadataExt for Metadata {
47 fn st_dev(&self) -> u64 {
48 self.as_inner().as_inner().st_dev as u64
50 fn st_ino(&self) -> u64 {
51 self.as_inner().as_inner().st_ino as u64
53 fn st_mode(&self) -> u32 {
54 self.as_inner().as_inner().st_mode as u32
56 fn st_nlink(&self) -> u64 {
57 self.as_inner().as_inner().st_nlink as u64
59 fn st_uid(&self) -> u32 {
60 self.as_inner().as_inner().st_uid as u32
62 fn st_gid(&self) -> u32 {
63 self.as_inner().as_inner().st_gid as u32
65 fn st_rdev(&self) -> u64 {
66 self.as_inner().as_inner().st_rdev as u64
68 fn st_size(&self) -> u64 {
69 self.as_inner().as_inner().st_size as u64
71 fn st_atime(&self) -> i64 {
72 self.as_inner().as_inner().st_atim.tv_sec
74 fn st_atime_nsec(&self) -> i64 {
75 self.as_inner().as_inner().st_atim.tv_nsec as i64
77 fn st_mtime(&self) -> i64 {
78 self.as_inner().as_inner().st_mtim.tv_sec
80 fn st_mtime_nsec(&self) -> i64 {
81 self.as_inner().as_inner().st_mtim.tv_nsec as i64
83 fn st_ctime(&self) -> i64 {
84 self.as_inner().as_inner().st_ctim.tv_sec
86 fn st_ctime_nsec(&self) -> i64 {
87 self.as_inner().as_inner().st_ctim.tv_nsec as i64
89 fn st_blksize(&self) -> u64 {
90 self.as_inner().as_inner().st_blksize as u64
92 fn st_blocks(&self) -> u64 {
93 self.as_inner().as_inner().st_blocks as u64