landlock

Struct PathFd

source
pub struct PathFd { /* private fields */ }
Expand description

Simple helper to open a file or a directory with the O_PATH flag.

This is the recommended way to identify a path and manage the lifetime of the underlying opened file descriptor. Indeed, using other AsFd implementations such as File brings more complexity and may lead to unexpected errors (e.g., denied access).

§Example

use landlock::{AccessFs, PathBeneath, PathFd, PathFdError};

fn allowed_root_dir(access: AccessFs) -> Result<PathBeneath<PathFd>, PathFdError> {
    let fd = PathFd::new("/")?;
    Ok(PathBeneath::new(fd, access))
}

Implementations§

source§

impl PathFd

source

pub fn new<T>(path: T) -> Result<Self, PathFdError>
where T: AsRef<Path>,

Trait Implementations§

source§

impl AsFd for PathFd

source§

fn as_fd(&self) -> BorrowedFd<'_>

Borrows the file descriptor. Read more

Auto Trait Implementations§

§

impl Freeze for PathFd

§

impl RefUnwindSafe for PathFd

§

impl Send for PathFd

§

impl Sync for PathFd

§

impl Unpin for PathFd

§

impl UnwindSafe for PathFd

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> 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, 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.