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§
Sourcefn to_string_lossy(&self) -> Cow<'_, str>
fn to_string_lossy(&self) -> Cow<'_, str>
Returns a potentially-lossy rendering of this string as a
Cow<'_, str>.
Sourcefn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>
fn as_cow_c_str(&self) -> Result<Cow<'_, CStr>>
Returns a view of this string as a maybe-owned CStr.
Implementations on Foreign Types§
Source§impl Arg for &str
impl Arg for &str
Source§impl Arg for &String
Available on crate feature alloc only.
impl Arg for &String
Available on crate feature
alloc only.Source§impl Arg for &Vec<u8>
Available on crate feature alloc only.
impl Arg for &Vec<u8>
Available on crate feature
alloc only.Source§impl Arg for &OsStr
Available on crate feature std only.
impl Arg for &OsStr
Available on crate feature
std only.Source§impl Arg for &OsString
Available on crate feature std only.
impl Arg for &OsString
Available on crate feature
std only.Source§impl Arg for &Path
Available on crate feature std only.
impl Arg for &Path
Available on crate feature
std only.Source§impl Arg for &PathBuf
Available on crate feature std only.
impl Arg for &PathBuf
Available on crate feature
std only.Source§impl Arg for &[u8]
impl Arg for &[u8]
Source§impl Arg for String
Available on crate feature alloc only.
impl Arg for String
Available on crate feature
alloc only.Source§impl Arg for Vec<u8>
Available on crate feature alloc only.
impl Arg for Vec<u8>
Available on crate feature
alloc only.Source§impl Arg for OsString
Available on crate feature std only.
impl Arg for OsString
Available on crate feature
std only.Source§impl Arg for PathBuf
Available on crate feature std only.
impl Arg for PathBuf
Available on crate feature
std only.Source§impl<'a> Arg for Cow<'a, str>
Available on crate feature alloc only.
impl<'a> Arg for Cow<'a, str>
Available on crate feature
alloc only.Source§impl<'a> Arg for Cow<'a, CStr>
Available on crate feature alloc only.
impl<'a> Arg for Cow<'a, CStr>
Available on crate feature
alloc only.Source§impl<'a> Arg for Cow<'a, OsStr>
Available on crate feature std only.
impl<'a> Arg for Cow<'a, OsStr>
Available on crate feature
std only.Source§impl<'a> Arg for Component<'a>
Available on crate feature std only.
impl<'a> Arg for Component<'a>
Available on crate feature
std only.Source§impl<'a> Arg for Components<'a>
Available on crate feature std only.
impl<'a> Arg for Components<'a>
Available on crate feature
std only.Source§impl<'a> Arg for Iter<'a>
Available on crate feature std only.
impl<'a> Arg for Iter<'a>
Available on crate feature
std only.