Struct Mode

Source
pub struct Mode { /* private fields */ }

Implementations§

Source§

impl Mode

Represents Permissions for a file.

§Formatting

String representations of Modes include the extra permission bits, which modify how the executable permissions are displayed if set. If you don’t want to include this functionality, call without_any_extra() before converting the Mode into a string.

Source

pub const fn new() -> Self

Build a mode with absolutely no permission

Source

pub const fn all() -> Self

Build a mode with all permissions given to everybody. This does not include ExtraPermission bits.

Source

pub fn try_from(path: &Path) -> Result<Self, Error>

Return the mode for the given path. On non unix platforms, return Mode::all()

Examples found in repository?
examples/ls/main.rs (line 17)
8fn list_files() -> io::Result<()> {
9    let root = env::current_dir()?;
10    println!("Current dir: {}", root.to_string_lossy());
11    let mut paths: Vec<PathBuf> = root.read_dir()?
12        .filter_map(|e| e.ok())
13        .map(|e| e.path())
14        .collect();
15    paths.sort_unstable();
16    for path in paths {
17        let mode = Mode::try_from(&path)?;
18        let name = path.file_name().unwrap().to_string_lossy();
19        println!("{}  {}", mode, name);
20    }
21    Ok(())
22}
Source

pub fn parse<T: AsRef<str>>(s: T) -> Result<Self, ParseError>

Try to parse a mode from a string.

Source

pub const fn is_exe(self) -> bool

Finds if the mode indicates an executable file

Source

pub const fn has(self, other: Self) -> bool

Indicates whether the passed class/permissions are all present in self

Source

pub const fn has_extra(self, other: ExtraPermission) -> bool

Indicates whether the passed extra permission is present in self

Source

pub const fn with_extra(self, perm: ExtraPermission) -> Self

Return a new mode, with the extra permission set (does nothing if the extra permission is already set for the mode)

Source

pub const fn without_extra(self, perm: ExtraPermission) -> Self

Return a new mode, without the extra permission set (does nothing if the extra permission is not set for the mode)

Source

pub const fn without_any_extra(self) -> Self

Return a new mode, without any extra permission bits set (does nothing if no extra permissions are set for the mode)

Source

pub const fn with_class_perm(self, class: Class, perm: Permission) -> Self

Return a new mode, with the permission added for the class (does nothing if the permission is already given to that class)

Source

pub const fn without_class_perm(self, class: Class, perm: Permission) -> Self

return a new mode, with the permission removed for the class (does nothing if the permission is already given to that class)

Source

pub const fn with(self, other: Mode) -> Self

add the class/permissions of the other mode

Source

pub const fn without(self, other: Mode) -> Self

remove the class/permissions of the other mode

Trait Implementations§

Source§

impl BitAnd for Mode

Source§

type Output = Mode

The resulting type after applying the & operator.
Source§

fn bitand(self, other: Self) -> Self

Performs the & operation. Read more
Source§

impl BitAndAssign for Mode

Source§

fn bitand_assign(&mut self, other: Self)

Performs the &= operation. Read more
Source§

impl BitOr for Mode

Source§

type Output = Mode

The resulting type after applying the | operator.
Source§

fn bitor(self, other: Self) -> Self

Performs the | operation. Read more
Source§

impl BitOrAssign for Mode

Source§

fn bitor_assign(&mut self, other: Self)

Performs the |= operation. Read more
Source§

impl Clone for Mode

Source§

fn clone(&self) -> Mode

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Mode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Mode

Source§

fn default() -> Mode

Returns the “default value” for a type. Read more
Source§

impl Display for Mode

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the Mode.

If you want to prevent the extra permission bits from being displayed, use Mode::without_any_extra() to remove them before calling format.

Source§

impl From<&Mode> for u32

Source§

fn from(mode: &Mode) -> Self

Converts to this type from the input type.
Source§

impl From<Mode> for u32

Source§

fn from(mode: Mode) -> Self

Converts to this type from the input type.
Source§

impl From<u32> for Mode

Source§

fn from(value: u32) -> Self

Converts to this type from the input type.
Source§

impl FromStr for Mode

Source§

type Err = ParseError

The associated error which can be returned from parsing.
Source§

fn from_str(s: &str) -> Result<Self, Self::Err>

Parses a string s to return a value of this type. Read more
Source§

impl Hash for Mode

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl Not for Mode

Source§

type Output = Mode

The resulting type after applying the ! operator.
Source§

fn not(self) -> Self::Output

Performs the unary ! operation. Read more
Source§

impl PartialEq for Mode

Source§

fn eq(&self, other: &Mode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Copy for Mode

Source§

impl Eq for Mode

Source§

impl StructuralPartialEq for Mode

Auto Trait Implementations§

§

impl Freeze for Mode

§

impl RefUnwindSafe for Mode

§

impl Send for Mode

§

impl Sync for Mode

§

impl Unpin for Mode

§

impl UnwindSafe for Mode

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.