pub struct RawOsStr(/* private fields */);
Expand description
A container providing additional functionality for OsStr
.
For more information, see OsStrBytesExt
.
Implementations§
Source§impl RawOsStr
impl RawOsStr
Sourcepub fn new<S>(string: &S) -> &Self
pub fn new<S>(string: &S) -> &Self
Wraps a platform-native string, without copying or encoding conversion.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
println!("{:?}", RawOsStr::new(&os_string));
Sourcepub fn from_os_str(string: &OsStr) -> &Self
👎Deprecated since 7.0.0: use new
instead
pub fn from_os_str(string: &OsStr) -> &Self
new
insteadWraps a platform-native string, without copying or encoding conversion.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
println!("{:?}", RawOsStr::from_os_str(&os_string));
Sourcepub fn from_str(string: &str) -> &Self
👎Deprecated since 7.0.0: use new
instead
pub fn from_str(string: &str) -> &Self
new
insteadWraps a string, without copying or encoding conversion.
§Examples
use os_str_bytes::RawOsStr;
let string = "foobar";
let raw = RawOsStr::from_str(string);
assert_eq!(string, raw);
Sourcepub unsafe fn from_encoded_bytes_unchecked(string: &[u8]) -> &Self
pub unsafe fn from_encoded_bytes_unchecked(string: &[u8]) -> &Self
Equivalent to OsStr::from_encoded_bytes_unchecked
.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
let raw_bytes = raw.as_encoded_bytes();
assert_eq!(raw, unsafe {
RawOsStr::from_encoded_bytes_unchecked(raw_bytes)
});
Sourcepub fn assert_cow_from_raw_bytes(string: &[u8]) -> Cow<'_, Self>
Available on crate feature conversions
only.
pub fn assert_cow_from_raw_bytes(string: &[u8]) -> Cow<'_, Self>
conversions
only.Equivalent to OsStrBytes::assert_from_raw_bytes
.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
let raw_bytes = raw.to_raw_bytes();
assert_eq!(raw, &*RawOsStr::assert_cow_from_raw_bytes(&raw_bytes));
Sourcepub fn cow_from_raw_bytes(string: &[u8]) -> Result<Cow<'_, Self>, EncodingError>
Available on crate feature checked_conversions
only.
pub fn cow_from_raw_bytes(string: &[u8]) -> Result<Cow<'_, Self>, EncodingError>
checked_conversions
only.Equivalent to OsStrBytes::from_raw_bytes
.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
let raw_bytes = raw.to_raw_bytes();
assert_eq!(
Ok(raw),
RawOsStr::cow_from_raw_bytes(&raw_bytes).as_deref(),
);
Sourcepub unsafe fn cow_from_raw_bytes_unchecked(string: &[u8]) -> Cow<'_, Self>
👎Deprecated since 6.6.0: use assert_cow_from_raw_bytes
or
from_encoded_bytes_unchecked
insteadAvailable on crate feature conversions
only.
pub unsafe fn cow_from_raw_bytes_unchecked(string: &[u8]) -> Cow<'_, Self>
assert_cow_from_raw_bytes
or
from_encoded_bytes_unchecked
insteadconversions
only.Converts and wraps a byte string.
§Safety
The string must be valid for the unspecified encoding used by this crate.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
let raw_bytes = raw.to_raw_bytes();
assert_eq!(raw, unsafe {
&*RawOsStr::cow_from_raw_bytes_unchecked(&raw_bytes)
});
Sourcepub fn as_encoded_bytes(&self) -> &[u8] ⓘ
pub fn as_encoded_bytes(&self) -> &[u8] ⓘ
Equivalent to OsStr::as_encoded_bytes
.
The returned string will not use the unspecified encoding. It can
only be passed to methods accepting the internal encoding of OsStr
,
such as from_encoded_bytes_unchecked
.
§Examples
use os_str_bytes::RawOsStr;
let string = "foobar";
let raw = RawOsStr::new(string);
assert_eq!(string.as_bytes(), raw.as_encoded_bytes());
Sourcepub fn as_os_str(&self) -> &OsStr
pub fn as_os_str(&self) -> &OsStr
Converts this representation back to a platform-native string, without copying or encoding conversion.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
assert_eq!(os_string, raw.as_os_str());
Sourcepub fn contains<P>(&self, pat: P) -> boolwhere
P: Pattern,
pub fn contains<P>(&self, pat: P) -> boolwhere
P: Pattern,
Equivalent to OsStrBytesExt::contains
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.contains("oo"));
assert!(!raw.contains("of"));
Sourcepub fn ends_with<P>(&self, pat: P) -> boolwhere
P: Pattern,
pub fn ends_with<P>(&self, pat: P) -> boolwhere
P: Pattern,
Equivalent to OsStrBytesExt::ends_with
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.ends_with("bar"));
assert!(!raw.ends_with("foo"));
Sourcepub fn ends_with_os(&self, pat: &Self) -> bool
Available on crate feature conversions
only.
pub fn ends_with_os(&self, pat: &Self) -> bool
conversions
only.Equivalent to OsStrBytesExt::ends_with_os
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.ends_with_os(RawOsStr::new("bar")));
assert!(!raw.ends_with_os(RawOsStr::new("foo")));
Sourcepub fn find<P>(&self, pat: P) -> Option<usize>where
P: Pattern,
pub fn find<P>(&self, pat: P) -> Option<usize>where
P: Pattern,
Equivalent to OsStrBytesExt::find
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert_eq!(Some(1), raw.find("o"));
assert_eq!(None, raw.find("of"));
Sourcepub unsafe fn get_unchecked<I>(&self, index: I) -> &Selfwhere
I: SliceIndex,
pub unsafe fn get_unchecked<I>(&self, index: I) -> &Selfwhere
I: SliceIndex,
Equivalent to OsStrBytesExt::get_unchecked
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert_eq!("foo", unsafe { raw.get_unchecked(..3) });
assert_eq!("bar", unsafe { raw.get_unchecked(3..) });
Sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Equivalent to OsStr::is_empty
.
§Examples
use os_str_bytes::RawOsStr;
assert!(RawOsStr::new("").is_empty());
assert!(!RawOsStr::new("foobar").is_empty());
Sourcepub fn repeat(&self, n: usize) -> RawOsString
pub fn repeat(&self, n: usize) -> RawOsString
Equivalent to OsStrBytesExt::repeat
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foo");
assert_eq!("foofoofoo", raw.repeat(3));
Sourcepub fn rfind<P>(&self, pat: P) -> Option<usize>where
P: Pattern,
pub fn rfind<P>(&self, pat: P) -> Option<usize>where
P: Pattern,
Equivalent to OsStrBytesExt::rfind
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert_eq!(Some(2), raw.rfind("o"));
assert_eq!(None, raw.rfind("of"));
Sourcepub fn rsplit<P>(&self, pat: P) -> RawRSplit<'_, P> ⓘwhere
P: Pattern,
pub fn rsplit<P>(&self, pat: P) -> RawRSplit<'_, P> ⓘwhere
P: Pattern,
Equivalent to OsStrBytesExt::rsplit
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.rsplit("o").eq(["bar", "", "f"]));
Sourcepub fn rsplit_once<P>(&self, pat: P) -> Option<(&Self, &Self)>where
P: Pattern,
pub fn rsplit_once<P>(&self, pat: P) -> Option<(&Self, &Self)>where
P: Pattern,
Equivalent to OsStrBytesExt::rsplit_once
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert_eq!(
Some((RawOsStr::new("fo"), RawOsStr::new("bar"))),
raw.rsplit_once("o"),
);
assert_eq!(None, raw.rsplit_once("of"));
Sourcepub fn split<P>(&self, pat: P) -> RawSplit<'_, P> ⓘwhere
P: Pattern,
pub fn split<P>(&self, pat: P) -> RawSplit<'_, P> ⓘwhere
P: Pattern,
Equivalent to OsStrBytesExt::split
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.split("o").eq(["f", "", "bar"]));
Sourcepub fn split_at(&self, mid: usize) -> (&Self, &Self)
pub fn split_at(&self, mid: usize) -> (&Self, &Self)
Equivalent to OsStrBytesExt::split_at
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert_eq!(
(RawOsStr::new("fo"), RawOsStr::new("obar")),
raw.split_at(2),
);
Sourcepub fn split_once<P>(&self, pat: P) -> Option<(&Self, &Self)>where
P: Pattern,
pub fn split_once<P>(&self, pat: P) -> Option<(&Self, &Self)>where
P: Pattern,
Equivalent to OsStrBytesExt::split_once
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert_eq!(
Some((RawOsStr::new("f"), RawOsStr::new("obar"))),
raw.split_once("o"),
);
assert_eq!(None, raw.split_once("of"));
Sourcepub fn starts_with<P>(&self, pat: P) -> boolwhere
P: Pattern,
pub fn starts_with<P>(&self, pat: P) -> boolwhere
P: Pattern,
Equivalent to OsStrBytesExt::starts_with
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.starts_with("foo"));
assert!(!raw.starts_with("bar"));
Sourcepub fn starts_with_os(&self, pat: &Self) -> bool
Available on crate feature conversions
only.
pub fn starts_with_os(&self, pat: &Self) -> bool
conversions
only.Equivalent to OsStrBytesExt::starts_with_os
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("foobar");
assert!(raw.starts_with_os(RawOsStr::new("foo")));
assert!(!raw.starts_with_os(RawOsStr::new("bar")));
Sourcepub fn strip_prefix<P>(&self, pat: P) -> Option<&Self>where
P: Pattern,
pub fn strip_prefix<P>(&self, pat: P) -> Option<&Self>where
P: Pattern,
Equivalent to OsStrBytesExt::strip_prefix
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("111foo1bar111");
assert_eq!(Some(RawOsStr::new("11foo1bar111")), raw.strip_prefix("1"));
assert_eq!(None, raw.strip_prefix("o"));
Sourcepub fn strip_suffix<P>(&self, pat: P) -> Option<&Self>where
P: Pattern,
pub fn strip_suffix<P>(&self, pat: P) -> Option<&Self>where
P: Pattern,
Equivalent to OsStrBytesExt::strip_suffix
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("111foo1bar111");
assert_eq!(Some(RawOsStr::new("111foo1bar11")), raw.strip_suffix("1"));
assert_eq!(None, raw.strip_suffix("o"));
Sourcepub fn to_os_str(&self) -> Cow<'_, OsStr>
👎Deprecated since 6.6.0: use as_os_str
instead
pub fn to_os_str(&self) -> Cow<'_, OsStr>
as_os_str
insteadConverts this representation back to a platform-native string.
When possible, use RawOsStrCow::into_os_str
for a more efficient
conversion on some platforms.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
assert_eq!(os_string, raw.to_os_str());
Sourcepub fn to_raw_bytes(&self) -> Cow<'_, [u8]>
Available on crate feature conversions
only.
pub fn to_raw_bytes(&self) -> Cow<'_, [u8]>
conversions
only.Equivalent to OsStrBytes::to_raw_bytes
.
§Examples
use os_str_bytes::RawOsStr;
let string = "foobar";
let raw = RawOsStr::new(string);
assert_eq!(string.as_bytes(), &*raw.to_raw_bytes());
Sourcepub fn to_str(&self) -> Option<&str>
pub fn to_str(&self) -> Option<&str>
Equivalent to OsStr::to_str
.
§Examples
use os_str_bytes::RawOsStr;
let string = "foobar";
let raw = RawOsStr::new(string);
assert_eq!(Some(string), raw.to_str());
Sourcepub fn to_str_lossy(&self) -> Cow<'_, str>
pub fn to_str_lossy(&self) -> Cow<'_, str>
Equivalent to OsStr::to_string_lossy
.
§Examples
use std::env;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
println!("{}", raw.to_str_lossy());
Sourcepub fn trim_end_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
pub fn trim_end_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
Equivalent to OsStrBytesExt::trim_end_matches
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("111foo1bar111");
assert_eq!("111foo1bar", raw.trim_end_matches("1"));
assert_eq!("111foo1bar111", raw.trim_end_matches("o"));
Sourcepub fn trim_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
pub fn trim_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
Equivalent to OsStrBytesExt::trim_matches
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("111foo1bar111");
assert_eq!("foo1bar", raw.trim_matches("1"));
assert_eq!("111foo1bar111", raw.trim_matches("o"));
Sourcepub fn trim_start_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
pub fn trim_start_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
Equivalent to OsStrBytesExt::trim_start_matches
.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::new("111foo1bar111");
assert_eq!("foo1bar111", raw.trim_start_matches("1"));
assert_eq!("111foo1bar111", raw.trim_start_matches("o"));
Sourcepub fn utf8_chunks(&self) -> Utf8Chunks<'_> ⓘ
pub fn utf8_chunks(&self) -> Utf8Chunks<'_> ⓘ
Equivalent to OsStrBytesExt::utf8_chunks
.
§Examples
use os_str_bytes::RawOsStr;
fn to_str_lossy<F>(raw: &RawOsStr, mut push: F)
where
F: FnMut(&str),
{
for (invalid, string) in raw.utf8_chunks() {
if !invalid.as_os_str().is_empty() {
push("\u{FFFD}");
}
push(string);
}
}