Struct os_str_bytes::RawOsString
source · pub struct RawOsString(/* private fields */);Expand description
A container for the byte strings converted by OsStringBytes.
For more information, see RawOsStr.
Implementations§
source§impl RawOsString
impl RawOsString
sourcepub fn new(string: OsString) -> Self
pub fn new(string: OsString) -> Self
Converts a platform-native string into a representation that can be more easily manipulated.
For more information, see RawOsStr::new.
§Examples
use std::env;
use os_str_bytes::RawOsString;
let os_string = env::current_exe()?.into_os_string();
println!("{:?}", RawOsString::new(os_string));sourcepub fn from_string(string: String) -> Self
pub fn from_string(string: String) -> Self
Wraps a string, without copying or encoding conversion.
This method is much more efficient than RawOsString::new, since the
encoding used by this crate is compatible with UTF-8.
§Examples
use os_str_bytes::RawOsString;
let string = "foobar".to_owned();
let raw = RawOsString::from_string(string.clone());
assert_eq!(string, raw);sourcepub fn into_os_string(self) -> OsString
pub fn into_os_string(self) -> OsString
Converts this representation back to a platform-native string.
§Examples
use std::env;
use os_str_bytes::RawOsString;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsString::new(os_string.clone());
assert_eq!(os_string, raw.into_os_string());sourcepub fn into_raw_vec(self) -> Vec<u8>
pub fn into_raw_vec(self) -> Vec<u8>
Returns the byte string stored by this container.
The result will match what would be returned by
OsStringBytes::into_raw_vec for the same string.
§Examples
use std::env;
use os_str_bytes::OsStringBytes;
use os_str_bytes::RawOsString;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsString::new(os_string.clone());
assert_eq!(os_string.into_raw_vec(), raw.into_raw_vec());sourcepub fn into_string(self) -> Result<String, Self>
pub fn into_string(self) -> Result<String, Self>
Equivalent to OsString::into_string.
§Examples
use os_str_bytes::RawOsString;
let string = "foobar".to_owned();
let raw = RawOsString::from_string(string.clone());
assert_eq!(Ok(string), raw.into_string());Methods from Deref<Target = RawOsStr>§
sourcepub fn as_raw_bytes(&self) -> &[u8] ⓘ
pub fn as_raw_bytes(&self) -> &[u8] ⓘ
Returns the byte string stored by this container.
The result will match what would be returned by
OsStrBytes::to_raw_bytes for the same string.
§Examples
use std::env;
use os_str_bytes::OsStrBytes;
use os_str_bytes::RawOsStr;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsStr::new(&os_string);
assert_eq!(os_string.to_raw_bytes(), raw.as_raw_bytes());sourcepub fn contains<P>(&self, pat: P) -> boolwhere
P: Pattern,
pub fn contains<P>(&self, pat: P) -> boolwhere
P: Pattern,
Equivalent to str::contains.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("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 str::ends_with.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert!(raw.ends_with("bar"));
assert!(!raw.ends_with("foo"));sourcepub fn ends_with_os(&self, pat: &Self) -> bool
pub fn ends_with_os(&self, pat: &Self) -> bool
Equivalent to str::ends_with but accepts this type for the pattern.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert!(raw.ends_with_os(RawOsStr::from_str("bar")));
assert!(!raw.ends_with_os(RawOsStr::from_str("foo")));sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
Equivalent to str::is_empty.
§Examples
use os_str_bytes::RawOsStr;
assert!(RawOsStr::from_str("").is_empty());
assert!(!RawOsStr::from_str("foobar").is_empty());sourcepub fn raw_len(&self) -> usize
pub fn raw_len(&self) -> usize
Returns the length of the byte string stored by this container.
Only the following assumptions can be made about the result:
- The length of any Unicode character is the length of its UTF-8
representation (i.e.,
char::len_utf8). - Splitting a string at a UTF-8 boundary will return two strings with lengths that sum to the length of the original string.
This method may return a different result than would OsStr::len
when called on same string, since OsStr uses an unspecified
encoding.
§Examples
use os_str_bytes::RawOsStr;
assert_eq!(6, RawOsStr::from_str("foobar").raw_len());
assert_eq!(0, RawOsStr::from_str("").raw_len());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 str::rfind.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert_eq!(Some(2), raw.rfind("o"));
assert_eq!(None, raw.rfind("of"));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 str::rsplit_once.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert_eq!(
Some((RawOsStr::from_str("fo"), RawOsStr::from_str("bar"))),
raw.rsplit_once("o"),
);
assert_eq!(None, raw.rsplit_once("of"));sourcepub fn split<P>(&self, pat: P) -> Split<'_, P> ⓘwhere
P: Pattern,
pub fn split<P>(&self, pat: P) -> Split<'_, P> ⓘwhere
P: Pattern,
Equivalent to str::split, but empty patterns are not accepted.
§Panics
Panics if the pattern is a byte outside of the ASCII range or empty.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert_eq!(["f", "", "bar"], *raw.split("o").collect::<Vec<_>>());sourcepub fn split_at(&self, mid: usize) -> (&Self, &Self)
pub fn split_at(&self, mid: usize) -> (&Self, &Self)
Equivalent to str::split_at.
§Panics
Panics if the index is not a valid boundary.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert_eq!(
((RawOsStr::from_str("fo"), RawOsStr::from_str("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 str::split_once.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert_eq!(
Some((RawOsStr::from_str("f"), RawOsStr::from_str("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 str::starts_with.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert!(raw.starts_with("foo"));
assert!(!raw.starts_with("bar"));sourcepub fn starts_with_os(&self, pat: &Self) -> bool
pub fn starts_with_os(&self, pat: &Self) -> bool
Equivalent to str::starts_with but accepts this type for the
pattern.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("foobar");
assert!(raw.starts_with_os(RawOsStr::from_str("foo")));
assert!(!raw.starts_with_os(RawOsStr::from_str("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 str::strip_prefix.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("111foo1bar111");
assert_eq!(
Some(RawOsStr::from_str("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 str::strip_suffix.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("111foo1bar111");
assert_eq!(
Some(RawOsStr::from_str("111foo1bar11")),
raw.strip_suffix("1"),
);
assert_eq!(None, raw.strip_suffix("o"));sourcepub fn to_os_str(&self) -> Cow<'_, OsStr>
pub fn to_os_str(&self) -> Cow<'_, OsStr>
Converts this representation back to a platform-native string.
§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_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::from_str(string);
assert_eq!(Some(string), raw.to_str());sourcepub fn to_str_lossy(&self) -> Cow<'_, str>
pub fn to_str_lossy(&self) -> Cow<'_, str>
Converts this string to the best UTF-8 representation possible.
Invalid sequences will be replaced with
char::REPLACEMENT_CHARACTER.
This method may return a different result than would
OsStr::to_string_lossy when called on same string, since OsStr
uses an unspecified encoding.
§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 str::trim_end_matches.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("111foo1bar111");
assert_eq!("111foo1bar", raw.trim_end_matches("1"));
assert_eq!("111foo1bar111", raw.trim_end_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 str::trim_start_matches.
§Panics
Panics if the pattern is a byte outside of the ASCII range.
§Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("111foo1bar111");
assert_eq!("foo1bar111", raw.trim_start_matches("1"));
assert_eq!("111foo1bar111", raw.trim_start_matches("o"));Trait Implementations§
source§impl AsRef<RawOsStr> for RawOsString
impl AsRef<RawOsStr> for RawOsString
source§impl Borrow<RawOsStr> for RawOsString
impl Borrow<RawOsStr> for RawOsString
source§impl Clone for RawOsString
impl Clone for RawOsString
source§fn clone(&self) -> RawOsString
fn clone(&self) -> RawOsString
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moresource§impl Debug for RawOsString
impl Debug for RawOsString
source§impl Default for RawOsString
impl Default for RawOsString
source§fn default() -> RawOsString
fn default() -> RawOsString
source§impl Deref for RawOsString
impl Deref for RawOsString
source§impl From<RawOsString> for Cow<'_, RawOsStr>
impl From<RawOsString> for Cow<'_, RawOsStr>
source§fn from(other: RawOsString) -> Self
fn from(other: RawOsString) -> Self
source§impl From<String> for RawOsString
impl From<String> for RawOsString
source§impl Hash for RawOsString
impl Hash for RawOsString
source§impl Index<RangeFull> for RawOsString
impl Index<RangeFull> for RawOsString
source§impl Index<RangeInclusive<usize>> for RawOsString
impl Index<RangeInclusive<usize>> for RawOsString
source§impl Index<RangeToInclusive<usize>> for RawOsString
impl Index<RangeToInclusive<usize>> for RawOsString
source§impl Ord for RawOsString
impl Ord for RawOsString
source§fn cmp(&self, other: &RawOsString) -> Ordering
fn cmp(&self, other: &RawOsString) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq<&RawOsStr> for RawOsString
impl PartialEq<&RawOsStr> for RawOsString
source§impl PartialEq<&str> for RawOsString
impl PartialEq<&str> for RawOsString
source§impl PartialEq<RawOsStr> for RawOsString
impl PartialEq<RawOsStr> for RawOsString
source§impl PartialEq<RawOsString> for &RawOsStr
impl PartialEq<RawOsString> for &RawOsStr
source§impl PartialEq<RawOsString> for &str
impl PartialEq<RawOsString> for &str
source§impl PartialEq<RawOsString> for RawOsStr
impl PartialEq<RawOsString> for RawOsStr
source§impl PartialEq<RawOsString> for String
impl PartialEq<RawOsString> for String
source§impl PartialEq<RawOsString> for str
impl PartialEq<RawOsString> for str
source§impl PartialEq<String> for RawOsString
impl PartialEq<String> for RawOsString
source§impl PartialEq<str> for RawOsString
impl PartialEq<str> for RawOsString
source§impl PartialEq for RawOsString
impl PartialEq for RawOsString
source§impl PartialOrd for RawOsString
impl PartialOrd for RawOsString
impl Eq for RawOsString
impl StructuralPartialEq for RawOsString
Auto Trait Implementations§
impl Freeze for RawOsString
impl RefUnwindSafe for RawOsString
impl Send for RawOsString
impl Sync for RawOsString
impl Unpin for RawOsString
impl UnwindSafe for RawOsString
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit)