Trait rustix::path::Arg

source ·
pub trait Arg {
    // Required methods
    fn as_str(&self) -> Result<&str>;
    fn to_string_lossy(&self) -> Cow<'_, str>;
    fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>;
    fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>
       where Self: 'b;
    fn into_with_c_str<T, F>(self, f: F) -> Result<T>
       where Self: Sized,
             F: FnOnce(&CStr) -> Result<T>;
}
Expand description

A trait for passing path arguments.

This is similar to AsRef<Path>, but is implemented for more kinds of strings and can convert into more kinds of strings.

Examples

use rustix::ffi::CStr;
use rustix::io;
use rustix::path::Arg;

pub fn touch<P: Arg>(path: P) -> io::Result<()> {
    let path = path.into_c_str()?;
    _touch(&path)
}

fn _touch(path: &CStr) -> io::Result<()> {
    // implementation goes here
    Ok(())
}

Users can then call touch("foo"), touch(cstr!("foo")), touch(Path::new("foo")), or many other things.

Required Methods§

source

fn as_str(&self) -> Result<&str>

Returns a view of this string as a string slice.

source

fn to_string_lossy(&self) -> Cow<'_, str>

Returns a potentially-lossy rendering of this string as a Cow<'_, str>.

source

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

Returns a view of this string as a maybe-owned CStr.

source

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

Consumes self and returns a view of this string as a maybe-owned CStr.

source

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

Runs a closure with self passed in as a &CStr.

Implementations on Foreign Types§

source§

impl<'a> Arg for Iter<'a>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &str

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &Vec<u8>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl<'a> Arg for Components<'a>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl<'a> Arg for Component<'a>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for OsString

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &OsStr

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl<'a> Arg for Cow<'a, str>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for Vec<u8>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for PathBuf

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &OsString

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &PathBuf

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl<'a> Arg for Cow<'a, OsStr>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl<'a> Arg for Cow<'a, CStr>

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &[u8]

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &Path

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for &String

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

source§

impl Arg for String

source§

fn as_str(&self) -> Result<&str>

source§

fn to_string_lossy(&self) -> Cow<'_, str>

source§

fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>

source§

fn into_c_str<'b>(self) -> Result<Cow<'b, CStr>>where Self: 'b,

source§

fn into_with_c_str<T, F>(self, f: F) -> Result<T>where Self: Sized, F: FnOnce(&CStr) -> Result<T>,

Implementors§