Struct os_str_bytes::RawOsString
source · pub struct RawOsString(_);
Expand description
A container for owned byte strings converted by this crate.
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 assert_from_raw_vec(string: Vec<u8>) -> Self
pub fn assert_from_raw_vec(string: Vec<u8>) -> Self
Wraps a byte string, without copying or encoding conversion.
Panics
Panics if the string is not valid for the unspecified encoding used by this crate.
Examples
use std::env;
use os_str_bytes::RawOsString;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsString::new(os_string);
let raw_bytes = raw.clone().into_raw_vec();
assert_eq!(raw, RawOsString::assert_from_raw_vec(raw_bytes));
sourcepub unsafe fn from_raw_vec_unchecked(string: Vec<u8>) -> Self
pub unsafe fn from_raw_vec_unchecked(string: Vec<u8>) -> Self
Wraps a byte string, without copying or encoding conversion.
Safety
The string must be valid for the unspecified encoding used by this crate.
Examples
use std::env;
use os_str_bytes::RawOsString;
let os_string = env::current_exe()?.into_os_string();
let raw = RawOsString::new(os_string);
let raw_bytes = raw.clone().into_raw_vec();
assert_eq!(raw, unsafe {
RawOsString::from_raw_vec_unchecked(raw_bytes)
});
sourcepub fn clear(&mut self)
pub fn clear(&mut self)
Equivalent to String::clear
.
Examples
use std::env;
use os_str_bytes::RawOsString;
let os_string = env::current_exe()?.into_os_string();
let mut raw = RawOsString::new(os_string);
raw.clear();
assert!(raw.is_empty());
sourcepub fn into_box(self) -> Box<RawOsStr>
pub fn into_box(self) -> Box<RawOsStr>
Equivalent to String::into_boxed_str
.
Examples
use os_str_bytes::RawOsString;
let string = "foobar".to_owned();
let raw = RawOsString::from_string(string.clone());
assert_eq!(string, *raw.into_box());
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 returned string will use an unspecified encoding.
Examples
use os_str_bytes::RawOsString;
let string = "foobar".to_owned();
let raw = RawOsString::from_string(string.clone());
assert_eq!(string.into_bytes(), 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());
sourcepub fn shrink_to_fit(&mut self)
pub fn shrink_to_fit(&mut self)
Equivalent to String::shrink_to_fit
.
Examples
use os_str_bytes::RawOsString;
let string = "foobar".to_owned();
let mut raw = RawOsString::from_string(string.clone());
raw.shrink_to_fit();
assert_eq!(string, raw);
sourcepub fn split_off(&mut self, at: usize) -> Self
pub fn split_off(&mut self, at: usize) -> Self
Equivalent to String::split_off
.
Panics
Panics if the index is not a valid boundary.
Examples
use os_str_bytes::RawOsString;
let mut raw = RawOsString::from_string("foobar".to_owned());
assert_eq!("bar", raw.split_off(3));
assert_eq!("foo", raw);
sourcepub fn truncate(&mut self, new_len: usize)
pub fn truncate(&mut self, new_len: usize)
Equivalent to String::truncate
.
Panics
Panics if the index is not a valid boundary.
Examples
use os_str_bytes::RawOsString;
let mut raw = RawOsString::from_string("foobar".to_owned());
raw.truncate(3);
assert_eq!("foo", raw);
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 returned string will use an unspecified encoding.
Examples
use os_str_bytes::RawOsStr;
let string = "foobar";
let raw = RawOsStr::from_str(string);
assert_eq!(string.as_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
.
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
.
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.
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
.
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
.
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 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
.
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
.
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.
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
.
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
.
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.
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_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
.
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_matches<P>(&self, pat: P) -> &Selfwhere
P: Pattern,
pub fn trim_matches<P>(&self, pat: P) -> &Selfwhere P: Pattern,
Equivalent to str::trim_matches
.
Examples
use os_str_bytes::RawOsStr;
let raw = RawOsStr::from_str("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 str::trim_start_matches
.
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 Box<RawOsStr>
impl From<RawOsString> for Box<RawOsStr>
source§fn from(value: RawOsString) -> Self
fn from(value: RawOsString) -> Self
source§impl From<RawOsString> for Cow<'_, RawOsStr>
impl From<RawOsString> for Cow<'_, RawOsStr>
source§fn from(value: RawOsString) -> Self
fn from(value: 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§fn eq(&self, other: &RawOsString) -> bool
fn eq(&self, other: &RawOsString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<RawOsString> for &str
impl PartialEq<RawOsString> for &str
source§fn eq(&self, other: &RawOsString) -> bool
fn eq(&self, other: &RawOsString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<RawOsString> for RawOsStr
impl PartialEq<RawOsString> for RawOsStr
source§fn eq(&self, other: &RawOsString) -> bool
fn eq(&self, other: &RawOsString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<RawOsString> for RawOsString
impl PartialEq<RawOsString> for RawOsString
source§fn eq(&self, other: &RawOsString) -> bool
fn eq(&self, other: &RawOsString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<RawOsString> for String
impl PartialEq<RawOsString> for String
source§fn eq(&self, other: &RawOsString) -> bool
fn eq(&self, other: &RawOsString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<RawOsString> for str
impl PartialEq<RawOsString> for str
source§fn eq(&self, other: &RawOsString) -> bool
fn eq(&self, other: &RawOsString) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<String> for RawOsString
impl PartialEq<String> for RawOsString
source§impl PartialEq<str> for RawOsString
impl PartialEq<str> for RawOsString
source§impl PartialOrd<RawOsString> for RawOsString
impl PartialOrd<RawOsString> for RawOsString
source§fn partial_cmp(&self, other: &RawOsString) -> Option<Ordering>
fn partial_cmp(&self, other: &RawOsString) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more