pub trait Metadata {
// Required methods
fn uid(&self) -> u32;
fn gid(&self) -> u32;
fn atime(&self) -> i64;
fn atime_nsec(&self) -> i64;
fn mtime(&self) -> i64;
fn mtime_nsec(&self) -> i64;
fn permissions(&self) -> Permissions;
// Provided methods
fn ctime(&self) -> i64 { ... }
fn ctime_nsec(&self) -> i64 { ... }
fn size(&self) -> u64 { ... }
}