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
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for &OsStr
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl Arg for &OsString
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for &OsString
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl Arg for &Path
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for &Path
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl Arg for &PathBuf
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for &PathBuf
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) 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
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for Vec<u8>
Available on crate feature
alloc
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl Arg for OsString
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for OsString
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl Arg for PathBuf
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl Arg for PathBuf
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) 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
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl<'a> Arg for Cow<'a, OsStr>
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl<'a> Arg for Component<'a>
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl<'a> Arg for Component<'a>
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl<'a> Arg for Components<'a>
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl<'a> Arg for Components<'a>
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.Source§impl<'a> Arg for Iter<'a>
Available on crate feature std
and (non-WASI or non-target_env=p2
or wasip2
) only.
impl<'a> Arg for Iter<'a>
Available on crate feature
std
and (non-WASI or non-target_env=p2
or wasip2
) only.