Struct java_string::JavaStr
source · pub struct JavaStr { /* private fields */ }
Implementations§
source§impl JavaStr
impl JavaStr
sourcepub fn from_modified_utf8(bytes: &[u8]) -> Result<Cow<'_, JavaStr>, Utf8Error>
pub fn from_modified_utf8(bytes: &[u8]) -> Result<Cow<'_, JavaStr>, Utf8Error>
Converts from Java’s modified UTF-8 format to a Cow<JavaStr>
.
let result = JavaStr::from_modified_utf8("Hello World!".as_bytes()).unwrap();
assert!(matches!(result, Cow::Borrowed(_)));
assert_eq!(JavaStr::from_str("Hello World!"), result);
let result = JavaStr::from_modified_utf8(&[
0x61, 0x62, 0x63, 0xc0, 0x80, 0xe2, 0x84, 0x9d, 0xed, 0xa0, 0xbd, 0xed, 0xb2, 0xa3, 0xed,
0xa0, 0x80,
])
.unwrap();
assert!(matches!(result, Cow::Owned(_)));
let mut expected = JavaString::from("abc\0ℝ💣");
expected.push_java(JavaCodePoint::from_u32(0xd800).unwrap());
assert_eq!(expected, result);
let result = JavaStr::from_modified_utf8(&[0xed]);
assert!(result.is_err());
sourcepub fn to_modified_utf8(&self) -> Cow<'_, [u8]>
pub fn to_modified_utf8(&self) -> Cow<'_, [u8]>
Converts to Java’s modified UTF-8 format.
let result = JavaStr::from_str("Hello World!").to_modified_utf8();
assert!(matches!(result, Cow::Borrowed(_)));
assert_eq!(result, &b"Hello World!"[..]);
let mut str = JavaString::from("abc\0ℝ💣");
str.push_java(JavaCodePoint::from_u32(0xd800).unwrap());
let result = str.to_modified_utf8();
let expected = [
0x61, 0x62, 0x63, 0xc0, 0x80, 0xe2, 0x84, 0x9d, 0xed, 0xa0, 0xbd, 0xed, 0xb2, 0xa3, 0xed,
0xa0, 0x80,
];
assert!(matches!(result, Cow::Owned(_)));
assert_eq!(result, &expected[..]);
source§impl JavaStr
impl JavaStr
sourcepub const fn from_full_utf8(v: &[u8]) -> Result<&JavaStr, Utf8Error>
pub const fn from_full_utf8(v: &[u8]) -> Result<&JavaStr, Utf8Error>
Converts v
to a &JavaStr
if it is fully-valid UTF-8, i.e. UTF-8
without surrogate code points. See std::str::from_utf8
.
sourcepub fn from_full_utf8_mut(v: &mut [u8]) -> Result<&mut JavaStr, Utf8Error>
pub fn from_full_utf8_mut(v: &mut [u8]) -> Result<&mut JavaStr, Utf8Error>
Converts v
to a &mut JavaStr
if it is fully-valid UTF-8, i.e. UTF-8
without surrogate code points. See std::str::from_utf8_mut
.
sourcepub fn from_semi_utf8(v: &[u8]) -> Result<&JavaStr, Utf8Error>
pub fn from_semi_utf8(v: &[u8]) -> Result<&JavaStr, Utf8Error>
Converts v
to a &JavaStr
if it is semi-valid UTF-8, i.e. UTF-8
with surrogate code points.
sourcepub fn from_semi_utf8_mut(v: &mut [u8]) -> Result<&mut JavaStr, Utf8Error>
pub fn from_semi_utf8_mut(v: &mut [u8]) -> Result<&mut JavaStr, Utf8Error>
Converts v
to a &mut JavaStr
if it is semi-valid UTF-8, i.e. UTF-8
with surrogate code points.
sourcepub const unsafe fn from_semi_utf8_unchecked(v: &[u8]) -> &JavaStr
pub const unsafe fn from_semi_utf8_unchecked(v: &[u8]) -> &JavaStr
§Safety
The parameter must be in semi-valid UTF-8 format, that is, UTF-8 plus surrogate code points.
sourcepub unsafe fn from_semi_utf8_unchecked_mut(v: &mut [u8]) -> &mut JavaStr
pub unsafe fn from_semi_utf8_unchecked_mut(v: &mut [u8]) -> &mut JavaStr
§Safety
The parameter must be in semi-valid UTF-8 format, that is, UTF-8 plus surrogate code points.
pub const fn from_str(str: &str) -> &JavaStr
pub fn from_mut_str(str: &mut str) -> &mut JavaStr
pub fn from_boxed_str(v: Box<str>) -> Box<JavaStr>
sourcepub unsafe fn from_boxed_semi_utf8_unchecked(v: Box<[u8]>) -> Box<JavaStr>
pub unsafe fn from_boxed_semi_utf8_unchecked(v: Box<[u8]>) -> Box<JavaStr>
§Safety
The parameter must be in semi-valid UTF-8 format, that is, UTF-8 plus surrogate code points.
sourcepub const fn as_bytes(&self) -> &[u8] ⓘ
pub const fn as_bytes(&self) -> &[u8] ⓘ
See str::as_bytes
.
sourcepub unsafe fn as_bytes_mut(&mut self) -> &mut [u8] ⓘ
pub unsafe fn as_bytes_mut(&mut self) -> &mut [u8] ⓘ
See str::as_bytes_mut
.
§Safety
The returned slice must not have invalid UTF-8 written to it, besides surrogate pairs.
sourcepub fn as_mut_ptr(&mut self) -> *mut u8
pub fn as_mut_ptr(&mut self) -> *mut u8
See str::as_mut_ptr
.
sourcepub const fn as_ptr(&self) -> *const u8
pub const fn as_ptr(&self) -> *const u8
See str::as_ptr
.
sourcepub const fn as_str(&self) -> Result<&str, Utf8Error>
pub const fn as_str(&self) -> Result<&str, Utf8Error>
Tries to convert this &JavaStr
to a &str
, returning an error if
it is not fully valid UTF-8, i.e. has no surrogate code points.
sourcepub const unsafe fn as_str_unchecked(&self) -> &str
pub const unsafe fn as_str_unchecked(&self) -> &str
§Safety
This string must be fully valid UTF-8, i.e. have no surrogate code points.
sourcepub fn as_str_lossy(&self) -> Cow<'_, str>
pub fn as_str_lossy(&self) -> Cow<'_, str>
Converts this &JavaStr
to a Cow<str>
, replacing surrogate code
points with the replacement character �.
let s = JavaStr::from_str("Hello 🦀 World!");
let result = s.as_str_lossy();
assert!(matches!(result, Cow::Borrowed(_)));
assert_eq!(result, "Hello 🦀 World!");
let s = JavaString::from("Hello ")
+ JavaString::from(JavaCodePoint::from_u32(0xd800).unwrap()).as_java_str()
+ JavaStr::from_str(" World!");
let result = s.as_str_lossy();
assert!(matches!(result, Cow::Owned(_)));
assert_eq!(result, "Hello � World!");
sourcepub fn bytes(&self) -> Bytes<'_> ⓘ
pub fn bytes(&self) -> Bytes<'_> ⓘ
See str::bytes
.
sourcepub fn char_indices(&self) -> CharIndices<'_> ⓘ
pub fn char_indices(&self) -> CharIndices<'_> ⓘ
See str::char_indices
.
sourcepub fn chars(&self) -> Chars<'_> ⓘ
pub fn chars(&self) -> Chars<'_> ⓘ
See str::chars
.
sourcepub fn contains<P>(&self, pat: P) -> boolwhere
P: JavaStrPattern,
pub fn contains<P>(&self, pat: P) -> boolwhere
P: JavaStrPattern,
See str::contains
.
let bananas = JavaStr::from_str("bananas");
assert!(bananas.contains("nana"));
assert!(!bananas.contains("apples"));
sourcepub fn ends_with<P>(&self, pat: P) -> boolwhere
P: JavaStrPattern,
pub fn ends_with<P>(&self, pat: P) -> boolwhere
P: JavaStrPattern,
See str::ends_with
.
let bananas = JavaStr::from_str("bananas");
assert!(bananas.ends_with("anas"));
assert!(!bananas.ends_with("nana"));
sourcepub fn eq_ignore_ascii_case(&self, other: &str) -> bool
pub fn eq_ignore_ascii_case(&self, other: &str) -> bool
sourcepub fn eq_java_ignore_ascii_case(&self, other: &JavaStr) -> bool
pub fn eq_java_ignore_ascii_case(&self, other: &JavaStr) -> bool
sourcepub fn escape_debug(&self) -> EscapeDebug<'_> ⓘ
pub fn escape_debug(&self) -> EscapeDebug<'_> ⓘ
See str::escape_debug
.
assert_eq!(
JavaStr::from_str("❤\n!").escape_debug().to_string(),
"❤\\n!"
);
sourcepub fn escape_default(&self) -> EscapeDefault<'_> ⓘ
pub fn escape_default(&self) -> EscapeDefault<'_> ⓘ
See str::escape_default
.
assert_eq!(
JavaStr::from_str("❤\n!").escape_default().to_string(),
"\\u{2764}\\n!"
);
sourcepub fn escape_unicode(&self) -> EscapeUnicode<'_> ⓘ
pub fn escape_unicode(&self) -> EscapeUnicode<'_> ⓘ
See str::escape_unicode
.
assert_eq!(
JavaStr::from_str("❤\n!").escape_unicode().to_string(),
"\\u{2764}\\u{a}\\u{21}"
);
sourcepub fn find<P>(&self, pat: P) -> Option<usize>where
P: JavaStrPattern,
pub fn find<P>(&self, pat: P) -> Option<usize>where
P: JavaStrPattern,
See str::find
.
let s = "Löwe 老虎 Léopard Gepardi";
assert_eq!(s.find('L'), Some(0));
assert_eq!(s.find('é'), Some(14));
assert_eq!(s.find("par"), Some(17));
let x: &[_] = &['1', '2'];
assert_eq!(s.find(x), None);
sourcepub fn get<I>(&self, i: I) -> Option<&JavaStr>where
I: JavaStrSliceIndex,
pub fn get<I>(&self, i: I) -> Option<&JavaStr>where
I: JavaStrSliceIndex,
See str::get
.
let v = JavaString::from("🗻∈🌏");
assert_eq!(Some(JavaStr::from_str("🗻")), v.get(0..4));
// indices not on UTF-8 sequence boundaries
assert!(v.get(1..).is_none());
assert!(v.get(..8).is_none());
// out of bounds
assert!(v.get(..42).is_none());
sourcepub fn get_mut<I>(&mut self, i: I) -> Option<&mut JavaStr>where
I: JavaStrSliceIndex,
pub fn get_mut<I>(&mut self, i: I) -> Option<&mut JavaStr>where
I: JavaStrSliceIndex,
See str::get_mut
.
sourcepub unsafe fn get_unchecked<I>(&self, i: I) -> &JavaStrwhere
I: JavaStrSliceIndex,
pub unsafe fn get_unchecked<I>(&self, i: I) -> &JavaStrwhere
I: JavaStrSliceIndex,
See str::get_unchecked
.
§Safety
- The starting index must not exceed the ending index
- Indexes must be within bounds of the original slice
- Indexes must lie on UTF-8 sequence boundaries
sourcepub unsafe fn get_unchecked_mut<I>(&mut self, i: I) -> &mut JavaStrwhere
I: JavaStrSliceIndex,
pub unsafe fn get_unchecked_mut<I>(&mut self, i: I) -> &mut JavaStrwhere
I: JavaStrSliceIndex,
§Safety
- The starting index must not exceed the ending index
- Indexes must be within bounds of the original slice
- Indexes must lie on UTF-8 sequence boundaries
sourcepub fn into_string(self: Box<JavaStr>) -> JavaString
pub fn into_string(self: Box<JavaStr>) -> JavaString
See str::into_string
.
sourcepub fn is_ascii(&self) -> bool
pub fn is_ascii(&self) -> bool
See str::is_ascii
.
sourcepub fn is_char_boundary(&self, index: usize) -> bool
pub fn is_char_boundary(&self, index: usize) -> bool
sourcepub fn is_empty(&self) -> bool
pub fn is_empty(&self) -> bool
See str::is_empty
.
sourcepub fn lines(&self) -> Lines<'_> ⓘ
pub fn lines(&self) -> Lines<'_> ⓘ
See str::lines
.
sourcepub fn make_ascii_lowercase(&mut self)
pub fn make_ascii_lowercase(&mut self)
sourcepub fn make_ascii_uppercase(&mut self)
pub fn make_ascii_uppercase(&mut self)
sourcepub fn match_indices<P>(&self, pat: P) -> MatchIndices<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn match_indices<P>(&self, pat: P) -> MatchIndices<'_, P> ⓘwhere
P: JavaStrPattern,
See str::match_indices
.
let v: Vec<_> = JavaStr::from_str("abcXXXabcYYYabc")
.match_indices("abc")
.collect();
assert_eq!(
v,
[
(0, JavaStr::from_str("abc")),
(6, JavaStr::from_str("abc")),
(12, JavaStr::from_str("abc"))
]
);
let v: Vec<_> = JavaStr::from_str("1abcabc2").match_indices("abc").collect();
assert_eq!(
v,
[(1, JavaStr::from_str("abc")), (4, JavaStr::from_str("abc"))]
);
let v: Vec<_> = JavaStr::from_str("ababa").match_indices("aba").collect();
assert_eq!(v, [(0, JavaStr::from_str("aba"))]); // only the first `aba`
sourcepub fn matches<P>(&self, pat: P) -> Matches<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn matches<P>(&self, pat: P) -> Matches<'_, P> ⓘwhere
P: JavaStrPattern,
See str::matches
.
let v: Vec<&JavaStr> = JavaStr::from_str("abcXXXabcYYYabc")
.matches("abc")
.collect();
assert_eq!(
v,
[
JavaStr::from_str("abc"),
JavaStr::from_str("abc"),
JavaStr::from_str("abc")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("1abc2abc3")
.matches(JavaCodePoint::is_numeric)
.collect();
assert_eq!(
v,
[
JavaStr::from_str("1"),
JavaStr::from_str("2"),
JavaStr::from_str("3")
]
);
sourcepub fn parse<F>(&self) -> Result<F, ParseError<<F as FromStr>::Err>>where
F: FromStr,
pub fn parse<F>(&self) -> Result<F, ParseError<<F as FromStr>::Err>>where
F: FromStr,
See str::parse
.
sourcepub fn repeat(&self, n: usize) -> JavaString
pub fn repeat(&self, n: usize) -> JavaString
See str::repeat
.
sourcepub fn replace<P>(&self, from: P, to: &str) -> JavaStringwhere
P: JavaStrPattern,
pub fn replace<P>(&self, from: P, to: &str) -> JavaStringwhere
P: JavaStrPattern,
See str::replace
.
let s = JavaStr::from_str("this is old");
assert_eq!("this is new", s.replace("old", "new"));
assert_eq!("than an old", s.replace("is", "an"));
sourcepub fn replace_java<P>(&self, from: P, to: &JavaStr) -> JavaStringwhere
P: JavaStrPattern,
pub fn replace_java<P>(&self, from: P, to: &JavaStr) -> JavaStringwhere
P: JavaStrPattern,
See str::replace
.
sourcepub fn replacen<P>(&self, from: P, to: &str, count: usize) -> JavaStringwhere
P: JavaStrPattern,
pub fn replacen<P>(&self, from: P, to: &str, count: usize) -> JavaStringwhere
P: JavaStrPattern,
See str::replacen
.
let s = JavaStr::from_str("foo foo 123 foo");
assert_eq!("new new 123 foo", s.replacen("foo", "new", 2));
assert_eq!("faa fao 123 foo", s.replacen('o', "a", 3));
assert_eq!(
"foo foo new23 foo",
s.replacen(JavaCodePoint::is_numeric, "new", 1)
);
sourcepub fn replacen_java<P>(
&self,
from: P,
to: &JavaStr,
count: usize,
) -> JavaStringwhere
P: JavaStrPattern,
pub fn replacen_java<P>(
&self,
from: P,
to: &JavaStr,
count: usize,
) -> JavaStringwhere
P: JavaStrPattern,
See str::replacen
.
sourcepub fn rfind<P>(&self, pat: P) -> Option<usize>where
P: JavaStrPattern,
pub fn rfind<P>(&self, pat: P) -> Option<usize>where
P: JavaStrPattern,
See str::rfind
.
let s = JavaStr::from_str("Löwe 老虎 Léopard Gepardi");
assert_eq!(s.rfind('L'), Some(13));
assert_eq!(s.rfind('é'), Some(14));
assert_eq!(s.rfind("par"), Some(24));
let x: &[_] = &['1', '2'];
assert_eq!(s.rfind(x), None);
sourcepub fn rmatch_indices<P>(&self, pat: P) -> RMatchIndices<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn rmatch_indices<P>(&self, pat: P) -> RMatchIndices<'_, P> ⓘwhere
P: JavaStrPattern,
See str::rmatch_indices
.
let v: Vec<_> = JavaStr::from_str("abcXXXabcYYYabc")
.rmatch_indices("abc")
.collect();
assert_eq!(
v,
[
(12, JavaStr::from_str("abc")),
(6, JavaStr::from_str("abc")),
(0, JavaStr::from_str("abc"))
]
);
let v: Vec<_> = JavaStr::from_str("1abcabc2")
.rmatch_indices("abc")
.collect();
assert_eq!(
v,
[(4, JavaStr::from_str("abc")), (1, JavaStr::from_str("abc"))]
);
let v: Vec<_> = JavaStr::from_str("ababa").rmatch_indices("aba").collect();
assert_eq!(v, [(2, JavaStr::from_str("aba"))]); // only the last `aba`
sourcepub fn rmatches<P>(&self, pat: P) -> RMatches<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn rmatches<P>(&self, pat: P) -> RMatches<'_, P> ⓘwhere
P: JavaStrPattern,
See str::rmatches
.
let v: Vec<&JavaStr> = JavaStr::from_str("abcXXXabcYYYabc")
.rmatches("abc")
.collect();
assert_eq!(
v,
[
JavaStr::from_str("abc"),
JavaStr::from_str("abc"),
JavaStr::from_str("abc")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("1abc2abc3")
.rmatches(JavaCodePoint::is_numeric)
.collect();
assert_eq!(
v,
[
JavaStr::from_str("3"),
JavaStr::from_str("2"),
JavaStr::from_str("1")
]
);
sourcepub fn rsplit<P>(&self, pat: P) -> RSplit<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn rsplit<P>(&self, pat: P) -> RSplit<'_, P> ⓘwhere
P: JavaStrPattern,
See str::rsplit
.
let v: Vec<&JavaStr> = JavaStr::from_str("Mary had a little lamb")
.rsplit(' ')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("lamb"),
JavaStr::from_str("little"),
JavaStr::from_str("a"),
JavaStr::from_str("had"),
JavaStr::from_str("Mary")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("").rsplit('X').collect();
assert_eq!(v, [JavaStr::from_str("")]);
let v: Vec<&JavaStr> = JavaStr::from_str("lionXXtigerXleopard")
.rsplit('X')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("leopard"),
JavaStr::from_str("tiger"),
JavaStr::from_str(""),
JavaStr::from_str("lion")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("lion::tiger::leopard")
.rsplit("::")
.collect();
assert_eq!(
v,
[
JavaStr::from_str("leopard"),
JavaStr::from_str("tiger"),
JavaStr::from_str("lion")
]
);
sourcepub fn rsplit_once<P>(&self, delimiter: P) -> Option<(&JavaStr, &JavaStr)>where
P: JavaStrPattern,
pub fn rsplit_once<P>(&self, delimiter: P) -> Option<(&JavaStr, &JavaStr)>where
P: JavaStrPattern,
See str::rsplit_once
.
assert_eq!(JavaStr::from_str("cfg").rsplit_once('='), None);
assert_eq!(
JavaStr::from_str("cfg=foo").rsplit_once('='),
Some((JavaStr::from_str("cfg"), JavaStr::from_str("foo")))
);
assert_eq!(
JavaStr::from_str("cfg=foo=bar").rsplit_once('='),
Some((JavaStr::from_str("cfg=foo"), JavaStr::from_str("bar")))
);
sourcepub fn rsplit_terminator<P>(&self, pat: P) -> RSplitTerminator<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn rsplit_terminator<P>(&self, pat: P) -> RSplitTerminator<'_, P> ⓘwhere
P: JavaStrPattern,
let v: Vec<&JavaStr> = JavaStr::from_str("A.B.").rsplit_terminator('.').collect();
assert_eq!(v, [JavaStr::from_str("B"), JavaStr::from_str("A")]);
let v: Vec<&JavaStr> = JavaStr::from_str("A..B..").rsplit_terminator(".").collect();
assert_eq!(
v,
[
JavaStr::from_str(""),
JavaStr::from_str("B"),
JavaStr::from_str(""),
JavaStr::from_str("A")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("A.B:C.D")
.rsplit_terminator(&['.', ':'][..])
.collect();
assert_eq!(
v,
[
JavaStr::from_str("D"),
JavaStr::from_str("C"),
JavaStr::from_str("B"),
JavaStr::from_str("A")
]
);
sourcepub fn rsplitn<P>(&self, n: usize, pat: P) -> RSplitN<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn rsplitn<P>(&self, n: usize, pat: P) -> RSplitN<'_, P> ⓘwhere
P: JavaStrPattern,
See str::rsplitn
.
let v: Vec<&JavaStr> = JavaStr::from_str("Mary had a little lamb")
.rsplitn(3, ' ')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("lamb"),
JavaStr::from_str("little"),
JavaStr::from_str("Mary had a")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("lionXXtigerXleopard")
.rsplitn(3, 'X')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("leopard"),
JavaStr::from_str("tiger"),
JavaStr::from_str("lionX")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("lion::tiger::leopard")
.rsplitn(2, "::")
.collect();
assert_eq!(
v,
[
JavaStr::from_str("leopard"),
JavaStr::from_str("lion::tiger")
]
);
sourcepub fn split<P>(&self, pat: P) -> Split<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn split<P>(&self, pat: P) -> Split<'_, P> ⓘwhere
P: JavaStrPattern,
See str::split
.
let v: Vec<&JavaStr> = JavaStr::from_str("Mary had a little lamb")
.split(' ')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("Mary"),
JavaStr::from_str("had"),
JavaStr::from_str("a"),
JavaStr::from_str("little"),
JavaStr::from_str("lamb")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("").split('X').collect();
assert_eq!(v, [JavaStr::from_str("")]);
let v: Vec<&JavaStr> = JavaStr::from_str("lionXXtigerXleopard")
.split('X')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("lion"),
JavaStr::from_str(""),
JavaStr::from_str("tiger"),
JavaStr::from_str("leopard")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("lion::tiger::leopard")
.split("::")
.collect();
assert_eq!(
v,
[
JavaStr::from_str("lion"),
JavaStr::from_str("tiger"),
JavaStr::from_str("leopard")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("abc1def2ghi")
.split(JavaCodePoint::is_numeric)
.collect();
assert_eq!(
v,
[
JavaStr::from_str("abc"),
JavaStr::from_str("def"),
JavaStr::from_str("ghi")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("lionXtigerXleopard")
.split(JavaCodePoint::is_uppercase)
.collect();
assert_eq!(
v,
[
JavaStr::from_str("lion"),
JavaStr::from_str("tiger"),
JavaStr::from_str("leopard")
]
);
sourcepub fn split_ascii_whitespace(&self) -> SplitAsciiWhitespace<'_> ⓘ
pub fn split_ascii_whitespace(&self) -> SplitAsciiWhitespace<'_> ⓘ
See str::split_ascii_whitespace
.
let mut iter = JavaStr::from_str(" Mary had\ta little \n\t lamb").split_ascii_whitespace();
assert_eq!(Some(JavaStr::from_str("Mary")), iter.next());
assert_eq!(Some(JavaStr::from_str("had")), iter.next());
assert_eq!(Some(JavaStr::from_str("a")), iter.next());
assert_eq!(Some(JavaStr::from_str("little")), iter.next());
assert_eq!(Some(JavaStr::from_str("lamb")), iter.next());
assert_eq!(None, iter.next());
sourcepub fn split_at(&self, mid: usize) -> (&JavaStr, &JavaStr)
pub fn split_at(&self, mid: usize) -> (&JavaStr, &JavaStr)
See str::split_at
.
let s = JavaStr::from_str("Per Martin-Löf");
let (first, last) = s.split_at(3);
assert_eq!("Per", first);
assert_eq!(" Martin-Löf", last);
let s = JavaStr::from_str("Per Martin-Löf");
// Should panic
let _ = s.split_at(13);
sourcepub fn split_at_mut(&mut self, mid: usize) -> (&mut JavaStr, &mut JavaStr)
pub fn split_at_mut(&mut self, mid: usize) -> (&mut JavaStr, &mut JavaStr)
See str::split_at_mut
.
let mut s = JavaString::from("Per Martin-Löf");
let s = s.as_mut_java_str();
let (first, last) = s.split_at_mut(3);
assert_eq!("Per", first);
assert_eq!(" Martin-Löf", last);
let mut s = JavaString::from("Per Martin-Löf");
let s = s.as_mut_java_str();
// Should panic
let _ = s.split_at(13);
sourcepub fn split_inclusive<P>(&self, pat: P) -> SplitInclusive<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn split_inclusive<P>(&self, pat: P) -> SplitInclusive<'_, P> ⓘwhere
P: JavaStrPattern,
See str::split_inclusive
.
let v: Vec<&JavaStr> = JavaStr::from_str("Mary had a little lamb\nlittle lamb\nlittle lamb.\n")
.split_inclusive('\n')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("Mary had a little lamb\n"),
JavaStr::from_str("little lamb\n"),
JavaStr::from_str("little lamb.\n")
]
);
sourcepub fn split_once<P>(&self, delimiter: P) -> Option<(&JavaStr, &JavaStr)>where
P: JavaStrPattern,
pub fn split_once<P>(&self, delimiter: P) -> Option<(&JavaStr, &JavaStr)>where
P: JavaStrPattern,
See str::split_once
.
assert_eq!(JavaStr::from_str("cfg").split_once('='), None);
assert_eq!(
JavaStr::from_str("cfg=").split_once('='),
Some((JavaStr::from_str("cfg"), JavaStr::from_str("")))
);
assert_eq!(
JavaStr::from_str("cfg=foo").split_once('='),
Some((JavaStr::from_str("cfg"), JavaStr::from_str("foo")))
);
assert_eq!(
JavaStr::from_str("cfg=foo=bar").split_once('='),
Some((JavaStr::from_str("cfg"), JavaStr::from_str("foo=bar")))
);
sourcepub fn split_terminator<P>(&self, pat: P) -> SplitTerminator<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn split_terminator<P>(&self, pat: P) -> SplitTerminator<'_, P> ⓘwhere
P: JavaStrPattern,
let v: Vec<&JavaStr> = JavaStr::from_str("A.B.").split_terminator('.').collect();
assert_eq!(v, [JavaStr::from_str("A"), JavaStr::from_str("B")]);
let v: Vec<&JavaStr> = JavaStr::from_str("A..B..").split_terminator(".").collect();
assert_eq!(
v,
[
JavaStr::from_str("A"),
JavaStr::from_str(""),
JavaStr::from_str("B"),
JavaStr::from_str("")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("A.B:C.D")
.split_terminator(&['.', ':'][..])
.collect();
assert_eq!(
v,
[
JavaStr::from_str("A"),
JavaStr::from_str("B"),
JavaStr::from_str("C"),
JavaStr::from_str("D")
]
);
sourcepub fn split_whitespace(&self) -> SplitWhitespace<'_> ⓘ
pub fn split_whitespace(&self) -> SplitWhitespace<'_> ⓘ
sourcepub fn splitn<P>(&self, n: usize, pat: P) -> SplitN<'_, P> ⓘwhere
P: JavaStrPattern,
pub fn splitn<P>(&self, n: usize, pat: P) -> SplitN<'_, P> ⓘwhere
P: JavaStrPattern,
See str::splitn
.
let v: Vec<&JavaStr> = JavaStr::from_str("Mary had a little lambda")
.splitn(3, ' ')
.collect();
assert_eq!(
v,
[
JavaStr::from_str("Mary"),
JavaStr::from_str("had"),
JavaStr::from_str("a little lambda")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("lionXXtigerXleopard")
.splitn(3, "X")
.collect();
assert_eq!(
v,
[
JavaStr::from_str("lion"),
JavaStr::from_str(""),
JavaStr::from_str("tigerXleopard")
]
);
let v: Vec<&JavaStr> = JavaStr::from_str("abcXdef").splitn(1, 'X').collect();
assert_eq!(v, [JavaStr::from_str("abcXdef")]);
let v: Vec<&JavaStr> = JavaStr::from_str("").splitn(1, 'X').collect();
assert_eq!(v, [JavaStr::from_str("")]);
sourcepub fn starts_with<P>(&self, pat: P) -> boolwhere
P: JavaStrPattern,
pub fn starts_with<P>(&self, pat: P) -> boolwhere
P: JavaStrPattern,
See str::starts_with
.
let bananas = JavaStr::from_str("bananas");
assert!(bananas.starts_with("bana"));
assert!(!bananas.starts_with("nana"));
sourcepub fn strip_prefix<P>(&self, prefix: P) -> Option<&JavaStr>where
P: JavaStrPattern,
pub fn strip_prefix<P>(&self, prefix: P) -> Option<&JavaStr>where
P: JavaStrPattern,
See str::strip_prefix
.
assert_eq!(
JavaStr::from_str("foo:bar").strip_prefix("foo:"),
Some(JavaStr::from_str("bar"))
);
assert_eq!(JavaStr::from_str("foo:bar").strip_prefix("bar"), None);
assert_eq!(
JavaStr::from_str("foofoo").strip_prefix("foo"),
Some(JavaStr::from_str("foo"))
);
sourcepub fn strip_suffix<P>(&self, suffix: P) -> Option<&JavaStr>where
P: JavaStrPattern,
pub fn strip_suffix<P>(&self, suffix: P) -> Option<&JavaStr>where
P: JavaStrPattern,
See str::strip_suffix
.
assert_eq!(
JavaStr::from_str("bar:foo").strip_suffix(":foo"),
Some(JavaStr::from_str("bar"))
);
assert_eq!(JavaStr::from_str("bar:foo").strip_suffix("bar"), None);
assert_eq!(
JavaStr::from_str("foofoo").strip_suffix("foo"),
Some(JavaStr::from_str("foo"))
);
sourcepub fn to_ascii_lowercase(&self) -> JavaString
pub fn to_ascii_lowercase(&self) -> JavaString
sourcepub fn to_ascii_uppercase(&self) -> JavaString
pub fn to_ascii_uppercase(&self) -> JavaString
sourcepub fn to_lowercase(&self) -> JavaString
pub fn to_lowercase(&self) -> JavaString
See str::to_lowercase
.
let s = JavaStr::from_str("HELLO");
assert_eq!("hello", s.to_lowercase());
let odysseus = JavaStr::from_str("ὈΔΥΣΣΕΎΣ");
assert_eq!("ὀδυσσεύς", odysseus.to_lowercase());
let s = JavaString::from("Hello ")
+ JavaString::from(JavaCodePoint::from_u32(0xd800).unwrap()).as_java_str()
+ JavaStr::from_str(" World!");
let expected = JavaString::from("hello ")
+ JavaString::from(JavaCodePoint::from_u32(0xd800).unwrap()).as_java_str()
+ JavaStr::from_str(" world!");
assert_eq!(expected, s.to_lowercase());
sourcepub fn to_uppercase(&self) -> JavaString
pub fn to_uppercase(&self) -> JavaString
See str::to_uppercase
.
let s = JavaStr::from_str("hello");
assert_eq!("HELLO", s.to_uppercase());
let s = JavaStr::from_str("tschüß");
assert_eq!("TSCHÜSS", s.to_uppercase());
let s = JavaString::from("Hello ")
+ JavaString::from(JavaCodePoint::from_u32(0xd800).unwrap()).as_java_str()
+ JavaStr::from_str(" World!");
let expected = JavaString::from("HELLO ")
+ JavaString::from(JavaCodePoint::from_u32(0xd800).unwrap()).as_java_str()
+ JavaStr::from_str(" WORLD!");
assert_eq!(expected, s.to_uppercase());
sourcepub fn trim_end(&self) -> &JavaStr
pub fn trim_end(&self) -> &JavaStr
See str::trim_end
.
sourcepub fn trim_end_matches<P>(&self, pat: P) -> &JavaStrwhere
P: JavaStrPattern,
pub fn trim_end_matches<P>(&self, pat: P) -> &JavaStrwhere
P: JavaStrPattern,
assert_eq!(
JavaStr::from_str("11foo1bar11").trim_end_matches('1'),
"11foo1bar"
);
assert_eq!(
JavaStr::from_str("123foo1bar123").trim_end_matches(JavaCodePoint::is_numeric),
"123foo1bar"
);
let x: &[_] = &['1', '2'];
assert_eq!(
JavaStr::from_str("12foo1bar12").trim_end_matches(x),
"12foo1bar"
);
sourcepub fn trim_matches<P>(&self, pat: P) -> &JavaStrwhere
P: JavaStrPattern,
pub fn trim_matches<P>(&self, pat: P) -> &JavaStrwhere
P: JavaStrPattern,
See str::trim_matches
.
assert_eq!(
JavaStr::from_str("11foo1bar11").trim_matches('1'),
"foo1bar"
);
assert_eq!(
JavaStr::from_str("123foo1bar123").trim_matches(JavaCodePoint::is_numeric),
"foo1bar"
);
let x: &[_] = &['1', '2'];
assert_eq!(JavaStr::from_str("12foo1bar12").trim_matches(x), "foo1bar");
sourcepub fn trim_start(&self) -> &JavaStr
pub fn trim_start(&self) -> &JavaStr
See str::trim_start
.
sourcepub fn trim_start_matches<P>(&self, pat: P) -> &JavaStrwhere
P: JavaStrPattern,
pub fn trim_start_matches<P>(&self, pat: P) -> &JavaStrwhere
P: JavaStrPattern,
assert_eq!(
JavaStr::from_str("11foo1bar11").trim_start_matches('1'),
"foo1bar11"
);
assert_eq!(
JavaStr::from_str("123foo1bar123").trim_start_matches(JavaCodePoint::is_numeric),
"foo1bar123"
);
let x: &[_] = &['1', '2'];
assert_eq!(
JavaStr::from_str("12foo1bar12").trim_start_matches(x),
"foo1bar12"
);
Trait Implementations§
source§impl Add<&JavaStr> for JavaString
impl Add<&JavaStr> for JavaString
source§impl<'a> AddAssign<&JavaStr> for Cow<'a, JavaStr>
impl<'a> AddAssign<&JavaStr> for Cow<'a, JavaStr>
source§fn add_assign(&mut self, rhs: &JavaStr)
fn add_assign(&mut self, rhs: &JavaStr)
+=
operation. Read moresource§impl AddAssign<&JavaStr> for JavaString
impl AddAssign<&JavaStr> for JavaString
source§fn add_assign(&mut self, rhs: &JavaStr)
fn add_assign(&mut self, rhs: &JavaStr)
+=
operation. Read moresource§impl AsMut<JavaStr> for JavaString
impl AsMut<JavaStr> for JavaString
source§impl AsRef<JavaStr> for JavaString
impl AsRef<JavaStr> for JavaString
source§impl Borrow<JavaStr> for JavaString
impl Borrow<JavaStr> for JavaString
source§impl BorrowMut<JavaStr> for JavaString
impl BorrowMut<JavaStr> for JavaString
source§fn borrow_mut(&mut self) -> &mut JavaStr
fn borrow_mut(&mut self) -> &mut JavaStr
source§impl<'de: 'a, 'a> Deserialize<'de> for &'a JavaStr
impl<'de: 'a, 'a> Deserialize<'de> for &'a JavaStr
source§fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>where
D: Deserializer<'de>,
source§impl<'a> Extend<&'a JavaStr> for JavaString
impl<'a> Extend<&'a JavaStr> for JavaString
source§fn extend<T: IntoIterator<Item = &'a JavaStr>>(&mut self, iter: T)
fn extend<T: IntoIterator<Item = &'a JavaStr>>(&mut self, iter: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)