mirror of
https://github.com/rtic-rs/rtic.git
synced 2024-12-02 08:24:33 +01:00
1460 lines
286 KiB
HTML
1460 lines
286 KiB
HTML
|
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A fixed capacity `String`"><title>String in heapless - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-46f98efaafac5295.ttf.woff2,FiraSans-Regular-018c141bf0843ffd.woff2,FiraSans-Medium-8f9a781e4970d388.woff2,SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2,SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-492a78a4a87dcc01.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="heapless" data-themes="" data-resource-suffix="" data-rustdoc-version="1.82.0 (f6e511eec 2024-10-15)" data-channel="1.82.0" data-search-js="search-a99f1315e7cc5121.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-118b08c4c78b968e.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-921df33f47b8780c.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-3b12f09e550e0385.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../heapless/index.html">heapless</a><span class="version">0.7.17</span></h2></div><h2 class="location"><a href="#">String</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.as_mut_str">as_mut_str</a></li><li><a href="#method.as_mut_vec">as_mut_vec</a></li><li><a href="#method.as_str">as_str</a></li><li><a href="#method.capacity">capacity</a></li><li><a href="#method.clear">clear</a></li><li><a href="#method.into_bytes">into_bytes</a></li><li><a href="#method.new">new</a></li><li><a href="#method.pop">pop</a></li><li><a href="#method.push">push</a></li><li><a href="#method.push_str">push_str</a></li><li><a href="#method.truncate">truncate</a></li></ul><h3><a href="#deref-methods-str">Methods from Deref<<wbr>Target=str></a></h3><ul class="block deref-methods"><li><a href="#method.as_ascii">as_ascii</a></li><li><a href="#method.as_bytes">as_bytes</a></li><li><a href="#method.as_bytes_mut">as_bytes_mut</a></li><li><a href="#method.as_mut_ptr">as_mut_ptr</a></li><li><a href="#method.as_ptr">as_ptr</a></li><li><a href="#method.bytes">bytes</a></li><li><a href="#method.ceil_char_boundary">ceil_char_boundary</a></li><li><a href="#method.char_indices">char_indices</a></li><li><a href="#method.chars">chars</a></li><li><a href="#method.contains">contains</a></li><li><a href="#method.encode_utf16">encode_utf16</a></li><li><a href="#method.ends_with">ends_with</a></li><li><a href="#method.eq_ignore_ascii_case">eq_ignore_ascii_case</a></li><li><a href="#method.escape_debug">escape_debug</a></li><li><a href="#method.escape_default">escape_default</a></li><li><a href="#method.escape_unicode">escape_unicode</a></li><li><a href="#method.find">find</a></li><li><a href="#method.floor_char_boundary">floor_char_boundary</a></li><li><a href="#method.get">get</a></li><li><a href="#method.get_mut">get_mut</a></li><li><a href="#method.get_unchecked">get_unchecked</a></li><li><a href="#method.get_unchecked_mut">get_unchecked_mut</a></li><li><a href="#method.is_ascii">is_ascii</a></li><li><a href="#me
|
|||
|
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#12-284">source</a><a href="#impl-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#29-31">source</a><h4 class="code-header">pub const fn <a href="#method.new" class="fn">new</a>() -> Self</h4></section></summary><div class="docblock"><p>Constructs a new, empty <code>String</code> with a fixed capacity of <code>N</code> bytes</p>
|
|||
|
<h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="comment">// allocate the string on the stack
|
|||
|
</span><span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">4</span>> = String::new();
|
|||
|
|
|||
|
<span class="comment">// allocate the string in a static variable
|
|||
|
</span><span class="kw">static </span><span class="kw-2">mut </span>S: String<<span class="number">4</span>> = String::new();</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.into_bytes" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#51-53">source</a><h4 class="code-header">pub fn <a href="#method.into_bytes" class="fn">into_bytes</a>(self) -> <a class="struct" href="struct.Vec.html" title="struct heapless::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>, N></h4></section></summary><div class="docblock"><p>Converts a <code>String</code> into a byte vector.</p>
|
|||
|
<p>This consumes the <code>String</code>, so we do not need to copy its contents.</p>
|
|||
|
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span>s: String<<span class="number">4</span>> = String::from(<span class="string">"ab"</span>);
|
|||
|
<span class="kw">let </span>b = s.into_bytes();
|
|||
|
<span class="macro">assert!</span>(b.len() == <span class="number">2</span>);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span>[<span class="string">'a' </span><span class="kw">as </span>u8, <span class="string">'b' </span><span class="kw">as </span>u8], <span class="kw-2">&</span>b[..]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_str" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#71-73">source</a><h4 class="code-header">pub fn <a href="#method.as_str" class="fn">as_str</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Extracts a string slice containing the entire string.</p>
|
|||
|
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">4</span>> = String::from(<span class="string">"ab"</span>);
|
|||
|
<span class="macro">assert!</span>(s.as_str() == <span class="string">"ab"</span>);
|
|||
|
|
|||
|
<span class="kw">let </span>_s = s.as_str();
|
|||
|
<span class="comment">// s.push('c'); // <- cannot borrow `s` as mutable because it is also borrowed as immutable</span></code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_mut_str" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#89-91">source</a><h4 class="code-header">pub fn <a href="#method.as_mut_str" class="fn">as_mut_str</a>(&mut self) -> &mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Converts a <code>String</code> into a mutable string slice.</p>
|
|||
|
<h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">4</span>> = String::from(<span class="string">"ab"</span>);
|
|||
|
<span class="kw">let </span>s = s.as_mut_str();
|
|||
|
s.make_ascii_uppercase();</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_mut_vec" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#117-119">source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_mut_vec" class="fn">as_mut_vec</a>(&mut self) -> &mut <a class="struct" href="struct.Vec.html" title="struct heapless::Vec">Vec</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>, N></h4></section></summary><div class="docblock"><p>Returns a mutable reference to the contents of this <code>String</code>.</p>
|
|||
|
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
|
|||
|
<p>This function is unsafe because it does not check that the bytes passed
|
|||
|
to it are valid UTF-8. If this constraint is violated, it may cause
|
|||
|
memory unsafety issues with future users of the <code>String</code>, as the rest of
|
|||
|
the library assumes that <code>String</code>s are valid UTF-8.</p>
|
|||
|
<h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = String::from(<span class="string">"hello"</span>);
|
|||
|
|
|||
|
<span class="kw">unsafe </span>{
|
|||
|
<span class="kw">let </span>vec = s.as_mut_vec();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span>[<span class="number">104</span>, <span class="number">101</span>, <span class="number">108</span>, <span class="number">108</span>, <span class="number">111</span>][..], <span class="kw-2">&</span>vec[..]);
|
|||
|
|
|||
|
vec.reverse();
|
|||
|
}
|
|||
|
<span class="macro">assert_eq!</span>(s, <span class="string">"olleh"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.push_str" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#139-141">source</a><h4 class="code-header">pub fn <a href="#method.push_str" class="fn">push_str</a>(&mut self, string: &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>, <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>></h4></section></summary><div class="docblock"><p>Appends a given string slice onto the end of this <code>String</code>.</p>
|
|||
|
<h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">8</span>> = String::from(<span class="string">"foo"</span>);
|
|||
|
|
|||
|
<span class="macro">assert!</span>(s.push_str(<span class="string">"bar"</span>).is_ok());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"foobar"</span>, s);
|
|||
|
|
|||
|
<span class="macro">assert!</span>(s.push_str(<span class="string">"tender"</span>).is_err());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.capacity" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#156-158">source</a><h4 class="code-header">pub fn <a href="#method.capacity" class="fn">capacity</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the maximum number of elements the String can hold</p>
|
|||
|
<h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">4</span>> = String::new();
|
|||
|
<span class="macro">assert!</span>(s.capacity() == <span class="number">4</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.push" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#182-189">source</a><h4 class="code-header">pub fn <a href="#method.push" class="fn">push</a>(&mut self, c: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html">char</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>, <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>></h4></section></summary><div class="docblock"><p>Appends the given <a href="../../std/primitive.char.html"><code>char</code></a> to the end of this <code>String</code>.</p>
|
|||
|
<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">8</span>> = String::from(<span class="string">"abc"</span>);
|
|||
|
|
|||
|
s.push(<span class="string">'1'</span>).unwrap();
|
|||
|
s.push(<span class="string">'2'</span>).unwrap();
|
|||
|
s.push(<span class="string">'3'</span>).unwrap();
|
|||
|
|
|||
|
<span class="macro">assert!</span>(<span class="string">"abc123" </span>== s.as_str());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"abc123"</span>, s);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.truncate" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#219-224">source</a><h4 class="code-header">pub fn <a href="#method.truncate" class="fn">truncate</a>(&mut self, new_len: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Shortens this <code>String</code> to the specified length.</p>
|
|||
|
<p>If <code>new_len</code> is greater than the string’s current length, this has no
|
|||
|
effect.</p>
|
|||
|
<p>Note that this method has no effect on the allocated capacity
|
|||
|
of the string</p>
|
|||
|
<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
|
|||
|
<p>Panics if <code>new_len</code> does not lie on a <a href="../../std/primitive.char.html"><code>char</code></a> boundary.</p>
|
|||
|
<h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">8</span>> = String::from(<span class="string">"hello"</span>);
|
|||
|
|
|||
|
s.truncate(<span class="number">2</span>);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"he"</span>, s);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.pop" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#247-258">source</a><h4 class="code-header">pub fn <a href="#method.pop" class="fn">pop</a>(&mut self) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html">char</a>></h4></section></summary><div class="docblock"><p>Removes the last character from the string buffer and returns it.</p>
|
|||
|
<p>Returns <a href="../../std/option/enum.Option.html#variant.None"><code>None</code></a> if this <code>String</code> is empty.</p>
|
|||
|
<h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">8</span>> = String::from(<span class="string">"foo"</span>);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.pop(), <span class="prelude-val">Some</span>(<span class="string">'o'</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.pop(), <span class="prelude-val">Some</span>(<span class="string">'o'</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.pop(), <span class="prelude-val">Some</span>(<span class="string">'f'</span>));
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.pop(), <span class="prelude-val">None</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.clear" class="method"><a class="src rightside" href="../src/heapless/string.rs.html#281-283">source</a><h4 class="code-header">pub fn <a href="#method.clear" class="fn">clear</a>(&mut self)</h4></section></summary><div class="docblock"><p>Truncates this <code>String</code>, removing all contents.</p>
|
|||
|
<p>While this means the <code>String</code> will have a length of zero, it does not
|
|||
|
touch its capacity.</p>
|
|||
|
<h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>heapless::String;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>s: String<<span class="number">8</span>> = String::from(<span class="string">"foo"</span>);
|
|||
|
|
|||
|
s.clear();
|
|||
|
|
|||
|
<span class="macro">assert!</span>(s.is_empty());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="number">0</span>, s.len());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="number">8</span>, s.capacity());</code></pre></div>
|
|||
|
</div></details></div></details></div><h2 id="deref-methods-str" class="section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a><Target = <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>></span><a href="#deref-methods-str" class="anchor">§</a></h2><div id="deref-methods-str-1" class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.len" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#139">source</a></span><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the length of <code>self</code>.</p>
|
|||
|
<p>This length is in bytes, not <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s or graphemes. In other words,
|
|||
|
it might not be what a human considers the length of the string.</p>
|
|||
|
<h5 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>len = <span class="string">"foo"</span>.len();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="number">3</span>, len);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"ƒoo"</span>.len(), <span class="number">4</span>); <span class="comment">// fancy f!
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="string">"ƒoo"</span>.chars().count(), <span class="number">3</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_empty" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#158">source</a></span><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if <code>self</code> has a length of zero bytes.</p>
|
|||
|
<h5 id="examples-12"><a class="doc-anchor" href="#examples-12">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">""</span>;
|
|||
|
<span class="macro">assert!</span>(s.is_empty());
|
|||
|
|
|||
|
<span class="kw">let </span>s = <span class="string">"not empty"</span>;
|
|||
|
<span class="macro">assert!</span>(!s.is_empty());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_char_boundary" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.9.0">1.9.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#188">source</a></span><h4 class="code-header">pub fn <a href="#method.is_char_boundary" class="fn">is_char_boundary</a>(&self, index: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks that <code>index</code>-th byte is the first byte in a UTF-8 code point
|
|||
|
sequence or the end of the string.</p>
|
|||
|
<p>The start and end of the string (when <code>index == self.len()</code>) are
|
|||
|
considered to be boundaries.</p>
|
|||
|
<p>Returns <code>false</code> if <code>index</code> is greater than <code>self.len()</code>.</p>
|
|||
|
<h5 id="examples-13"><a class="doc-anchor" href="#examples-13">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard"</span>;
|
|||
|
<span class="macro">assert!</span>(s.is_char_boundary(<span class="number">0</span>));
|
|||
|
<span class="comment">// start of `老`
|
|||
|
</span><span class="macro">assert!</span>(s.is_char_boundary(<span class="number">6</span>));
|
|||
|
<span class="macro">assert!</span>(s.is_char_boundary(s.len()));
|
|||
|
|
|||
|
<span class="comment">// second byte of `ö`
|
|||
|
</span><span class="macro">assert!</span>(!s.is_char_boundary(<span class="number">2</span>));
|
|||
|
|
|||
|
<span class="comment">// third byte of `老`
|
|||
|
</span><span class="macro">assert!</span>(!s.is_char_boundary(<span class="number">8</span>));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.floor_char_boundary" class="method"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#235">source</a><h4 class="code-header">pub fn <a href="#method.floor_char_boundary" class="fn">floor_char_boundary</a>(&self, index: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>round_char_boundary</code>)</span></div></span></summary><div class="docblock"><p>Finds the closest <code>x</code> not exceeding <code>index</code> where <code>is_char_boundary(x)</code> is <code>true</code>.</p>
|
|||
|
<p>This method can help you truncate a string so that it’s still valid UTF-8, but doesn’t
|
|||
|
exceed a given number of bytes. Note that this is done purely at the character level
|
|||
|
and can still visually split graphemes, even though the underlying characters aren’t
|
|||
|
split. For example, the emoji 🧑🔬 (scientist) could be split so that the string only
|
|||
|
includes 🧑 (person) instead.</p>
|
|||
|
<h5 id="examples-14"><a class="doc-anchor" href="#examples-14">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(round_char_boundary)]
|
|||
|
</span><span class="kw">let </span>s = <span class="string">"❤️🧡💛💚💙💜"</span>;
|
|||
|
<span class="macro">assert_eq!</span>(s.len(), <span class="number">26</span>);
|
|||
|
<span class="macro">assert!</span>(!s.is_char_boundary(<span class="number">13</span>));
|
|||
|
|
|||
|
<span class="kw">let </span>closest = s.floor_char_boundary(<span class="number">13</span>);
|
|||
|
<span class="macro">assert_eq!</span>(closest, <span class="number">10</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span>s[..closest], <span class="string">"❤️🧡"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.ceil_char_boundary" class="method"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#273">source</a><h4 class="code-header">pub fn <a href="#method.ceil_char_boundary" class="fn">ceil_char_boundary</a>(&self, index: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>round_char_boundary</code>)</span></div></span></summary><div class="docblock"><p>Finds the closest <code>x</code> not below <code>index</code> where <code>is_char_boundary(x)</code> is <code>true</code>.</p>
|
|||
|
<p>If <code>index</code> is greater than the length of the string, this returns the length of the string.</p>
|
|||
|
<p>This method is the natural complement to <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.floor_char_boundary" title="method str::floor_char_boundary"><code>floor_char_boundary</code></a>. See that method
|
|||
|
for more details.</p>
|
|||
|
<h5 id="examples-15"><a class="doc-anchor" href="#examples-15">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(round_char_boundary)]
|
|||
|
</span><span class="kw">let </span>s = <span class="string">"❤️🧡💛💚💙💜"</span>;
|
|||
|
<span class="macro">assert_eq!</span>(s.len(), <span class="number">26</span>);
|
|||
|
<span class="macro">assert!</span>(!s.is_char_boundary(<span class="number">13</span>));
|
|||
|
|
|||
|
<span class="kw">let </span>closest = s.ceil_char_boundary(<span class="number">13</span>);
|
|||
|
<span class="macro">assert_eq!</span>(closest, <span class="number">14</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="kw-2">&</span>s[..closest], <span class="string">"❤️🧡💛"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_bytes" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#299">source</a></span><h4 class="code-header">pub fn <a href="#method.as_bytes" class="fn">as_bytes</a>(&self) -> &[<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>]</h4></section></summary><div class="docblock"><p>Converts a string slice to a byte slice. To convert the byte slice back
|
|||
|
into a string slice, use the <a href="https://doc.rust-lang.org/1.82.0/core/str/converts/fn.from_utf8.html" title="fn core::str::converts::from_utf8"><code>from_utf8</code></a> function.</p>
|
|||
|
<h5 id="examples-16"><a class="doc-anchor" href="#examples-16">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bytes = <span class="string">"bors"</span>.as_bytes();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">b"bors"</span>, bytes);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_bytes_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.20.0">1.20.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#343">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.as_bytes_mut" class="fn">as_bytes_mut</a>(&mut self) -> &mut [<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>]</h4></section></summary><div class="docblock"><p>Converts a mutable string slice to a mutable byte slice.</p>
|
|||
|
<h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
|
|||
|
<p>The caller must ensure that the content of the slice is valid UTF-8
|
|||
|
before the borrow ends and the underlying <code>str</code> is used.</p>
|
|||
|
<p>Use of a <code>str</code> whose contents are not valid UTF-8 is undefined behavior.</p>
|
|||
|
<h5 id="examples-17"><a class="doc-anchor" href="#examples-17">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = String::from(<span class="string">"Hello"</span>);
|
|||
|
<span class="kw">let </span>bytes = <span class="kw">unsafe </span>{ s.as_bytes_mut() };
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">b"Hello"</span>, bytes);</code></pre></div>
|
|||
|
<p>Mutability:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = String::from(<span class="string">"🗻∈🌏"</span>);
|
|||
|
|
|||
|
<span class="kw">unsafe </span>{
|
|||
|
<span class="kw">let </span>bytes = s.as_bytes_mut();
|
|||
|
|
|||
|
bytes[<span class="number">0</span>] = <span class="number">0xF0</span>;
|
|||
|
bytes[<span class="number">1</span>] = <span class="number">0x9F</span>;
|
|||
|
bytes[<span class="number">2</span>] = <span class="number">0x8D</span>;
|
|||
|
bytes[<span class="number">3</span>] = <span class="number">0x94</span>;
|
|||
|
}
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"🍔∈🌏"</span>, s);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ptr" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#373">source</a></span><h4 class="code-header">pub fn <a href="#method.as_ptr" class="fn">as_ptr</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.pointer.html">*const </a><a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a></h4></section></summary><div class="docblock"><p>Converts a string slice to a raw pointer.</p>
|
|||
|
<p>As string slices are a slice of bytes, the raw pointer points to a
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html" title="primitive u8"><code>u8</code></a>. This pointer will be pointing to the first byte of the string
|
|||
|
slice.</p>
|
|||
|
<p>The caller must ensure that the returned pointer is never written to.
|
|||
|
If you need to mutate the contents of the string slice, use <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.as_mut_ptr" title="method str::as_mut_ptr"><code>as_mut_ptr</code></a>.</p>
|
|||
|
<h5 id="examples-18"><a class="doc-anchor" href="#examples-18">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Hello"</span>;
|
|||
|
<span class="kw">let </span>ptr = s.as_ptr();</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_mut_ptr" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.36.0">1.36.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#389">source</a></span><h4 class="code-header">pub fn <a href="#method.as_mut_ptr" class="fn">as_mut_ptr</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a></h4></section></summary><div class="docblock"><p>Converts a mutable string slice to a raw pointer.</p>
|
|||
|
<p>As string slices are a slice of bytes, the raw pointer points to a
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html" title="primitive u8"><code>u8</code></a>. This pointer will be pointing to the first byte of the string
|
|||
|
slice.</p>
|
|||
|
<p>It is your responsibility to make sure that the string slice only gets
|
|||
|
modified in a way that it remains valid UTF-8.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.get" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.20.0">1.20.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#414">source</a></span><h4 class="code-header">pub fn <a href="#method.get" class="fn">get</a><I>(&self, i: I) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<I as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>><div class="where">where
|
|||
|
I: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>,</div></h4></section></summary><div class="docblock"><p>Returns a subslice of <code>str</code>.</p>
|
|||
|
<p>This is the non-panicking alternative to indexing the <code>str</code>. Returns
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> whenever equivalent indexing operation would panic.</p>
|
|||
|
<h5 id="examples-19"><a class="doc-anchor" href="#examples-19">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = String::from(<span class="string">"🗻∈🌏"</span>);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"🗻"</span>), v.get(<span class="number">0</span>..<span class="number">4</span>));
|
|||
|
|
|||
|
<span class="comment">// indices not on UTF-8 sequence boundaries
|
|||
|
</span><span class="macro">assert!</span>(v.get(<span class="number">1</span>..).is_none());
|
|||
|
<span class="macro">assert!</span>(v.get(..<span class="number">8</span>).is_none());
|
|||
|
|
|||
|
<span class="comment">// out of bounds
|
|||
|
</span><span class="macro">assert!</span>(v.get(..<span class="number">42</span>).is_none());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.20.0">1.20.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#446">source</a></span><h4 class="code-header">pub fn <a href="#method.get_mut" class="fn">get_mut</a><I>(
|
|||
|
&mut self,
|
|||
|
i: I,
|
|||
|
) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&mut <I as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>><div class="where">where
|
|||
|
I: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>,</div></h4></section></summary><div class="docblock"><p>Returns a mutable subslice of <code>str</code>.</p>
|
|||
|
<p>This is the non-panicking alternative to indexing the <code>str</code>. Returns
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> whenever equivalent indexing operation would panic.</p>
|
|||
|
<h5 id="examples-20"><a class="doc-anchor" href="#examples-20">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = String::from(<span class="string">"hello"</span>);
|
|||
|
<span class="comment">// correct length
|
|||
|
</span><span class="macro">assert!</span>(v.get_mut(<span class="number">0</span>..<span class="number">5</span>).is_some());
|
|||
|
<span class="comment">// out of bounds
|
|||
|
</span><span class="macro">assert!</span>(v.get_mut(..<span class="number">42</span>).is_none());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"he"</span>), v.get_mut(<span class="number">0</span>..<span class="number">2</span>).map(|v| <span class="kw-2">&*</span>v));
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"hello"</span>, v);
|
|||
|
{
|
|||
|
<span class="kw">let </span>s = v.get_mut(<span class="number">0</span>..<span class="number">2</span>);
|
|||
|
<span class="kw">let </span>s = s.map(|s| {
|
|||
|
s.make_ascii_uppercase();
|
|||
|
<span class="kw-2">&*</span>s
|
|||
|
});
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"HE"</span>), s);
|
|||
|
}
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"HEllo"</span>, v);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.20.0">1.20.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#478">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked" class="fn">get_unchecked</a><I>(&self, i: I) -> &<I as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a><div class="where">where
|
|||
|
I: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>,</div></h4></section></summary><div class="docblock"><p>Returns an unchecked subslice of <code>str</code>.</p>
|
|||
|
<p>This is the unchecked alternative to indexing the <code>str</code>.</p>
|
|||
|
<h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
|
|||
|
<p>Callers of this function are responsible that these preconditions are
|
|||
|
satisfied:</p>
|
|||
|
<ul>
|
|||
|
<li>The starting index must not exceed the ending index;</li>
|
|||
|
<li>Indexes must be within bounds of the original slice;</li>
|
|||
|
<li>Indexes must lie on UTF-8 sequence boundaries.</li>
|
|||
|
</ul>
|
|||
|
<p>Failing that, the returned string slice may reference invalid memory or
|
|||
|
violate the invariants communicated by the <code>str</code> type.</p>
|
|||
|
<h5 id="examples-21"><a class="doc-anchor" href="#examples-21">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="string">"🗻∈🌏"</span>;
|
|||
|
<span class="kw">unsafe </span>{
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"🗻"</span>, v.get_unchecked(<span class="number">0</span>..<span class="number">4</span>));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"∈"</span>, v.get_unchecked(<span class="number">4</span>..<span class="number">7</span>));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"🌏"</span>, v.get_unchecked(<span class="number">7</span>..<span class="number">11</span>));
|
|||
|
}</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_unchecked_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.20.0">1.20.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#513">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked_mut" class="fn">get_unchecked_mut</a><I>(
|
|||
|
&mut self,
|
|||
|
i: I,
|
|||
|
) -> &mut <I as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a><div class="where">where
|
|||
|
I: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>>,</div></h4></section></summary><div class="docblock"><p>Returns a mutable, unchecked subslice of <code>str</code>.</p>
|
|||
|
<p>This is the unchecked alternative to indexing the <code>str</code>.</p>
|
|||
|
<h5 id="safety-3"><a class="doc-anchor" href="#safety-3">§</a>Safety</h5>
|
|||
|
<p>Callers of this function are responsible that these preconditions are
|
|||
|
satisfied:</p>
|
|||
|
<ul>
|
|||
|
<li>The starting index must not exceed the ending index;</li>
|
|||
|
<li>Indexes must be within bounds of the original slice;</li>
|
|||
|
<li>Indexes must lie on UTF-8 sequence boundaries.</li>
|
|||
|
</ul>
|
|||
|
<p>Failing that, the returned string slice may reference invalid memory or
|
|||
|
violate the invariants communicated by the <code>str</code> type.</p>
|
|||
|
<h5 id="examples-22"><a class="doc-anchor" href="#examples-22">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = String::from(<span class="string">"🗻∈🌏"</span>);
|
|||
|
<span class="kw">unsafe </span>{
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"🗻"</span>, v.get_unchecked_mut(<span class="number">0</span>..<span class="number">4</span>));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"∈"</span>, v.get_unchecked_mut(<span class="number">4</span>..<span class="number">7</span>));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"🌏"</span>, v.get_unchecked_mut(<span class="number">7</span>..<span class="number">11</span>));
|
|||
|
}</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.slice_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#564">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.slice_unchecked" class="fn">slice_unchecked</a>(&self, begin: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, end: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.29.0: use <code>get_unchecked(begin..end)</code> instead</span></div></span></summary><div class="docblock"><p>Creates a string slice from another string slice, bypassing safety
|
|||
|
checks.</p>
|
|||
|
<p>This is generally not recommended, use with caution! For a safe
|
|||
|
alternative see <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html" title="primitive str"><code>str</code></a> and <a href="https://doc.rust-lang.org/1.82.0/core/ops/index/trait.Index.html" title="trait core::ops::index::Index"><code>Index</code></a>.</p>
|
|||
|
<p>This new slice goes from <code>begin</code> to <code>end</code>, including <code>begin</code> but
|
|||
|
excluding <code>end</code>.</p>
|
|||
|
<p>To get a mutable string slice instead, see the
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.slice_mut_unchecked" title="method str::slice_mut_unchecked"><code>slice_mut_unchecked</code></a> method.</p>
|
|||
|
<h5 id="safety-4"><a class="doc-anchor" href="#safety-4">§</a>Safety</h5>
|
|||
|
<p>Callers of this function are responsible that three preconditions are
|
|||
|
satisfied:</p>
|
|||
|
<ul>
|
|||
|
<li><code>begin</code> must not exceed <code>end</code>.</li>
|
|||
|
<li><code>begin</code> and <code>end</code> must be byte positions within the string slice.</li>
|
|||
|
<li><code>begin</code> and <code>end</code> must lie on UTF-8 sequence boundaries.</li>
|
|||
|
</ul>
|
|||
|
<h5 id="examples-23"><a class="doc-anchor" href="#examples-23">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard"</span>;
|
|||
|
|
|||
|
<span class="kw">unsafe </span>{
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"Löwe 老虎 Léopard"</span>, s.slice_unchecked(<span class="number">0</span>, <span class="number">21</span>));
|
|||
|
}
|
|||
|
|
|||
|
<span class="kw">let </span>s = <span class="string">"Hello, world!"</span>;
|
|||
|
|
|||
|
<span class="kw">unsafe </span>{
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"world"</span>, s.slice_unchecked(<span class="number">7</span>, <span class="number">12</span>));
|
|||
|
}</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.slice_mut_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#598">source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.slice_mut_unchecked" class="fn">slice_mut_unchecked</a>(
|
|||
|
&mut self,
|
|||
|
begin: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>,
|
|||
|
end: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>,
|
|||
|
) -> &mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.29.0: use <code>get_unchecked_mut(begin..end)</code> instead</span></div></span></summary><div class="docblock"><p>Creates a string slice from another string slice, bypassing safety
|
|||
|
checks.</p>
|
|||
|
<p>This is generally not recommended, use with caution! For a safe
|
|||
|
alternative see <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html" title="primitive str"><code>str</code></a> and <a href="https://doc.rust-lang.org/1.82.0/core/ops/index/trait.IndexMut.html" title="trait core::ops::index::IndexMut"><code>IndexMut</code></a>.</p>
|
|||
|
<p>This new slice goes from <code>begin</code> to <code>end</code>, including <code>begin</code> but
|
|||
|
excluding <code>end</code>.</p>
|
|||
|
<p>To get an immutable string slice instead, see the
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.slice_unchecked" title="method str::slice_unchecked"><code>slice_unchecked</code></a> method.</p>
|
|||
|
<h5 id="safety-5"><a class="doc-anchor" href="#safety-5">§</a>Safety</h5>
|
|||
|
<p>Callers of this function are responsible that three preconditions are
|
|||
|
satisfied:</p>
|
|||
|
<ul>
|
|||
|
<li><code>begin</code> must not exceed <code>end</code>.</li>
|
|||
|
<li><code>begin</code> and <code>end</code> must be byte positions within the string slice.</li>
|
|||
|
<li><code>begin</code> and <code>end</code> must lie on UTF-8 sequence boundaries.</li>
|
|||
|
</ul>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.4.0">1.4.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#637">source</a></span><h4 class="code-header">pub fn <a href="#method.split_at" class="fn">split_at</a>(&self, mid: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> (&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>, &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>)</h4></section></summary><div class="docblock"><p>Divides one string slice into two at an index.</p>
|
|||
|
<p>The argument, <code>mid</code>, should be a byte offset from the start of the
|
|||
|
string. It must also be on the boundary of a UTF-8 code point.</p>
|
|||
|
<p>The two slices returned go from the start of the string slice to <code>mid</code>,
|
|||
|
and from <code>mid</code> to the end of the string slice.</p>
|
|||
|
<p>To get mutable string slices instead, see the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_at_mut" title="method str::split_at_mut"><code>split_at_mut</code></a>
|
|||
|
method.</p>
|
|||
|
<h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
|
|||
|
<p>Panics if <code>mid</code> is not on a UTF-8 code point boundary, or if it is past
|
|||
|
the end of the last code point of the string slice. For a non-panicking
|
|||
|
alternative see <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_at_checked" title="method str::split_at_checked"><code>split_at_checked</code></a>.</p>
|
|||
|
<h5 id="examples-24"><a class="doc-anchor" href="#examples-24">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Per Martin-Löf"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span>(first, last) = s.split_at(<span class="number">3</span>);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"Per"</span>, first);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" Martin-Löf"</span>, last);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.4.0">1.4.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#677">source</a></span><h4 class="code-header">pub fn <a href="#method.split_at_mut" class="fn">split_at_mut</a>(&mut self, mid: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> (&mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>, &mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>)</h4></section></summary><div class="docblock"><p>Divides one mutable string slice into two at an index.</p>
|
|||
|
<p>The argument, <code>mid</code>, should be a byte offset from the start of the
|
|||
|
string. It must also be on the boundary of a UTF-8 code point.</p>
|
|||
|
<p>The two slices returned go from the start of the string slice to <code>mid</code>,
|
|||
|
and from <code>mid</code> to the end of the string slice.</p>
|
|||
|
<p>To get immutable string slices instead, see the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_at" title="method str::split_at"><code>split_at</code></a> method.</p>
|
|||
|
<h5 id="panics-2"><a class="doc-anchor" href="#panics-2">§</a>Panics</h5>
|
|||
|
<p>Panics if <code>mid</code> is not on a UTF-8 code point boundary, or if it is past
|
|||
|
the end of the last code point of the string slice. For a non-panicking
|
|||
|
alternative see <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_at_mut_checked" title="method str::split_at_mut_checked"><code>split_at_mut_checked</code></a>.</p>
|
|||
|
<h5 id="examples-25"><a class="doc-anchor" href="#examples-25">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = <span class="string">"Per Martin-Löf"</span>.to_string();
|
|||
|
{
|
|||
|
<span class="kw">let </span>(first, last) = s.split_at_mut(<span class="number">3</span>);
|
|||
|
first.make_ascii_uppercase();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"PER"</span>, first);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" Martin-Löf"</span>, last);
|
|||
|
}
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"PER Martin-Löf"</span>, s);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_checked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.80.0">1.80.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#716">source</a></span><h4 class="code-header">pub fn <a href="#method.split_at_checked" class="fn">split_at_checked</a>(&self, mid: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>, &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>)></h4></section></summary><div class="docblock"><p>Divides one string slice into two at an index.</p>
|
|||
|
<p>The argument, <code>mid</code>, should be a valid byte offset from the start of the
|
|||
|
string. It must also be on the boundary of a UTF-8 code point. The
|
|||
|
method returns <code>None</code> if that’s not the case.</p>
|
|||
|
<p>The two slices returned go from the start of the string slice to <code>mid</code>,
|
|||
|
and from <code>mid</code> to the end of the string slice.</p>
|
|||
|
<p>To get mutable string slices instead, see the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_at_mut_checked" title="method str::split_at_mut_checked"><code>split_at_mut_checked</code></a>
|
|||
|
method.</p>
|
|||
|
<h5 id="examples-26"><a class="doc-anchor" href="#examples-26">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Per Martin-Löf"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span>(first, last) = s.split_at_checked(<span class="number">3</span>).unwrap();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"Per"</span>, first);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" Martin-Löf"</span>, last);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, s.split_at_checked(<span class="number">13</span>)); <span class="comment">// Inside “ö”
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, s.split_at_checked(<span class="number">16</span>)); <span class="comment">// Beyond the string length</span></code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_mut_checked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.80.0">1.80.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#756">source</a></span><h4 class="code-header">pub fn <a href="#method.split_at_mut_checked" class="fn">split_at_mut_checked</a>(
|
|||
|
&mut self,
|
|||
|
mid: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>,
|
|||
|
) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(&mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>, &mut <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>)></h4></section></summary><div class="docblock"><p>Divides one mutable string slice into two at an index.</p>
|
|||
|
<p>The argument, <code>mid</code>, should be a valid byte offset from the start of the
|
|||
|
string. It must also be on the boundary of a UTF-8 code point. The
|
|||
|
method returns <code>None</code> if that’s not the case.</p>
|
|||
|
<p>The two slices returned go from the start of the string slice to <code>mid</code>,
|
|||
|
and from <code>mid</code> to the end of the string slice.</p>
|
|||
|
<p>To get immutable string slices instead, see the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_at_checked" title="method str::split_at_checked"><code>split_at_checked</code></a> method.</p>
|
|||
|
<h5 id="examples-27"><a class="doc-anchor" href="#examples-27">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = <span class="string">"Per Martin-Löf"</span>.to_string();
|
|||
|
<span class="kw">if let </span><span class="prelude-val">Some</span>((first, last)) = s.split_at_mut_checked(<span class="number">3</span>) {
|
|||
|
first.make_ascii_uppercase();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"PER"</span>, first);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" Martin-Löf"</span>, last);
|
|||
|
}
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"PER Martin-Löf"</span>, s);
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, s.split_at_mut_checked(<span class="number">13</span>)); <span class="comment">// Inside “ö”
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, s.split_at_mut_checked(<span class="number">16</span>)); <span class="comment">// Beyond the string length</span></code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.chars" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#833">source</a></span><h4 class="code-header">pub fn <a href="#method.chars" class="fn">chars</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.Chars.html" title="struct core::str::iter::Chars">Chars</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator over the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s of a string slice.</p>
|
|||
|
<p>As a string slice consists of valid UTF-8, we can iterate through a
|
|||
|
string slice by <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>. This method returns such an iterator.</p>
|
|||
|
<p>It’s important to remember that <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a> represents a Unicode Scalar
|
|||
|
Value, and might not match your idea of what a ‘character’ is. Iteration
|
|||
|
over grapheme clusters may be what you actually want. This functionality
|
|||
|
is not provided by Rust’s standard library, check crates.io instead.</p>
|
|||
|
<h5 id="examples-28"><a class="doc-anchor" href="#examples-28">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>word = <span class="string">"goodbye"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span>count = word.chars().count();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="number">7</span>, count);
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>chars = word.chars();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'g'</span>), chars.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'o'</span>), chars.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'o'</span>), chars.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'d'</span>), chars.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'b'</span>), chars.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'y'</span>), chars.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'e'</span>), chars.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, chars.next());</code></pre></div>
|
|||
|
<p>Remember, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s might not match your intuition about characters:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>y = <span class="string">"y̆"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>chars = y.chars();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'y'</span>), chars.next()); <span class="comment">// not 'y̆'
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">'\u{0306}'</span>), chars.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, chars.next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.char_indices" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#890">source</a></span><h4 class="code-header">pub fn <a href="#method.char_indices" class="fn">char_indices</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.CharIndices.html" title="struct core::str::iter::CharIndices">CharIndices</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator over the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s of a string slice, and their
|
|||
|
positions.</p>
|
|||
|
<p>As a string slice consists of valid UTF-8, we can iterate through a
|
|||
|
string slice by <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>. This method returns an iterator of both
|
|||
|
these <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, as well as their byte positions.</p>
|
|||
|
<p>The iterator yields tuples. The position is first, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a> is
|
|||
|
second.</p>
|
|||
|
<h5 id="examples-29"><a class="doc-anchor" href="#examples-29">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>word = <span class="string">"goodbye"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span>count = word.char_indices().count();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="number">7</span>, count);
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>char_indices = word.char_indices();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">0</span>, <span class="string">'g'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="string">'o'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">2</span>, <span class="string">'o'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">3</span>, <span class="string">'d'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">4</span>, <span class="string">'b'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">5</span>, <span class="string">'y'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">6</span>, <span class="string">'e'</span>)), char_indices.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, char_indices.next());</code></pre></div>
|
|||
|
<p>Remember, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s might not match your intuition about characters:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>yes = <span class="string">"y̆es"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>char_indices = yes.char_indices();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">0</span>, <span class="string">'y'</span>)), char_indices.next()); <span class="comment">// not (0, 'y̆')
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">1</span>, <span class="string">'\u{0306}'</span>)), char_indices.next());
|
|||
|
|
|||
|
<span class="comment">// note the 3 here - the previous character took up two bytes
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">3</span>, <span class="string">'e'</span>)), char_indices.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>((<span class="number">4</span>, <span class="string">'s'</span>)), char_indices.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, char_indices.next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.bytes" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#913">source</a></span><h4 class="code-header">pub fn <a href="#method.bytes" class="fn">bytes</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.Bytes.html" title="struct core::str::iter::Bytes">Bytes</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator over the bytes of a string slice.</p>
|
|||
|
<p>As a string slice consists of a sequence of bytes, we can iterate
|
|||
|
through a string slice by byte. This method returns such an iterator.</p>
|
|||
|
<h5 id="examples-30"><a class="doc-anchor" href="#examples-30">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>bytes = <span class="string">"bors"</span>.bytes();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">b'b'</span>), bytes.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">b'o'</span>), bytes.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">b'r'</span>), bytes.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">b's'</span>), bytes.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, bytes.next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_whitespace" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.1.0">1.1.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#965">source</a></span><h4 class="code-header">pub fn <a href="#method.split_whitespace" class="fn">split_whitespace</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.SplitWhitespace.html" title="struct core::str::iter::SplitWhitespace">SplitWhitespace</a><'_></h4></section></summary><div class="docblock"><p>Splits a string slice by whitespace.</p>
|
|||
|
<p>The iterator returned will return string slices that are sub-slices of
|
|||
|
the original string slice, separated by any amount of whitespace.</p>
|
|||
|
<p>‘Whitespace’ is defined according to the terms of the Unicode Derived
|
|||
|
Core Property <code>White_Space</code>. If you only want to split on ASCII whitespace
|
|||
|
instead, use <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_ascii_whitespace" title="method str::split_ascii_whitespace"><code>split_ascii_whitespace</code></a>.</p>
|
|||
|
<h5 id="examples-31"><a class="doc-anchor" href="#examples-31">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>iter = <span class="string">"A few words"</span>.split_whitespace();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"A"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"few"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"words"</span>), iter.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, iter.next());</code></pre></div>
|
|||
|
<p>All kinds of whitespace are considered:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>iter = <span class="string">" Mary had\ta\u{2009}little \n\t lamb"</span>.split_whitespace();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"Mary"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"had"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"a"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"little"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"lamb"</span>), iter.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, iter.next());</code></pre></div>
|
|||
|
<p>If the string is empty or all whitespace, the iterator yields no string slices:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">""</span>.split_whitespace().next(), <span class="prelude-val">None</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" "</span>.split_whitespace().next(), <span class="prelude-val">None</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_ascii_whitespace" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.34.0">1.34.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1014">source</a></span><h4 class="code-header">pub fn <a href="#method.split_ascii_whitespace" class="fn">split_ascii_whitespace</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.SplitAsciiWhitespace.html" title="struct core::str::iter::SplitAsciiWhitespace">SplitAsciiWhitespace</a><'_></h4></section></summary><div class="docblock"><p>Splits a string slice by ASCII whitespace.</p>
|
|||
|
<p>The iterator returned will return string slices that are sub-slices of
|
|||
|
the original string slice, separated by any amount of ASCII whitespace.</p>
|
|||
|
<p>To split by Unicode <code>Whitespace</code> instead, use <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_whitespace" title="method str::split_whitespace"><code>split_whitespace</code></a>.</p>
|
|||
|
<h5 id="examples-32"><a class="doc-anchor" href="#examples-32">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>iter = <span class="string">"A few words"</span>.split_ascii_whitespace();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"A"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"few"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"words"</span>), iter.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, iter.next());</code></pre></div>
|
|||
|
<p>All kinds of ASCII whitespace are considered:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>iter = <span class="string">" Mary had\ta little \n\t lamb"</span>.split_ascii_whitespace();
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"Mary"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"had"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"a"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"little"</span>), iter.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"lamb"</span>), iter.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, iter.next());</code></pre></div>
|
|||
|
<p>If the string is empty or all ASCII whitespace, the iterator yields no string slices:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">""</span>.split_ascii_whitespace().next(), <span class="prelude-val">None</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" "</span>.split_ascii_whitespace().next(), <span class="prelude-val">None</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.lines" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1067">source</a></span><h4 class="code-header">pub fn <a href="#method.lines" class="fn">lines</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.Lines.html" title="struct core::str::iter::Lines">Lines</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator over the lines of a string, as string slices.</p>
|
|||
|
<p>Lines are split at line endings that are either newlines (<code>\n</code>) or
|
|||
|
sequences of a carriage return followed by a line feed (<code>\r\n</code>).</p>
|
|||
|
<p>Line terminators are not included in the lines returned by the iterator.</p>
|
|||
|
<p>Note that any carriage return (<code>\r</code>) not immediately followed by a
|
|||
|
line feed (<code>\n</code>) does not split a line. These carriage returns are
|
|||
|
thereby included in the produced lines.</p>
|
|||
|
<p>The final line ending is optional. A string that ends with a final line
|
|||
|
ending will return the same lines as an otherwise identical string
|
|||
|
without a final line ending.</p>
|
|||
|
<h5 id="examples-33"><a class="doc-anchor" href="#examples-33">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>text = <span class="string">"foo\r\nbar\n\nbaz\r"</span>;
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>lines = text.lines();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"foo"</span>), lines.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"bar"</span>), lines.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">""</span>), lines.next());
|
|||
|
<span class="comment">// Trailing carriage return is included in the last line
|
|||
|
</span><span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"baz\r"</span>), lines.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, lines.next());</code></pre></div>
|
|||
|
<p>The final line does not require any ending:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>text = <span class="string">"foo\nbar\n\r\nbaz"</span>;
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>lines = text.lines();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"foo"</span>), lines.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"bar"</span>), lines.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">""</span>), lines.next());
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="string">"baz"</span>), lines.next());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, lines.next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.lines_any" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1076">source</a></span><h4 class="code-header">pub fn <a href="#method.lines_any" class="fn">lines_any</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.LinesAny.html" title="struct core::str::iter::LinesAny">LinesAny</a><'_></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.4.0: use lines() instead now</span></div></span></summary><div class="docblock"><p>Returns an iterator over the lines of a string.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.encode_utf16" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.8.0">1.8.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1095">source</a></span><h4 class="code-header">pub fn <a href="#method.encode_utf16" class="fn">encode_utf16</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.EncodeUtf16.html" title="struct core::str::iter::EncodeUtf16">EncodeUtf16</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator of <code>u16</code> over the string encoded as UTF-16.</p>
|
|||
|
<h5 id="examples-34"><a class="doc-anchor" href="#examples-34">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>text = <span class="string">"Zażółć gęślą jaźń"</span>;
|
|||
|
|
|||
|
<span class="kw">let </span>utf8_len = text.len();
|
|||
|
<span class="kw">let </span>utf16_len = text.encode_utf16().count();
|
|||
|
|
|||
|
<span class="macro">assert!</span>(utf16_len <= utf8_len);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.contains" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1120">source</a></span><h4 class="code-header">pub fn <a href="#method.contains" class="fn">contains</a><P>(&self, pat: P) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the given pattern matches a sub-slice of
|
|||
|
this string slice.</p>
|
|||
|
<p>Returns <code>false</code> if it does not.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-35"><a class="doc-anchor" href="#examples-35">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bananas = <span class="string">"bananas"</span>;
|
|||
|
|
|||
|
<span class="macro">assert!</span>(bananas.contains(<span class="string">"nana"</span>));
|
|||
|
<span class="macro">assert!</span>(!bananas.contains(<span class="string">"apples"</span>));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.starts_with" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1157">source</a></span><h4 class="code-header">pub fn <a href="#method.starts_with" class="fn">starts_with</a><P>(&self, pat: P) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the given pattern matches a prefix of this
|
|||
|
string slice.</p>
|
|||
|
<p>Returns <code>false</code> if it does not.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, in which case this function will return true if
|
|||
|
the <code>&str</code> is a prefix of this string slice.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can also be a <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.
|
|||
|
These will only be checked against the first character of this string slice.
|
|||
|
Look at the second example below regarding behavior for slices of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s.</p>
|
|||
|
<h5 id="examples-36"><a class="doc-anchor" href="#examples-36">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bananas = <span class="string">"bananas"</span>;
|
|||
|
|
|||
|
<span class="macro">assert!</span>(bananas.starts_with(<span class="string">"bana"</span>));
|
|||
|
<span class="macro">assert!</span>(!bananas.starts_with(<span class="string">"nana"</span>));</code></pre></div>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bananas = <span class="string">"bananas"</span>;
|
|||
|
|
|||
|
<span class="comment">// Note that both of these assert successfully.
|
|||
|
</span><span class="macro">assert!</span>(bananas.starts_with(<span class="kw-2">&</span>[<span class="string">'b'</span>, <span class="string">'a'</span>, <span class="string">'n'</span>, <span class="string">'a'</span>]));
|
|||
|
<span class="macro">assert!</span>(bananas.starts_with(<span class="kw-2">&</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.ends_with" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1181-1183">source</a></span><h4 class="code-header">pub fn <a href="#method.ends_with" class="fn">ends_with</a><P>(&self, pat: P) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the given pattern matches a suffix of this
|
|||
|
string slice.</p>
|
|||
|
<p>Returns <code>false</code> if it does not.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-37"><a class="doc-anchor" href="#examples-37">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>bananas = <span class="string">"bananas"</span>;
|
|||
|
|
|||
|
<span class="macro">assert!</span>(bananas.ends_with(<span class="string">"anas"</span>));
|
|||
|
<span class="macro">assert!</span>(!bananas.ends_with(<span class="string">"nana"</span>));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.find" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1232">source</a></span><h4 class="code-header">pub fn <a href="#method.find" class="fn">find</a><P>(&self, pat: P) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns the byte index of the first character of this string slice that
|
|||
|
matches the pattern.</p>
|
|||
|
<p>Returns <a href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> if the pattern doesn’t match.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-38"><a class="doc-anchor" href="#examples-38">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard Gepardi"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.find(<span class="string">'L'</span>), <span class="prelude-val">Some</span>(<span class="number">0</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.find(<span class="string">'é'</span>), <span class="prelude-val">Some</span>(<span class="number">14</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.find(<span class="string">"pard"</span>), <span class="prelude-val">Some</span>(<span class="number">17</span>));</code></pre></div>
|
|||
|
<p>More complex patterns using point-free style and closures:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.find(char::is_whitespace), <span class="prelude-val">Some</span>(<span class="number">5</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.find(char::is_lowercase), <span class="prelude-val">Some</span>(<span class="number">1</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.find(|c: char| c.is_whitespace() || c.is_lowercase()), <span class="prelude-val">Some</span>(<span class="number">1</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.find(|c: char| (c < <span class="string">'o'</span>) && (c > <span class="string">'a'</span>)), <span class="prelude-val">Some</span>(<span class="number">4</span>));</code></pre></div>
|
|||
|
<p>Not finding the pattern:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard"</span>;
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.find(x), <span class="prelude-val">None</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rfind" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1278-1280">source</a></span><h4 class="code-header">pub fn <a href="#method.rfind" class="fn">rfind</a><P>(&self, pat: P) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns the byte index for the first character of the last match of the pattern in
|
|||
|
this string slice.</p>
|
|||
|
<p>Returns <a href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html#variant.None" title="variant core::option::Option::None"><code>None</code></a> if the pattern doesn’t match.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-39"><a class="doc-anchor" href="#examples-39">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard Gepardi"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.rfind(<span class="string">'L'</span>), <span class="prelude-val">Some</span>(<span class="number">13</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.rfind(<span class="string">'é'</span>), <span class="prelude-val">Some</span>(<span class="number">14</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.rfind(<span class="string">"pard"</span>), <span class="prelude-val">Some</span>(<span class="number">24</span>));</code></pre></div>
|
|||
|
<p>More complex patterns with closures:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.rfind(char::is_whitespace), <span class="prelude-val">Some</span>(<span class="number">12</span>));
|
|||
|
<span class="macro">assert_eq!</span>(s.rfind(char::is_lowercase), <span class="prelude-val">Some</span>(<span class="number">20</span>));</code></pre></div>
|
|||
|
<p>Not finding the pattern:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"Löwe 老虎 Léopard"</span>;
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(s.rfind(x), <span class="prelude-val">None</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1400">source</a></span><h4 class="code-header">pub fn <a href="#method.split" class="fn">split</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.Split.html" title="struct core::str::iter::Split">Split</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of this string slice, separated by
|
|||
|
characters matched by a pattern.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior"><a class="doc-anchor" href="#iterator-behavior">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if the pattern
|
|||
|
allows a reverse search and forward/reverse search yields the same
|
|||
|
elements. This is true for, e.g., <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, but not for <code>&str</code>.</p>
|
|||
|
<p>If the pattern allows a reverse search but its results might differ
|
|||
|
from a forward search, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.rsplit" title="method str::rsplit"><code>rsplit</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-40"><a class="doc-anchor" href="#examples-40">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"Mary had a little lamb"</span>.split(<span class="string">' '</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"Mary"</span>, <span class="string">"had"</span>, <span class="string">"a"</span>, <span class="string">"little"</span>, <span class="string">"lamb"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">""</span>.split(<span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">""</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lionXXtigerXleopard"</span>.split(<span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"lion"</span>, <span class="string">""</span>, <span class="string">"tiger"</span>, <span class="string">"leopard"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lion::tiger::leopard"</span>.split(<span class="string">"::"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"lion"</span>, <span class="string">"tiger"</span>, <span class="string">"leopard"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abc1def2ghi"</span>.split(char::is_numeric).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"abc"</span>, <span class="string">"def"</span>, <span class="string">"ghi"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lionXtigerXleopard"</span>.split(char::is_uppercase).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"lion"</span>, <span class="string">"tiger"</span>, <span class="string">"leopard"</span>]);</code></pre></div>
|
|||
|
<p>If the pattern is a slice of chars, split on each occurrence of any of the characters:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"2020-11-03 23:59"</span>.split(<span class="kw-2">&</span>[<span class="string">'-'</span>, <span class="string">' '</span>, <span class="string">':'</span>, <span class="string">'@'</span>][..]).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"2020"</span>, <span class="string">"11"</span>, <span class="string">"03"</span>, <span class="string">"23"</span>, <span class="string">"59"</span>]);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abc1defXghi"</span>.split(|c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"abc"</span>, <span class="string">"def"</span>, <span class="string">"ghi"</span>]);</code></pre></div>
|
|||
|
<p>If a string contains multiple contiguous separators, you will end up
|
|||
|
with empty strings in the output:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="string">"||||a||b|c"</span>.to_string();
|
|||
|
<span class="kw">let </span>d: Vec<<span class="kw">_</span>> = x.split(<span class="string">'|'</span>).collect();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(d, <span class="kw-2">&</span>[<span class="string">""</span>, <span class="string">""</span>, <span class="string">""</span>, <span class="string">""</span>, <span class="string">"a"</span>, <span class="string">""</span>, <span class="string">"b"</span>, <span class="string">"c"</span>]);</code></pre></div>
|
|||
|
<p>Contiguous separators are separated by the empty string.</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="string">"(///)"</span>.to_string();
|
|||
|
<span class="kw">let </span>d: Vec<<span class="kw">_</span>> = x.split(<span class="string">'/'</span>).collect();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(d, <span class="kw-2">&</span>[<span class="string">"("</span>, <span class="string">""</span>, <span class="string">""</span>, <span class="string">")"</span>]);</code></pre></div>
|
|||
|
<p>Separators at the start or end of a string are neighbored
|
|||
|
by empty strings.</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>d: Vec<<span class="kw">_</span>> = <span class="string">"010"</span>.split(<span class="string">"0"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(d, <span class="kw-2">&</span>[<span class="string">""</span>, <span class="string">"1"</span>, <span class="string">""</span>]);</code></pre></div>
|
|||
|
<p>When the empty string is used as a separator, it separates
|
|||
|
every character in the string, along with the beginning
|
|||
|
and end of the string.</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>f: Vec<<span class="kw">_</span>> = <span class="string">"rust"</span>.split(<span class="string">""</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(f, <span class="kw-2">&</span>[<span class="string">""</span>, <span class="string">"r"</span>, <span class="string">"u"</span>, <span class="string">"s"</span>, <span class="string">"t"</span>, <span class="string">""</span>]);</code></pre></div>
|
|||
|
<p>Contiguous separators can lead to possibly surprising behavior
|
|||
|
when whitespace is used as the separator. This code is correct:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="string">" a b c"</span>.to_string();
|
|||
|
<span class="kw">let </span>d: Vec<<span class="kw">_</span>> = x.split(<span class="string">' '</span>).collect();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(d, <span class="kw-2">&</span>[<span class="string">""</span>, <span class="string">""</span>, <span class="string">""</span>, <span class="string">""</span>, <span class="string">"a"</span>, <span class="string">""</span>, <span class="string">"b"</span>, <span class="string">"c"</span>]);</code></pre></div>
|
|||
|
<p>It does <em>not</em> give you:</p>
|
|||
|
|
|||
|
<div class="example-wrap ignore"><a href="#" class="tooltip" title="This example is not tested">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(d, <span class="kw-2">&</span>[<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>]);</code></pre></div>
|
|||
|
<p>Use <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_whitespace" title="method str::split_whitespace"><code>split_whitespace</code></a> for this behavior.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_inclusive" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1441">source</a></span><h4 class="code-header">pub fn <a href="#method.split_inclusive" class="fn">split_inclusive</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.SplitInclusive.html" title="struct core::str::iter::SplitInclusive">SplitInclusive</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of this string slice, separated by
|
|||
|
characters matched by a pattern.</p>
|
|||
|
<p>Differs from the iterator produced by <code>split</code> in that <code>split_inclusive</code>
|
|||
|
leaves the matched part as the terminator of the substring.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-41"><a class="doc-anchor" href="#examples-41">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"Mary had a little lamb\nlittle lamb\nlittle lamb."
|
|||
|
</span>.split_inclusive(<span class="string">'\n'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"Mary had a little lamb\n"</span>, <span class="string">"little lamb\n"</span>, <span class="string">"little lamb."</span>]);</code></pre></div>
|
|||
|
<p>If the last element of the string is matched,
|
|||
|
that element will be considered the terminator of the preceding substring.
|
|||
|
That substring will be the last item returned by the iterator.</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"Mary had a little lamb\nlittle lamb\nlittle lamb.\n"
|
|||
|
</span>.split_inclusive(<span class="string">'\n'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"Mary had a little lamb\n"</span>, <span class="string">"little lamb\n"</span>, <span class="string">"little lamb.\n"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1496-1498">source</a></span><h4 class="code-header">pub fn <a href="#method.rsplit" class="fn">rsplit</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.RSplit.html" title="struct core::str::iter::RSplit">RSplit</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of the given string slice, separated
|
|||
|
by characters matched by a pattern and yielded in reverse order.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-1"><a class="doc-anchor" href="#iterator-behavior-1">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator requires that the pattern supports a reverse
|
|||
|
search, and it will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if a forward/reverse
|
|||
|
search yields the same elements.</p>
|
|||
|
<p>For iterating from the front, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split" title="method str::split"><code>split</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-42"><a class="doc-anchor" href="#examples-42">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"Mary had a little lamb"</span>.rsplit(<span class="string">' '</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"lamb"</span>, <span class="string">"little"</span>, <span class="string">"a"</span>, <span class="string">"had"</span>, <span class="string">"Mary"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">""</span>.rsplit(<span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">""</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lionXXtigerXleopard"</span>.rsplit(<span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"leopard"</span>, <span class="string">"tiger"</span>, <span class="string">""</span>, <span class="string">"lion"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lion::tiger::leopard"</span>.rsplit(<span class="string">"::"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"leopard"</span>, <span class="string">"tiger"</span>, <span class="string">"lion"</span>]);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abc1defXghi"</span>.rsplit(|c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"ghi"</span>, <span class="string">"def"</span>, <span class="string">"abc"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_terminator" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1545">source</a></span><h4 class="code-header">pub fn <a href="#method.split_terminator" class="fn">split_terminator</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.SplitTerminator.html" title="struct core::str::iter::SplitTerminator">SplitTerminator</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of the given string slice, separated
|
|||
|
by characters matched by a pattern.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<p>Equivalent to <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split" title="method str::split"><code>split</code></a>, except that the trailing substring
|
|||
|
is skipped if empty.</p>
|
|||
|
<p>This method can be used for string data that is <em>terminated</em>,
|
|||
|
rather than <em>separated</em> by a pattern.</p>
|
|||
|
<h5 id="iterator-behavior-2"><a class="doc-anchor" href="#iterator-behavior-2">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if the pattern
|
|||
|
allows a reverse search and forward/reverse search yields the same
|
|||
|
elements. This is true for, e.g., <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, but not for <code>&str</code>.</p>
|
|||
|
<p>If the pattern allows a reverse search but its results might differ
|
|||
|
from a forward search, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.rsplit_terminator" title="method str::rsplit_terminator"><code>rsplit_terminator</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-43"><a class="doc-anchor" href="#examples-43">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"A.B."</span>.split_terminator(<span class="string">'.'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"A"</span>, <span class="string">"B"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"A..B.."</span>.split_terminator(<span class="string">"."</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"A"</span>, <span class="string">""</span>, <span class="string">"B"</span>, <span class="string">""</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"A.B:C.D"</span>.split_terminator(<span class="kw-2">&</span>[<span class="string">'.'</span>, <span class="string">':'</span>][..]).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"A"</span>, <span class="string">"B"</span>, <span class="string">"C"</span>, <span class="string">"D"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit_terminator" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1591-1593">source</a></span><h4 class="code-header">pub fn <a href="#method.rsplit_terminator" class="fn">rsplit_terminator</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.RSplitTerminator.html" title="struct core::str::iter::RSplitTerminator">RSplitTerminator</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of <code>self</code>, separated by characters
|
|||
|
matched by a pattern and yielded in reverse order.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<p>Equivalent to <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split" title="method str::split"><code>split</code></a>, except that the trailing substring is
|
|||
|
skipped if empty.</p>
|
|||
|
<p>This method can be used for string data that is <em>terminated</em>,
|
|||
|
rather than <em>separated</em> by a pattern.</p>
|
|||
|
<h5 id="iterator-behavior-3"><a class="doc-anchor" href="#iterator-behavior-3">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator requires that the pattern supports a
|
|||
|
reverse search, and it will be double ended if a forward/reverse
|
|||
|
search yields the same elements.</p>
|
|||
|
<p>For iterating from the front, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split_terminator" title="method str::split_terminator"><code>split_terminator</code></a> method can be
|
|||
|
used.</p>
|
|||
|
<h5 id="examples-44"><a class="doc-anchor" href="#examples-44">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"A.B."</span>.rsplit_terminator(<span class="string">'.'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"B"</span>, <span class="string">"A"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"A..B.."</span>.rsplit_terminator(<span class="string">"."</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">""</span>, <span class="string">"B"</span>, <span class="string">""</span>, <span class="string">"A"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"A.B:C.D"</span>.rsplit_terminator(<span class="kw-2">&</span>[<span class="string">'.'</span>, <span class="string">':'</span>][..]).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"D"</span>, <span class="string">"C"</span>, <span class="string">"B"</span>, <span class="string">"A"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.splitn" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1646">source</a></span><h4 class="code-header">pub fn <a href="#method.splitn" class="fn">splitn</a><P>(&self, n: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.SplitN.html" title="struct core::str::iter::SplitN">SplitN</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of the given string slice, separated
|
|||
|
by a pattern, restricted to returning at most <code>n</code> items.</p>
|
|||
|
<p>If <code>n</code> substrings are returned, the last substring (the <code>n</code>th substring)
|
|||
|
will contain the remainder of the string.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-4"><a class="doc-anchor" href="#iterator-behavior-4">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator will not be double ended, because it is
|
|||
|
not efficient to support.</p>
|
|||
|
<p>If the pattern allows a reverse search, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.rsplitn" title="method str::rsplitn"><code>rsplitn</code></a> method can be
|
|||
|
used.</p>
|
|||
|
<h5 id="examples-45"><a class="doc-anchor" href="#examples-45">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"Mary had a little lambda"</span>.splitn(<span class="number">3</span>, <span class="string">' '</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"Mary"</span>, <span class="string">"had"</span>, <span class="string">"a little lambda"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lionXXtigerXleopard"</span>.splitn(<span class="number">3</span>, <span class="string">"X"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"lion"</span>, <span class="string">""</span>, <span class="string">"tigerXleopard"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abcXdef"</span>.splitn(<span class="number">1</span>, <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"abcXdef"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">""</span>.splitn(<span class="number">1</span>, <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">""</span>]);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abc1defXghi"</span>.splitn(<span class="number">2</span>, |c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"abc"</span>, <span class="string">"defXghi"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplitn" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1695-1697">source</a></span><h4 class="code-header">pub fn <a href="#method.rsplitn" class="fn">rsplitn</a><P>(&self, n: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.RSplitN.html" title="struct core::str::iter::RSplitN">RSplitN</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over substrings of this string slice, separated by a
|
|||
|
pattern, starting from the end of the string, restricted to returning at
|
|||
|
most <code>n</code> items.</p>
|
|||
|
<p>If <code>n</code> substrings are returned, the last substring (the <code>n</code>th substring)
|
|||
|
will contain the remainder of the string.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-5"><a class="doc-anchor" href="#iterator-behavior-5">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator will not be double ended, because it is not
|
|||
|
efficient to support.</p>
|
|||
|
<p>For splitting from the front, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.splitn" title="method str::splitn"><code>splitn</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-46"><a class="doc-anchor" href="#examples-46">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"Mary had a little lamb"</span>.rsplitn(<span class="number">3</span>, <span class="string">' '</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"lamb"</span>, <span class="string">"little"</span>, <span class="string">"Mary had a"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lionXXtigerXleopard"</span>.rsplitn(<span class="number">3</span>, <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"leopard"</span>, <span class="string">"tiger"</span>, <span class="string">"lionX"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"lion::tiger::leopard"</span>.rsplitn(<span class="number">2</span>, <span class="string">"::"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"leopard"</span>, <span class="string">"lion::tiger"</span>]);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abc1defXghi"</span>.rsplitn(<span class="number">2</span>, |c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"ghi"</span>, <span class="string">"abc1def"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.split_once" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.52.0">1.52.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1715">source</a></span><h4 class="code-header">pub fn <a href="#method.split_once" class="fn">split_once</a><P>(&self, delimiter: P) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>, &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>)><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Splits the string on the first occurrence of the specified delimiter and
|
|||
|
returns prefix before delimiter and suffix after delimiter.</p>
|
|||
|
<h5 id="examples-47"><a class="doc-anchor" href="#examples-47">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"cfg"</span>.split_once(<span class="string">'='</span>), <span class="prelude-val">None</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"cfg="</span>.split_once(<span class="string">'='</span>), <span class="prelude-val">Some</span>((<span class="string">"cfg"</span>, <span class="string">""</span>)));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"cfg=foo"</span>.split_once(<span class="string">'='</span>), <span class="prelude-val">Some</span>((<span class="string">"cfg"</span>, <span class="string">"foo"</span>)));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"cfg=foo=bar"</span>.split_once(<span class="string">'='</span>), <span class="prelude-val">Some</span>((<span class="string">"cfg"</span>, <span class="string">"foo=bar"</span>)));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit_once" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.52.0">1.52.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1733-1735">source</a></span><h4 class="code-header">pub fn <a href="#method.rsplit_once" class="fn">rsplit_once</a><P>(&self, delimiter: P) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><(&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>, &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>)><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Splits the string on the last occurrence of the specified delimiter and
|
|||
|
returns prefix before delimiter and suffix after delimiter.</p>
|
|||
|
<h5 id="examples-48"><a class="doc-anchor" href="#examples-48">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"cfg"</span>.rsplit_once(<span class="string">'='</span>), <span class="prelude-val">None</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"cfg=foo"</span>.rsplit_once(<span class="string">'='</span>), <span class="prelude-val">Some</span>((<span class="string">"cfg"</span>, <span class="string">"foo"</span>)));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"cfg=foo=bar"</span>.rsplit_once(<span class="string">'='</span>), <span class="prelude-val">Some</span>((<span class="string">"cfg=foo"</span>, <span class="string">"bar"</span>)));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.matches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.2.0">1.2.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1773">source</a></span><h4 class="code-header">pub fn <a href="#method.matches" class="fn">matches</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.Matches.html" title="struct core::str::iter::Matches">Matches</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the disjoint matches of a pattern within the
|
|||
|
given string slice.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-6"><a class="doc-anchor" href="#iterator-behavior-6">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if the pattern
|
|||
|
allows a reverse search and forward/reverse search yields the same
|
|||
|
elements. This is true for, e.g., <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, but not for <code>&str</code>.</p>
|
|||
|
<p>If the pattern allows a reverse search but its results might differ
|
|||
|
from a forward search, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.rmatches" title="method str::rmatches"><code>rmatches</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-49"><a class="doc-anchor" href="#examples-49">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abcXXXabcYYYabc"</span>.matches(<span class="string">"abc"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"abc"</span>, <span class="string">"abc"</span>, <span class="string">"abc"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"1abc2abc3"</span>.matches(char::is_numeric).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"1"</span>, <span class="string">"2"</span>, <span class="string">"3"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rmatches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.2.0">1.2.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1807-1809">source</a></span><h4 class="code-header">pub fn <a href="#method.rmatches" class="fn">rmatches</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.RMatches.html" title="struct core::str::iter::RMatches">RMatches</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the disjoint matches of a pattern within this
|
|||
|
string slice, yielded in reverse order.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-7"><a class="doc-anchor" href="#iterator-behavior-7">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator requires that the pattern supports a reverse
|
|||
|
search, and it will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if a forward/reverse
|
|||
|
search yields the same elements.</p>
|
|||
|
<p>For iterating from the front, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.matches" title="method str::matches"><code>matches</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-50"><a class="doc-anchor" href="#examples-50">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"abcXXXabcYYYabc"</span>.rmatches(<span class="string">"abc"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"abc"</span>, <span class="string">"abc"</span>, <span class="string">"abc"</span>]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw-2">&</span>str> = <span class="string">"1abc2abc3"</span>.rmatches(char::is_numeric).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [<span class="string">"3"</span>, <span class="string">"2"</span>, <span class="string">"1"</span>]);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.match_indices" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1851">source</a></span><h4 class="code-header">pub fn <a href="#method.match_indices" class="fn">match_indices</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.MatchIndices.html" title="struct core::str::iter::MatchIndices">MatchIndices</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the disjoint matches of a pattern within this string
|
|||
|
slice as well as the index that the match starts at.</p>
|
|||
|
<p>For matches of <code>pat</code> within <code>self</code> that overlap, only the indices
|
|||
|
corresponding to the first match are returned.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-8"><a class="doc-anchor" href="#iterator-behavior-8">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if the pattern
|
|||
|
allows a reverse search and forward/reverse search yields the same
|
|||
|
elements. This is true for, e.g., <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, but not for <code>&str</code>.</p>
|
|||
|
<p>If the pattern allows a reverse search but its results might differ
|
|||
|
from a forward search, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.rmatch_indices" title="method str::rmatch_indices"><code>rmatch_indices</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-51"><a class="doc-anchor" href="#examples-51">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw">_</span>> = <span class="string">"abcXXXabcYYYabc"</span>.match_indices(<span class="string">"abc"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [(<span class="number">0</span>, <span class="string">"abc"</span>), (<span class="number">6</span>, <span class="string">"abc"</span>), (<span class="number">12</span>, <span class="string">"abc"</span>)]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw">_</span>> = <span class="string">"1abcabc2"</span>.match_indices(<span class="string">"abc"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [(<span class="number">1</span>, <span class="string">"abc"</span>), (<span class="number">4</span>, <span class="string">"abc"</span>)]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw">_</span>> = <span class="string">"ababa"</span>.match_indices(<span class="string">"aba"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [(<span class="number">0</span>, <span class="string">"aba"</span>)]); <span class="comment">// only the first `aba`</span></code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.rmatch_indices" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.5.0">1.5.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1891-1893">source</a></span><h4 class="code-header">pub fn <a href="#method.rmatch_indices" class="fn">rmatch_indices</a><P>(&self, pat: P) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.RMatchIndices.html" title="struct core::str::iter::RMatchIndices">RMatchIndices</a><'_, P><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the disjoint matches of a pattern within <code>self</code>,
|
|||
|
yielded in reverse order along with the index of the match.</p>
|
|||
|
<p>For matches of <code>pat</code> within <code>self</code> that overlap, only the indices
|
|||
|
corresponding to the last match are returned.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="iterator-behavior-9"><a class="doc-anchor" href="#iterator-behavior-9">§</a>Iterator behavior</h5>
|
|||
|
<p>The returned iterator requires that the pattern supports a reverse
|
|||
|
search, and it will be a <a href="https://doc.rust-lang.org/1.82.0/core/iter/traits/double_ended/trait.DoubleEndedIterator.html" title="trait core::iter::traits::double_ended::DoubleEndedIterator"><code>DoubleEndedIterator</code></a> if a forward/reverse
|
|||
|
search yields the same elements.</p>
|
|||
|
<p>For iterating from the front, the <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.match_indices" title="method str::match_indices"><code>match_indices</code></a> method can be used.</p>
|
|||
|
<h5 id="examples-52"><a class="doc-anchor" href="#examples-52">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v: Vec<<span class="kw">_</span>> = <span class="string">"abcXXXabcYYYabc"</span>.rmatch_indices(<span class="string">"abc"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [(<span class="number">12</span>, <span class="string">"abc"</span>), (<span class="number">6</span>, <span class="string">"abc"</span>), (<span class="number">0</span>, <span class="string">"abc"</span>)]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw">_</span>> = <span class="string">"1abcabc2"</span>.rmatch_indices(<span class="string">"abc"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [(<span class="number">4</span>, <span class="string">"abc"</span>), (<span class="number">1</span>, <span class="string">"abc"</span>)]);
|
|||
|
|
|||
|
<span class="kw">let </span>v: Vec<<span class="kw">_</span>> = <span class="string">"ababa"</span>.rmatch_indices(<span class="string">"aba"</span>).collect();
|
|||
|
<span class="macro">assert_eq!</span>(v, [(<span class="number">2</span>, <span class="string">"aba"</span>)]); <span class="comment">// only the last `aba`</span></code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1915">source</a></span><h4 class="code-header">pub fn <a href="#method.trim" class="fn">trim</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string slice with leading and trailing whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ is defined according to the terms of the Unicode Derived
|
|||
|
Core Property <code>White_Space</code>, which includes newlines.</p>
|
|||
|
<h5 id="examples-53"><a class="doc-anchor" href="#examples-53">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"\n Hello\tworld\t\n"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"Hello\tworld"</span>, s.trim());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_start" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1954">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_start" class="fn">trim_start</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string slice with leading whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ is defined according to the terms of the Unicode Derived
|
|||
|
Core Property <code>White_Space</code>, which includes newlines.</p>
|
|||
|
<h5 id="text-directionality"><a class="doc-anchor" href="#text-directionality">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. <code>start</code> in this context means the first
|
|||
|
position of that byte string; for a left-to-right language like English or
|
|||
|
Russian, this will be left side, and for right-to-left languages like
|
|||
|
Arabic or Hebrew, this will be the right side.</p>
|
|||
|
<h5 id="examples-54"><a class="doc-anchor" href="#examples-54">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"\n Hello\tworld\t\n"</span>;
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"Hello\tworld\t\n"</span>, s.trim_start());</code></pre></div>
|
|||
|
<p>Directionality:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">" English "</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'E'</span>) == s.trim_start().chars().next());
|
|||
|
|
|||
|
<span class="kw">let </span>s = <span class="string">" עברית "</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'ע'</span>) == s.trim_start().chars().next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_end" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#1993">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_end" class="fn">trim_end</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string slice with trailing whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ is defined according to the terms of the Unicode Derived
|
|||
|
Core Property <code>White_Space</code>, which includes newlines.</p>
|
|||
|
<h5 id="text-directionality-1"><a class="doc-anchor" href="#text-directionality-1">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. <code>end</code> in this context means the last
|
|||
|
position of that byte string; for a left-to-right language like English or
|
|||
|
Russian, this will be right side, and for right-to-left languages like
|
|||
|
Arabic or Hebrew, this will be the left side.</p>
|
|||
|
<h5 id="examples-55"><a class="doc-anchor" href="#examples-55">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"\n Hello\tworld\t\n"</span>;
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"\n Hello\tworld"</span>, s.trim_end());</code></pre></div>
|
|||
|
<p>Directionality:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">" English "</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'h'</span>) == s.trim_end().chars().rev().next());
|
|||
|
|
|||
|
<span class="kw">let </span>s = <span class="string">" עברית "</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'ת'</span>) == s.trim_end().chars().rev().next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_left" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2033">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_left" class="fn">trim_left</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: superseded by <code>trim_start</code></span></div></span></summary><div class="docblock"><p>Returns a string slice with leading whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ is defined according to the terms of the Unicode Derived
|
|||
|
Core Property <code>White_Space</code>.</p>
|
|||
|
<h5 id="text-directionality-2"><a class="doc-anchor" href="#text-directionality-2">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. ‘Left’ in this context means the first
|
|||
|
position of that byte string; for a language like Arabic or Hebrew
|
|||
|
which are ‘right to left’ rather than ‘left to right’, this will be
|
|||
|
the <em>right</em> side, not the left.</p>
|
|||
|
<h5 id="examples-56"><a class="doc-anchor" href="#examples-56">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">" Hello\tworld\t"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"Hello\tworld\t"</span>, s.trim_left());</code></pre></div>
|
|||
|
<p>Directionality:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">" English"</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'E'</span>) == s.trim_left().chars().next());
|
|||
|
|
|||
|
<span class="kw">let </span>s = <span class="string">" עברית"</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'ע'</span>) == s.trim_left().chars().next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_right" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2073">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_right" class="fn">trim_right</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: superseded by <code>trim_end</code></span></div></span></summary><div class="docblock"><p>Returns a string slice with trailing whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ is defined according to the terms of the Unicode Derived
|
|||
|
Core Property <code>White_Space</code>.</p>
|
|||
|
<h5 id="text-directionality-3"><a class="doc-anchor" href="#text-directionality-3">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. ‘Right’ in this context means the last
|
|||
|
position of that byte string; for a language like Arabic or Hebrew
|
|||
|
which are ‘right to left’ rather than ‘left to right’, this will be
|
|||
|
the <em>left</em> side, not the right.</p>
|
|||
|
<h5 id="examples-57"><a class="doc-anchor" href="#examples-57">§</a>Examples</h5>
|
|||
|
<p>Basic usage:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">" Hello\tworld\t"</span>;
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" Hello\tworld"</span>, s.trim_right());</code></pre></div>
|
|||
|
<p>Directionality:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = <span class="string">"English "</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'h'</span>) == s.trim_right().chars().rev().next());
|
|||
|
|
|||
|
<span class="kw">let </span>s = <span class="string">"עברית "</span>;
|
|||
|
<span class="macro">assert!</span>(<span class="prelude-val">Some</span>(<span class="string">'ת'</span>) == s.trim_right().chars().rev().next());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_matches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2106-2108">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_matches" class="fn">trim_matches</a><P>(&self, pat: P) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.DoubleEndedSearcher.html" title="trait core::str::pattern::DoubleEndedSearcher">DoubleEndedSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns a string slice with all prefixes and suffixes that match a
|
|||
|
pattern repeatedly removed.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a function
|
|||
|
or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-58"><a class="doc-anchor" href="#examples-58">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"11foo1bar11"</span>.trim_matches(<span class="string">'1'</span>), <span class="string">"foo1bar"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"123foo1bar123"</span>.trim_matches(char::is_numeric), <span class="string">"foo1bar"</span>);
|
|||
|
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"12foo1bar12"</span>.trim_matches(x), <span class="string">"foo1bar"</span>);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"1foo1barXX"</span>.trim_matches(|c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>), <span class="string">"foo1bar"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_start_matches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2153">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_start_matches" class="fn">trim_start_matches</a><P>(&self, pat: P) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns a string slice with all prefixes that match a pattern
|
|||
|
repeatedly removed.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="text-directionality-4"><a class="doc-anchor" href="#text-directionality-4">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. <code>start</code> in this context means the first
|
|||
|
position of that byte string; for a left-to-right language like English or
|
|||
|
Russian, this will be left side, and for right-to-left languages like
|
|||
|
Arabic or Hebrew, this will be the right side.</p>
|
|||
|
<h5 id="examples-59"><a class="doc-anchor" href="#examples-59">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"11foo1bar11"</span>.trim_start_matches(<span class="string">'1'</span>), <span class="string">"foo1bar11"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"123foo1bar123"</span>.trim_start_matches(char::is_numeric), <span class="string">"foo1bar123"</span>);
|
|||
|
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"12foo1bar12"</span>.trim_start_matches(x), <span class="string">"foo1bar12"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.strip_prefix" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.45.0">1.45.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2186">source</a></span><h4 class="code-header">pub fn <a href="#method.strip_prefix" class="fn">strip_prefix</a><P>(&self, prefix: P) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section></summary><div class="docblock"><p>Returns a string slice with the prefix removed.</p>
|
|||
|
<p>If the string starts with the pattern <code>prefix</code>, returns the substring after the prefix,
|
|||
|
wrapped in <code>Some</code>. Unlike <code>trim_start_matches</code>, this method removes the prefix exactly once.</p>
|
|||
|
<p>If the string does not start with <code>prefix</code>, returns <code>None</code>.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-60"><a class="doc-anchor" href="#examples-60">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"foo:bar"</span>.strip_prefix(<span class="string">"foo:"</span>), <span class="prelude-val">Some</span>(<span class="string">"bar"</span>));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"foo:bar"</span>.strip_prefix(<span class="string">"bar"</span>), <span class="prelude-val">None</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"foofoo"</span>.strip_prefix(<span class="string">"foo"</span>), <span class="prelude-val">Some</span>(<span class="string">"foo"</span>));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.strip_suffix" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.45.0">1.45.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2213-2215">source</a></span><h4 class="code-header">pub fn <a href="#method.strip_suffix" class="fn">strip_suffix</a><P>(&self, suffix: P) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns a string slice with the suffix removed.</p>
|
|||
|
<p>If the string ends with the pattern <code>suffix</code>, returns the substring before the suffix,
|
|||
|
wrapped in <code>Some</code>. Unlike <code>trim_end_matches</code>, this method removes the suffix exactly once.</p>
|
|||
|
<p>If the string does not end with <code>suffix</code>, returns <code>None</code>.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="examples-61"><a class="doc-anchor" href="#examples-61">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"bar:foo"</span>.strip_suffix(<span class="string">":foo"</span>), <span class="prelude-val">Some</span>(<span class="string">"bar"</span>));
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"bar:foo"</span>.strip_suffix(<span class="string">"bar"</span>), <span class="prelude-val">None</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"foofoo"</span>.strip_suffix(<span class="string">"foo"</span>), <span class="prelude-val">Some</span>(<span class="string">"foo"</span>));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_end_matches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.30.0">1.30.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2256-2258">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_end_matches" class="fn">trim_end_matches</a><P>(&self, pat: P) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section></summary><div class="docblock"><p>Returns a string slice with all suffixes that match a pattern
|
|||
|
repeatedly removed.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="text-directionality-5"><a class="doc-anchor" href="#text-directionality-5">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. <code>end</code> in this context means the last
|
|||
|
position of that byte string; for a left-to-right language like English or
|
|||
|
Russian, this will be right side, and for right-to-left languages like
|
|||
|
Arabic or Hebrew, this will be the left side.</p>
|
|||
|
<h5 id="examples-62"><a class="doc-anchor" href="#examples-62">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"11foo1bar11"</span>.trim_end_matches(<span class="string">'1'</span>), <span class="string">"11foo1bar"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"123foo1bar123"</span>.trim_end_matches(char::is_numeric), <span class="string">"123foo1bar"</span>);
|
|||
|
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"12foo1bar12"</span>.trim_end_matches(x), <span class="string">"12foo1bar"</span>);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"1fooX"</span>.trim_end_matches(|c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>), <span class="string">"1foo"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_left_matches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2300">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_left_matches" class="fn">trim_left_matches</a><P>(&self, pat: P) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,</div></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: superseded by <code>trim_start_matches</code></span></div></span></summary><div class="docblock"><p>Returns a string slice with all prefixes that match a pattern
|
|||
|
repeatedly removed.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="text-directionality-6"><a class="doc-anchor" href="#text-directionality-6">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. ‘Left’ in this context means the first
|
|||
|
position of that byte string; for a language like Arabic or Hebrew
|
|||
|
which are ‘right to left’ rather than ‘left to right’, this will be
|
|||
|
the <em>right</em> side, not the left.</p>
|
|||
|
<h5 id="examples-63"><a class="doc-anchor" href="#examples-63">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"11foo1bar11"</span>.trim_left_matches(<span class="string">'1'</span>), <span class="string">"foo1bar11"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"123foo1bar123"</span>.trim_left_matches(char::is_numeric), <span class="string">"foo1bar123"</span>);
|
|||
|
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"12foo1bar12"</span>.trim_left_matches(x), <span class="string">"foo1bar12"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_right_matches" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2343-2345">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_right_matches" class="fn">trim_right_matches</a><P>(&self, pat: P) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a><div class="where">where
|
|||
|
P: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>,
|
|||
|
<P as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html" title="trait core::str::pattern::Pattern">Pattern</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.Pattern.html#associatedtype.Searcher" title="type core::str::pattern::Pattern::Searcher">Searcher</a><'a>: for<'a> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/pattern/trait.ReverseSearcher.html" title="trait core::str::pattern::ReverseSearcher">ReverseSearcher</a><'a>,</div></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.33.0: superseded by <code>trim_end_matches</code></span></div></span></summary><div class="docblock"><p>Returns a string slice with all suffixes that match a pattern
|
|||
|
repeatedly removed.</p>
|
|||
|
<p>The <a href="https://doc.rust-lang.org/1.82.0/core/str/pattern/index.html" title="mod core::str::pattern">pattern</a> can be a <code>&str</code>, <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>, a slice of <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a>s, or a
|
|||
|
function or closure that determines if a character matches.</p>
|
|||
|
<h5 id="text-directionality-7"><a class="doc-anchor" href="#text-directionality-7">§</a>Text directionality</h5>
|
|||
|
<p>A string is a sequence of bytes. ‘Right’ in this context means the last
|
|||
|
position of that byte string; for a language like Arabic or Hebrew
|
|||
|
which are ‘right to left’ rather than ‘left to right’, this will be
|
|||
|
the <em>left</em> side, not the right.</p>
|
|||
|
<h5 id="examples-64"><a class="doc-anchor" href="#examples-64">§</a>Examples</h5>
|
|||
|
<p>Simple patterns:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"11foo1bar11"</span>.trim_right_matches(<span class="string">'1'</span>), <span class="string">"11foo1bar"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"123foo1bar123"</span>.trim_right_matches(char::is_numeric), <span class="string">"123foo1bar"</span>);
|
|||
|
|
|||
|
<span class="kw">let </span>x: <span class="kw-2">&</span>[<span class="kw">_</span>] = <span class="kw-2">&</span>[<span class="string">'1'</span>, <span class="string">'2'</span>];
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"12foo1bar12"</span>.trim_right_matches(x), <span class="string">"12foo1bar"</span>);</code></pre></div>
|
|||
|
<p>A more complex pattern, using a closure:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"1fooX"</span>.trim_right_matches(|c| c == <span class="string">'1' </span>|| c == <span class="string">'X'</span>), <span class="string">"1foo"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.parse" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2395">source</a></span><h4 class="code-header">pub fn <a href="#method.parse" class="fn">parse</a><F>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><F, <F as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/str/traits/trait.FromStr.html#associatedtype.Err" title="type core::str::traits::FromStr::Err">Err</a>><div class="where">where
|
|||
|
F: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr">FromStr</a>,</div></h4></section></summary><div class="docblock"><p>Parses this string slice into another type.</p>
|
|||
|
<p>Because <code>parse</code> is so general, it can cause problems with type
|
|||
|
inference. As such, <code>parse</code> is one of the few times you’ll see
|
|||
|
the syntax affectionately known as the ‘turbofish’: <code>::<></code>. This
|
|||
|
helps the inference algorithm understand specifically which type
|
|||
|
you’re trying to parse into.</p>
|
|||
|
<p><code>parse</code> can parse into any type that implements the <a href="https://doc.rust-lang.org/1.82.0/core/str/traits/trait.FromStr.html" title="trait core::str::traits::FromStr"><code>FromStr</code></a> trait.</p>
|
|||
|
<h5 id="errors"><a class="doc-anchor" href="#errors">§</a>Errors</h5>
|
|||
|
<p>Will return <a href="https://doc.rust-lang.org/1.82.0/core/str/traits/trait.FromStr.html#associatedtype.Err" title="associated type core::str::traits::FromStr::Err"><code>Err</code></a> if it’s not possible to parse this string slice into
|
|||
|
the desired type.</p>
|
|||
|
<h5 id="examples-65"><a class="doc-anchor" href="#examples-65">§</a>Examples</h5>
|
|||
|
<p>Basic usage</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>four: u32 = <span class="string">"4"</span>.parse().unwrap();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="number">4</span>, four);</code></pre></div>
|
|||
|
<p>Using the ‘turbofish’ instead of annotating <code>four</code>:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>four = <span class="string">"4"</span>.parse::<u32>();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="prelude-val">Ok</span>(<span class="number">4</span>), four);</code></pre></div>
|
|||
|
<p>Failing to parse:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>nope = <span class="string">"j"</span>.parse::<u32>();
|
|||
|
|
|||
|
<span class="macro">assert!</span>(nope.is_err());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.is_ascii" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2414">source</a></span><h4 class="code-header">pub fn <a href="#method.is_ascii" class="fn">is_ascii</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks if all characters in this string are within the ASCII range.</p>
|
|||
|
<h5 id="examples-66"><a class="doc-anchor" href="#examples-66">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>ascii = <span class="string">"hello!\n"</span>;
|
|||
|
<span class="kw">let </span>non_ascii = <span class="string">"Grüße, Jürgen ❤"</span>;
|
|||
|
|
|||
|
<span class="macro">assert!</span>(ascii.is_ascii());
|
|||
|
<span class="macro">assert!</span>(!non_ascii.is_ascii());</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.as_ascii" class="method"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2426">source</a><h4 class="code-header">pub fn <a href="#method.as_ascii" class="fn">as_ascii</a>(&self) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><&[<a class="enum" href="https://doc.rust-lang.org/1.82.0/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">AsciiChar</a>]></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>ascii_char</code>)</span></div></span></summary><div class="docblock"><p>If this string slice <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.is_ascii" title="method str::is_ascii"><code>is_ascii</code></a>, returns it as a slice
|
|||
|
of <a href="https://doc.rust-lang.org/1.82.0/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">ASCII characters</a>, otherwise returns <code>None</code>.</p>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.eq_ignore_ascii_case" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2446">source</a></span><h4 class="code-header">pub fn <a href="#method.eq_ignore_ascii_case" class="fn">eq_ignore_ascii_case</a>(&self, other: &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks that two strings are an ASCII case-insensitive match.</p>
|
|||
|
<p>Same as <code>to_ascii_lowercase(a) == to_ascii_lowercase(b)</code>,
|
|||
|
but without allocating and copying temporaries.</p>
|
|||
|
<h5 id="examples-67"><a class="doc-anchor" href="#examples-67">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert!</span>(<span class="string">"Ferris"</span>.eq_ignore_ascii_case(<span class="string">"FERRIS"</span>));
|
|||
|
<span class="macro">assert!</span>(<span class="string">"Ferrös"</span>.eq_ignore_ascii_case(<span class="string">"FERRöS"</span>));
|
|||
|
<span class="macro">assert!</span>(!<span class="string">"Ferrös"</span>.eq_ignore_ascii_case(<span class="string">"FERRÖS"</span>));</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.make_ascii_uppercase" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2471">source</a></span><h4 class="code-header">pub fn <a href="#method.make_ascii_uppercase" class="fn">make_ascii_uppercase</a>(&mut self)</h4></section></summary><div class="docblock"><p>Converts this string to its ASCII upper case equivalent in-place.</p>
|
|||
|
<p>ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’,
|
|||
|
but non-ASCII letters are unchanged.</p>
|
|||
|
<p>To return a new uppercased value without modifying the existing one, use
|
|||
|
<a href="#method.to_ascii_uppercase"><code>to_ascii_uppercase()</code></a>.</p>
|
|||
|
<h5 id="examples-68"><a class="doc-anchor" href="#examples-68">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = String::from(<span class="string">"Grüße, Jürgen ❤"</span>);
|
|||
|
|
|||
|
s.make_ascii_uppercase();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"GRüßE, JüRGEN ❤"</span>, s);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.make_ascii_lowercase" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.23.0">1.23.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2498">source</a></span><h4 class="code-header">pub fn <a href="#method.make_ascii_lowercase" class="fn">make_ascii_lowercase</a>(&mut self)</h4></section></summary><div class="docblock"><p>Converts this string to its ASCII lower case equivalent in-place.</p>
|
|||
|
<p>ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’,
|
|||
|
but non-ASCII letters are unchanged.</p>
|
|||
|
<p>To return a new lowercased value without modifying the existing one, use
|
|||
|
<a href="#method.to_ascii_lowercase"><code>to_ascii_lowercase()</code></a>.</p>
|
|||
|
<h5 id="examples-69"><a class="doc-anchor" href="#examples-69">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>s = String::from(<span class="string">"GRÜßE, JÜRGEN ❤"</span>);
|
|||
|
|
|||
|
s.make_ascii_lowercase();
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">"grÜße, jÜrgen ❤"</span>, s);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_ascii_start" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.80.0">1.80.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2523">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_ascii_start" class="fn">trim_ascii_start</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string slice with leading ASCII whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ refers to the definition used by
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html#method.is_ascii_whitespace" title="method u8::is_ascii_whitespace"><code>u8::is_ascii_whitespace</code></a>.</p>
|
|||
|
<h5 id="examples-70"><a class="doc-anchor" href="#examples-70">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">" \t \u{3000}hello world\n"</span>.trim_ascii_start(), <span class="string">"\u{3000}hello world\n"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" "</span>.trim_ascii_start(), <span class="string">""</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">""</span>.trim_ascii_start(), <span class="string">""</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_ascii_end" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.80.0">1.80.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2548">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_ascii_end" class="fn">trim_ascii_end</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string slice with trailing ASCII whitespace removed.</p>
|
|||
|
<p>‘Whitespace’ refers to the definition used by
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html#method.is_ascii_whitespace" title="method u8::is_ascii_whitespace"><code>u8::is_ascii_whitespace</code></a>.</p>
|
|||
|
<h5 id="examples-71"><a class="doc-anchor" href="#examples-71">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"\r hello world\u{3000}\n "</span>.trim_ascii_end(), <span class="string">"\r hello world\u{3000}"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" "</span>.trim_ascii_end(), <span class="string">""</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">""</span>.trim_ascii_end(), <span class="string">""</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.trim_ascii" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.80.0">1.80.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2574">source</a></span><h4 class="code-header">pub fn <a href="#method.trim_ascii" class="fn">trim_ascii</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class="docblock"><p>Returns a string slice with leading and trailing ASCII whitespace
|
|||
|
removed.</p>
|
|||
|
<p>‘Whitespace’ refers to the definition used by
|
|||
|
<a href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html#method.is_ascii_whitespace" title="method u8::is_ascii_whitespace"><code>u8::is_ascii_whitespace</code></a>.</p>
|
|||
|
<h5 id="examples-72"><a class="doc-anchor" href="#examples-72">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"\r hello world\n "</span>.trim_ascii(), <span class="string">"hello world"</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">" "</span>.trim_ascii(), <span class="string">""</span>);
|
|||
|
<span class="macro">assert_eq!</span>(<span class="string">""</span>.trim_ascii(), <span class="string">""</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.escape_debug" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.34.0">1.34.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2617">source</a></span><h4 class="code-header">pub fn <a href="#method.escape_debug" class="fn">escape_debug</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.EscapeDebug.html" title="struct core::str::iter::EscapeDebug">EscapeDebug</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator that escapes each char in <code>self</code> with <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html#method.escape_debug" title="method char::escape_debug"><code>char::escape_debug</code></a>.</p>
|
|||
|
<p>Note: only extended grapheme codepoints that begin the string will be
|
|||
|
escaped.</p>
|
|||
|
<h5 id="examples-73"><a class="doc-anchor" href="#examples-73">§</a>Examples</h5>
|
|||
|
<p>As an iterator:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">for </span>c <span class="kw">in </span><span class="string">"❤\n!"</span>.escape_debug() {
|
|||
|
<span class="macro">print!</span>(<span class="string">"{c}"</span>);
|
|||
|
}
|
|||
|
<span class="macro">println!</span>();</code></pre></div>
|
|||
|
<p>Using <code>println!</code> directly:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="string">"❤\n!"</span>.escape_debug());</code></pre></div>
|
|||
|
<p>Both are equivalent to:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">println!</span>(<span class="string">"❤\\n!"</span>);</code></pre></div>
|
|||
|
<p>Using <code>to_string</code>:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"❤\n!"</span>.escape_debug().to_string(), <span class="string">"❤\\n!"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.escape_default" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.34.0">1.34.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2663">source</a></span><h4 class="code-header">pub fn <a href="#method.escape_default" class="fn">escape_default</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.EscapeDefault.html" title="struct core::str::iter::EscapeDefault">EscapeDefault</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator that escapes each char in <code>self</code> with <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html#method.escape_default" title="method char::escape_default"><code>char::escape_default</code></a>.</p>
|
|||
|
<h5 id="examples-74"><a class="doc-anchor" href="#examples-74">§</a>Examples</h5>
|
|||
|
<p>As an iterator:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">for </span>c <span class="kw">in </span><span class="string">"❤\n!"</span>.escape_default() {
|
|||
|
<span class="macro">print!</span>(<span class="string">"{c}"</span>);
|
|||
|
}
|
|||
|
<span class="macro">println!</span>();</code></pre></div>
|
|||
|
<p>Using <code>println!</code> directly:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="string">"❤\n!"</span>.escape_default());</code></pre></div>
|
|||
|
<p>Both are equivalent to:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">println!</span>(<span class="string">"\\u{{2764}}\\n!"</span>);</code></pre></div>
|
|||
|
<p>Using <code>to_string</code>:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"❤\n!"</span>.escape_default().to_string(), <span class="string">"\\u{2764}\\n!"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.escape_unicode" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.34.0">1.34.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2701">source</a></span><h4 class="code-header">pub fn <a href="#method.escape_unicode" class="fn">escape_unicode</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/str/iter/struct.EscapeUnicode.html" title="struct core::str::iter::EscapeUnicode">EscapeUnicode</a><'_></h4></section></summary><div class="docblock"><p>Returns an iterator that escapes each char in <code>self</code> with <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html#method.escape_unicode" title="method char::escape_unicode"><code>char::escape_unicode</code></a>.</p>
|
|||
|
<h5 id="examples-75"><a class="doc-anchor" href="#examples-75">§</a>Examples</h5>
|
|||
|
<p>As an iterator:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">for </span>c <span class="kw">in </span><span class="string">"❤\n!"</span>.escape_unicode() {
|
|||
|
<span class="macro">print!</span>(<span class="string">"{c}"</span>);
|
|||
|
}
|
|||
|
<span class="macro">println!</span>();</code></pre></div>
|
|||
|
<p>Using <code>println!</code> directly:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">println!</span>(<span class="string">"{}"</span>, <span class="string">"❤\n!"</span>.escape_unicode());</code></pre></div>
|
|||
|
<p>Both are equivalent to:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">println!</span>(<span class="string">"\\u{{2764}}\\u{{a}}\\u{{21}}"</span>);</code></pre></div>
|
|||
|
<p>Using <code>to_string</code>:</p>
|
|||
|
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">"❤\n!"</span>.escape_unicode().to_string(), <span class="string">"\\u{2764}\\u{a}\\u{21}"</span>);</code></pre></div>
|
|||
|
</div></details><details class="toggle method-toggle" open><summary><section id="method.substr_range" class="method"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/str/mod.rs.html#2734">source</a><h4 class="code-header">pub fn <a href="#method.substr_range" class="fn">substr_range</a>(&self, substr: &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="struct" href="https://doc.rust-lang.org/1.82.0/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>>></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>substr_range</code>)</span></div></span></summary><div class="docblock"><p>Returns the range that a substring points to.</p>
|
|||
|
<p>Returns <code>None</code> if <code>substr</code> does not point within <code>self</code>.</p>
|
|||
|
<p>Unlike <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.find" title="method str::find"><code>str::find</code></a>, <strong>this does not search through the string</strong>.
|
|||
|
Instead, it uses pointer arithmetic to find where in the string
|
|||
|
<code>substr</code> is derived from.</p>
|
|||
|
<p>This is useful for extending <a href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html#method.split" title="method str::split"><code>str::split</code></a> and similar methods.</p>
|
|||
|
<p>Note that this method may return false positives (typically either
|
|||
|
<code>Some(0..0)</code> or <code>Some(self.len()..self.len())</code>) if <code>substr</code> is a
|
|||
|
zero-length <code>str</code> that points at the beginning or end of another,
|
|||
|
independent, <code>str</code>.</p>
|
|||
|
<h5 id="examples-76"><a class="doc-anchor" href="#examples-76">§</a>Examples</h5>
|
|||
|
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(substr_range)]
|
|||
|
|
|||
|
</span><span class="kw">let </span>data = <span class="string">"a, b, b, a"</span>;
|
|||
|
<span class="kw">let </span><span class="kw-2">mut </span>iter = data.split(<span class="string">", "</span>).map(|s| data.substr_range(s).unwrap());
|
|||
|
|
|||
|
<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>..<span class="number">1</span>));
|
|||
|
<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">3</span>..<span class="number">4</span>));
|
|||
|
<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">6</span>..<span class="number">7</span>));
|
|||
|
<span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">9</span>..<span class="number">10</span>));</code></pre></div>
|
|||
|
</div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-AsRef%3C%5Bu8%5D%3E-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#405-410">source</a><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><[<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>]> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_ref-1" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#407-409">source</a><a href="#method.as_ref-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&self) -> &[<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.u8.html">u8</a>]</h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsRef%3Cstr%3E-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#398-403">source</a><a href="#impl-AsRef%3Cstr%3E-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#400-402">source</a><a href="#method.as_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&self) -> &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#340-346">source</a><a href="#impl-Clone-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#341-345">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/clone/trait.Clone.html#tymeth
|
|||
|
H: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
|
|||
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <a href="https://doc.rust-lang.org/1.82.0/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/1.82.0/core/hash/trait.Hash.html#method.hash_slice">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Hash-for-String%3CN%3E-1" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#367-372">source</a><a href="#impl-Hash-for-String%3CN%3E-1" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="../hash32/trait.Hash.html" title="trait hash32::Hash">Hash</a> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.hash-1" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#369-371">source</a><a href="#method.hash-1" class="anchor">§</a><h4 class="code-header">fn <a href="../hash32/trait.Hash.html#tymethod.hash" class="fn">hash</a><H: <a class="trait" href="../hash32/trait.Hasher.html" title="trait hash32::Hasher">Hasher</a>>(&self, hasher: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&mut H</a>)</h4></section></summary><div class='docblock'>Feeds this value into the given <code>Hasher</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.hash_slice-1" class="method trait-impl"><a class="src rightside" href="../src/hash32/lib.rs.html#192-195">source</a><a href="#method.hash_slice-1" class="anchor">§</a><h4 class="code-header">fn <a href="../hash32/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a><H>(data: &[Self], state: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&mut H</a>)<div class="where">where
|
|||
|
H: <a class="trait" href="../hash32/trait.Hasher.html" title="trait hash32::Hasher">Hasher</a>,
|
|||
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Feeds a slice of this type into the given <code>Hasher</code>.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Ord-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#479-484">source</a><a href="#impl-Ord-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.cmp" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#481-483">source</a><a href="#method.cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#tymethod.cmp" class="fn">cmp</a>(&self, other: &Self) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a></h4></section></summary><div class='docblock'>This method returns an <a href="https://doc.rust-lang.org/1.82.0/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering"><code>Ordering</code></a> between <code>self</code> and <code>other</code>. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#tymethod.cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.max" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#854-856">source</a></span><a href="#method.max" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#method.max" class="fn">max</a>(self, other: Self) -> Self<div class="where">where
|
|||
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the maximum of two values. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#method.max">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.min" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.21.0">1.21.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#875-877">source</a></span><a href="#method.min" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#method.min" class="fn">min</a>(self, other: Self) -> Self<div class="where">where
|
|||
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class='docblock'>Compares and returns the minimum of two values. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#method.min">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clamp" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.50.0">1.50.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#901-904">source</a></span><a href="#method.clamp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#method.clamp" class="fn">clamp</a>(self, min: Self, max: Self) -> Self<div class="where">where
|
|||
|
Self: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div class='docblock'>Restrict a value to a certain interval. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Ord.html#method.clamp">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3C%26str%3E-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#435-444">source</a><a href="#impl-PartialEq%3C%26str%3E-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq-2" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#437-439">source</a><a href="#method.eq-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-2" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#441-443">source</a><a href="#method.ne-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: &&<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
|
|||
|
and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CString%3CN%3E%3E-for-%26str" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#459-468">source</a><a href="#impl-PartialEq%3CString%3CN%3E%3E-for-%26str" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N>> for &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq-4" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#461-463">source</a><a href="#method.eq-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-4" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#465-467">source</a><a href="#method.ne-4" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
|
|||
|
and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CString%3CN%3E%3E-for-str" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#447-456">source</a><a href="#impl-PartialEq%3CString%3CN%3E%3E-for-str" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N>> for <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq-3" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#449-451">source</a><a href="#method.eq-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-3" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#453-455">source</a><a href="#method.ne-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
|
|||
|
and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3CString%3CN2%3E%3E-for-String%3CN1%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#412-420">source</a><a href="#impl-PartialEq%3CString%3CN2%3E%3E-for-String%3CN1%3E" class="anchor">§</a><h3 class="code-header">impl<const N1: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, const N2: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N2>> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N1></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#413-415">source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, rhs: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N2>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#417-419">source</a><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, rhs: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N2>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
|
|||
|
and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq%3Cstr%3E-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#423-432">source</a><a href="#impl-PartialEq%3Cstr%3E-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq-1" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#425-427">source</a><a href="#method.eq-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&self, other: &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne-1" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#429-431">source</a><a href="#method.ne-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&self, other: &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
|
|||
|
and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialOrd%3CString%3CN2%3E%3E-for-String%3CN1%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#472-477">source</a><a href="#impl-PartialOrd%3CString%3CN2%3E%3E-for-String%3CN1%3E" class="anchor">§</a><h3 class="code-header">impl<const N1: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>, const N2: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a><<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N2>> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N1></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.partial_cmp" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#474-476">source</a><a href="#method.partial_cmp" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" class="fn">partial_cmp</a>(&self, other: &<a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N2>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a><<a class="enum" href="https://doc.rust-lang.org/1.82.0/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>></h4></section></summary><div class='docblock'>This method returns an ordering between <code>self</code> and <code>other</code> values if one exists. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.lt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#1178">source</a></span><a href="#method.lt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.lt" class="fn">lt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&Rhs</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests less than (for <code>self</code> and <code>other</code>) and is used by the <code><</code> operator. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.lt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.le" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#1196">source</a></span><a href="#method.le" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.le" class="fn">le</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&Rhs</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests less than or equal to (for <code>self</code> and <code>other</code>) and is used by the
|
|||
|
<code><=</code> operator. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.le">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.gt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#1214">source</a></span><a href="#method.gt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.gt" class="fn">gt</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&Rhs</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests greater than (for <code>self</code> and <code>other</code>) and is used by the <code>></code>
|
|||
|
operator. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.gt">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.ge" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/cmp.rs.html#1232">source</a></span><a href="#method.ge" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.ge" class="fn">ge</a>(&self, other: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&Rhs</a>) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests greater than or equal to (for <code>self</code> and <code>other</code>) and is used by
|
|||
|
the <code>>=</code> operator. <a href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.PartialOrd.html#method.ge">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Write-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#374-382">source</a><a href="#impl-Write-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html" title="trait core::fmt::Write">Write</a> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.write_str" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#375-377">source</a><a href="#method.write_str" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html#tymethod.write_str" class="fn">write_str</a>(&mut self, s: &<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.str.html">str</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Writes a string slice into this writer, returning whether the write
|
|||
|
succeeded. <a href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html#tymethod.write_str">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.write_char" class="method trait-impl"><a class="src rightside" href="../src/heapless/string.rs.html#379-381">source</a><a href="#method.write_char" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html#method.write_char" class="fn">write_char</a>(&mut self, c: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html">char</a>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Writes a <a href="https://doc.rust-lang.org/1.82.0/core/primitive.char.html" title="primitive char"><code>char</code></a> into this writer, returning whether the write succeeded. <a href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html#method.write_char">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.write_fmt" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.82.0/src/core/fmt/mod.rs.html#202">source</a></span><a href="#method.write_fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html#method.write_fmt" class="fn">write_fmt</a>(&mut self, args: <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/fmt/struct.Arguments.html" title="struct core::fmt::Arguments">Arguments</a><'_>) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>></h4></section></summary><div class='docblock'>Glue for usage of the <a href="https://doc.rust-lang.org/1.82.0/core/macro.write.html" title="macro core::write"><code>write!</code></a> macro with implementors of this trait. <a href="https://doc.rust-lang.org/1.82.0/core/fmt/trait.Write.html#method.write_fmt">Read more</a></div></details></div></details><section id="impl-Eq-for-String%3CN%3E" class="impl"><a class="src rightside" href="../src/heapless/string.rs.html#470">source</a><a href="#impl-Eq-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-String%3CN%3E" class="impl"><a href="#impl-Freeze-for-String%3CN%3E" class="anchor">§</a><h3 class="code-header">impl<const N: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.usize.html">usize</a>> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.String.html" title="struct heapless::String">String</a><N></h3></section><section id="impl-RefUnwindSafe-for-String%3CN%3E" class="impl"><a href="#impl-RefUnwindSafe-for-String%3CN%3E" class="an
|
|||
|
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/any.rs.html#139">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&self) -> <a class="struct" href="https://doc.rust-lang.org/1.82.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.82.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/borrow.rs.html#209">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a><T> for T<div class="where">where
|
|||
|
T: ?<a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/borrow.rs.html#211">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.82.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/borrow.rs.html#217">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a><T> for T<div class="where">where
|
|||
|
T: ?<a class="trait" href="https://doc.rust-lang.org/1.82.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/borrow.rs.html#218">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&mut self) -> <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.reference.html">&mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.82.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/clone.rs.html#273">source</a><a href="#impl-CloneToUninit-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
|
|||
|
T: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone_to_uninit" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/clone.rs.html#275">source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/1.82.0/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&self, dst: <a class="primitive" href="https://doc.rust-lang.org/1.82.0/core/primitive.pointer.html">*mut T</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>clone_to_uninit</code>)</span></div></span><div class='docblock'>Performs copy-assignment from <code>self</code> to <code>dst</code>. <a href="https://doc.rust-lang.org/1.82.0/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#765">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from-9" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#768">source</a><a href="#method.from-9" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -> T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
|
|||
|
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#748-750">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><U> for T<div class="where">where
|
|||
|
U: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#758">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -> U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
|
|||
|
<p>That is, this conversion is whatever the implementation of
|
|||
|
<code><a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.From.html" title="trait core::convert::From">From</a><T> for U</code> chooses to do.</p>
|
|||
|
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#805-807">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U> for T<div class="where">where
|
|||
|
U: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a><T>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#809">source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#812">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><T, <T as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><U>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#790-792">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl<T, U> <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a><U> for T<div class="where">where
|
|||
|
U: <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#794">source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = <U as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.82.0/src/core/convert/mod.rs.html#797">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -> <a class="enum" href="https://doc.rust-lang.org/1.82.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a><U, <U as <a class="trait" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a><T>>::<a class="associatedtype" href="https://doc.rust-lang.org/1.82.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>></h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>
|