standard_lib/fs/
metadata.rs1use libc::stat;
2
3use super::FileType;
4
5#[derive(#[automatically_derived]
impl ::core::fmt::Debug for Metadata {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
let names: &'static _ =
&["size", "file_type", "mode", "uid", "gid", "parent_device_id",
"self_device_id", "time_accessed", "time_modified",
"time_changed", "links", "block_size", "blocks",
"inode_num"];
let values: &[&dyn ::core::fmt::Debug] =
&[&self.size, &self.file_type, &self.mode, &self.uid, &self.gid,
&self.parent_device_id, &self.self_device_id,
&self.time_accessed, &self.time_modified,
&self.time_changed, &self.links, &self.block_size,
&self.blocks, &&self.inode_num];
::core::fmt::Formatter::debug_struct_fields_finish(f, "Metadata",
names, values)
}
}Debug, #[automatically_derived]
impl ::core::clone::Clone for Metadata {
#[inline]
fn clone(&self) -> Metadata {
Metadata {
size: ::core::clone::Clone::clone(&self.size),
file_type: ::core::clone::Clone::clone(&self.file_type),
mode: ::core::clone::Clone::clone(&self.mode),
uid: ::core::clone::Clone::clone(&self.uid),
gid: ::core::clone::Clone::clone(&self.gid),
parent_device_id: ::core::clone::Clone::clone(&self.parent_device_id),
self_device_id: ::core::clone::Clone::clone(&self.self_device_id),
time_accessed: ::core::clone::Clone::clone(&self.time_accessed),
time_modified: ::core::clone::Clone::clone(&self.time_modified),
time_changed: ::core::clone::Clone::clone(&self.time_changed),
links: ::core::clone::Clone::clone(&self.links),
block_size: ::core::clone::Clone::clone(&self.block_size),
blocks: ::core::clone::Clone::clone(&self.blocks),
inode_num: ::core::clone::Clone::clone(&self.inode_num),
}
}
}Clone)]
6pub struct Metadata {
7 pub size: i64, pub file_type: FileType, pub mode: u16, pub uid: u32, pub gid: u32, pub parent_device_id: u64, pub self_device_id: u64, pub time_accessed: (i64, i64), pub time_modified: (i64, i64), pub time_changed: (i64, i64), pub links: u64, pub block_size: i64, pub blocks: i64, pub inode_num: u64, }
25
26impl Metadata {
27 #[allow(clippy::unnecessary_cast)]
28 pub(crate) const fn from_stat(raw: stat) -> Metadata {
29 Metadata {
30 size: raw.st_size,
31 file_type: FileType::from_stat_mode(raw.st_mode),
32 mode: raw.st_mode as u16,
33 uid: raw.st_uid,
34 gid: raw.st_gid,
35 parent_device_id: raw.st_dev,
36 self_device_id: raw.st_rdev,
37 time_accessed: (raw.st_atime as i64, raw.st_atime_nsec),
38 time_modified: (raw.st_mtime as i64, raw.st_mtime_nsec),
39 time_changed: (raw.st_ctime as i64, raw.st_ctime_nsec),
40 links: raw.st_nlink as u64,
41 block_size: raw.st_blksize as i64,
42 blocks: raw.st_blocks as i64,
43 inode_num: raw.st_ino as u64,
44 }
45 }
46}