Skip to main content

MetadataExt

Trait MetadataExt 

1.1.0 · Source
pub trait MetadataExt {
Show 16 methods // Required methods fn dev(&self) -> u64; fn ino(&self) -> u64; fn mode(&self) -> u32; fn nlink(&self) -> u64; fn uid(&self) -> u32; fn gid(&self) -> u32; fn rdev(&self) -> u64; fn size(&self) -> u64; fn atime(&self) -> i64; fn atime_nsec(&self) -> i64; fn mtime(&self) -> i64; fn mtime_nsec(&self) -> i64; fn ctime(&self) -> i64; fn ctime_nsec(&self) -> i64; fn blksize(&self) -> u64; fn blocks(&self) -> u64;
}
Available on Unix only.
Expand description

Unix-specific extensions to fs::Metadata.

Required Methods§

1.1.0 · Source

fn dev(&self) -> u64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the ID of the device containing the file.

§Examples
use std::io;
use std::fs;
use std::os::unix::fs::MetadataExt;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let dev_id = meta.dev();
    Ok(())
}
1.1.0 · Source

fn ino(&self) -> u64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the inode number.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let inode = meta.ino();
    Ok(())
}
1.1.0 · Source

fn mode(&self) -> u32

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the rights applied to this file.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let mode = meta.mode();
    let user_has_write_access      = mode & 0o200;
    let user_has_read_write_access = mode & 0o600;
    let group_has_read_access      = mode & 0o040;
    let others_have_exec_access    = mode & 0o001;
    Ok(())
}
This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the number of hard links pointing to this file.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let nb_hard_links = meta.nlink();
    Ok(())
}
1.1.0 · Source

fn uid(&self) -> u32

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the user ID of the owner of this file.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let user_id = meta.uid();
    Ok(())
}
1.1.0 · Source

fn gid(&self) -> u32

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the group ID of the owner of this file.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let group_id = meta.gid();
    Ok(())
}
1.1.0 · Source

fn rdev(&self) -> u64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the device ID of this file (if it is a special one).

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let device_id = meta.rdev();
    Ok(())
}
1.1.0 · Source

fn size(&self) -> u64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the total size of this file in bytes.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let file_size = meta.size();
    Ok(())
}
1.1.0 · Source

fn atime(&self) -> i64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the last access time of the file, in seconds since Unix Epoch.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let last_access_time = meta.atime();
    Ok(())
}
1.1.0 · Source

fn atime_nsec(&self) -> i64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the last access time of the file, in nanoseconds since atime.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let nano_last_access_time = meta.atime_nsec();
    Ok(())
}
1.1.0 · Source

fn mtime(&self) -> i64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the last modification time of the file, in seconds since Unix Epoch.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let last_modification_time = meta.mtime();
    Ok(())
}
1.1.0 · Source

fn mtime_nsec(&self) -> i64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the last modification time of the file, in nanoseconds since mtime.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let nano_last_modification_time = meta.mtime_nsec();
    Ok(())
}
1.1.0 · Source

fn ctime(&self) -> i64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the last status change time of the file, in seconds since Unix Epoch.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let last_status_change_time = meta.ctime();
    Ok(())
}
1.1.0 · Source

fn ctime_nsec(&self) -> i64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the last status change time of the file, in nanoseconds since ctime.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let nano_last_status_change_time = meta.ctime_nsec();
    Ok(())
}
1.1.0 · Source

fn blksize(&self) -> u64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the block size for filesystem I/O.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let block_size = meta.blksize();
    Ok(())
}
1.1.0 · Source

fn blocks(&self) -> u64

This item is validated for IEC 61508 (SIL 2) and ISO 26262 (ASIL B).

Returns the number of blocks allocated to the file, in 512-byte units.

Please note that this may be smaller than st_size / 512 when the file has holes.

§Examples
use std::fs;
use std::os::unix::fs::MetadataExt;
use std::io;

fn main() -> io::Result<()> {
    let meta = fs::metadata("some_file")?;
    let blocks = meta.blocks();
    Ok(())
}

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§

1.1.0 · Source§

impl MetadataExt for Metadata