| <!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="API documentation for the Rust `GraphemeCursor` struct in crate `unicode_segmentation`."> |
| <meta name="keywords" content="rust, rustlang, rust-lang, GraphemeCursor"> |
| |
| <title>unicode_segmentation::GraphemeCursor - Rust</title> |
| |
| <link rel="stylesheet" type="text/css" href="../normalize.css"> |
| <link rel="stylesheet" type="text/css" href="../rustdoc.css"> |
| <link rel="stylesheet" type="text/css" href="../main.css"> |
| |
| |
| <link rel="shortcut icon" href="https://unicode-rs.github.io/unicode-rs_sm.png"> |
| |
| </head> |
| <body class="rustdoc struct"> |
| <!--[if lte IE 8]> |
| <div class="warning"> |
| This old browser is unsupported and will most likely display funky |
| things. |
| </div> |
| <![endif]--> |
| |
| |
| |
| <nav class="sidebar"> |
| <a href='../unicode_segmentation/index.html'><img src='https://unicode-rs.github.io/unicode-rs_sm.png' alt='logo' width='100'></a> |
| <p class='location'>Struct GraphemeCursor</p><div class="block items"><ul><li><a href="#methods">Methods</a></li><li><a href="#implementations">Trait Implementations</a></li></ul></div><p class='location'><a href='index.html'>unicode_segmentation</a></p><script>window.sidebarCurrent = {name: 'GraphemeCursor', ty: 'struct', relpath: ''};</script><script defer src="sidebar-items.js"></script> |
| </nav> |
| |
| <nav class="sub"> |
| <form class="search-form js-only"> |
| <div class="search-container"> |
| <input class="search-input" name="search" |
| autocomplete="off" |
| placeholder="Click or press ‘S’ to search, ‘?’ for more options…" |
| type="search"> |
| </div> |
| </form> |
| </nav> |
| |
| <section id='main' class="content"> |
| <h1 class='fqn'><span class='in-band'>Struct <a href='index.html'>unicode_segmentation</a>::<wbr><a class="struct" href=''>GraphemeCursor</a></span><span class='out-of-band'><span id='render-detail'> |
| <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs"> |
| [<span class='inner'>−</span>] |
| </a> |
| </span><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#157-181' title='goto source code'>[src]</a></span></h1> |
| <pre class='rust struct'>pub struct GraphemeCursor { /* fields omitted */ }</pre><div class='docblock'><p>Cursor-based segmenter for grapheme clusters.</p> |
| </div> |
| <h2 id='methods' class='small-section-header'> |
| Methods<a href='#methods' class='anchor'></a> |
| </h2> |
| <h3 class='impl'><span class='in-band'><code>impl <a class="struct" href="../unicode_segmentation/struct.GraphemeCursor.html" title="struct unicode_segmentation::GraphemeCursor">GraphemeCursor</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#252-661' title='goto source code'>[src]</a></span></h3> |
| <div class='impl-items'><h4 id='method.new' class="method"><span id='new.v' class='invisible'><code>fn <a href='#method.new' class='fnname'>new</a>(offset: usize, len: usize, is_extended: bool) -> <a class="struct" href="../unicode_segmentation/struct.GraphemeCursor.html" title="struct unicode_segmentation::GraphemeCursor">GraphemeCursor</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#267-284' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Create a new cursor. The string and initial offset are given at creation |
| time, but the contents of the string are not. The <code>is_extended</code> parameter |
| controls whether extended grapheme clusters are selected.</p> |
| |
| <p>The <code>offset</code> parameter must be on a codepoint boundary.</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">"हिन्दी"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">legacy</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">0</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">legacy</span>.<span class="ident">next_boundary</span>(<span class="ident">s</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="string">"ह"</span>.<span class="ident">len</span>()))); |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">extended</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">0</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">true</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">extended</span>.<span class="ident">next_boundary</span>(<span class="ident">s</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="string">"हि"</span>.<span class="ident">len</span>())));</pre> |
| </div><h4 id='method.set_cursor' class="method"><span id='set_cursor.v' class='invisible'><code>fn <a href='#method.set_cursor' class='fnname'>set_cursor</a>(&mut self, offset: usize)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#298-311' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Set the cursor to a new location in the same string.</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">"abcd"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">0</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>(), <span class="number">0</span>); |
| <span class="ident">cursor</span>.<span class="ident">set_cursor</span>(<span class="number">2</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>(), <span class="number">2</span>);</pre> |
| </div><h4 id='method.cur_cursor' class="method"><span id='cur_cursor.v' class='invisible'><code>fn <a href='#method.cur_cursor' class='fnname'>cur_cursor</a>(&self) -> usize</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#326-328' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>The current offset of the cursor. Equal to the last value provided to |
| <code>new()</code> or <code>set_cursor()</code>, or returned from <code>next_boundary()</code> or |
| <code>prev_boundary()</code>.</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="comment">// Two flags (🇷🇸🇮🇴), each flag is two RIS codepoints, each RIS is 4 bytes.</span> |
| <span class="kw">let</span> <span class="ident">flags</span> <span class="op">=</span> <span class="string">"\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">4</span>, <span class="ident">flags</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>(), <span class="number">4</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">8</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">cur_cursor</span>(), <span class="number">8</span>);</pre> |
| </div><h4 id='method.provide_context' class="method"><span id='provide_context.v' class='invisible'><code>fn <a href='#method.provide_context' class='fnname'>provide_context</a>(&mut self, chunk: &str, chunk_start: usize)</code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#349-365' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Provide additional pre-context when it is needed to decide a boundary. |
| The end of the chunk must coincide with the value given in the |
| <code>GraphemeIncomplete::PreContext</code> request.</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">flags</span> <span class="op">=</span> <span class="string">"\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">8</span>, <span class="ident">flags</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="comment">// Not enough pre-context to decide if there's a boundary between the two flags.</span> |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&</span><span class="ident">flags</span>[<span class="number">8</span>..], <span class="number">8</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="number">8</span>))); |
| <span class="comment">// Provide one more Regional Indicator Symbol of pre-context</span> |
| <span class="ident">cursor</span>.<span class="ident">provide_context</span>(<span class="kw-2">&</span><span class="ident">flags</span>[<span class="number">4</span>..<span class="number">8</span>], <span class="number">4</span>); |
| <span class="comment">// Still not enough context to decide.</span> |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&</span><span class="ident">flags</span>[<span class="number">8</span>..], <span class="number">8</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PreContext</span>(<span class="number">4</span>))); |
| <span class="comment">// Provide additional requested context.</span> |
| <span class="ident">cursor</span>.<span class="ident">provide_context</span>(<span class="kw-2">&</span><span class="ident">flags</span>[<span class="number">0</span>..<span class="number">4</span>], <span class="number">0</span>); |
| <span class="comment">// That's enough to decide (it always is when context goes to the start of the string)</span> |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">is_boundary</span>(<span class="kw-2">&</span><span class="ident">flags</span>[<span class="number">8</span>..], <span class="number">8</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>));</pre> |
| </div><h4 id='method.is_boundary' class="method"><span id='is_boundary.v' class='invisible'><code>fn <a href='#method.is_boundary' class='fnname'>is_boundary</a>(<br> &mut self, <br> chunk: &str, <br> chunk_start: usize<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><bool, <a class="enum" href="../unicode_segmentation/enum.GraphemeIncomplete.html" title="enum unicode_segmentation::GraphemeIncomplete">GraphemeIncomplete</a>></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#456-512' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Determine whether the current cursor location is a grapheme cluster boundary. |
| Only a part of the string need be supplied. If <code>chunk_start</code> is nonzero or |
| the length of <code>chunk</code> is not equal to <code>len</code> on creation, then this method |
| may return <code>GraphemeIncomplete::PreContext</code>. The caller should then |
| call <code>provide_context</code> with the requested chunk, then retry calling this |
| method.</p> |
| |
| <p>For partial chunks, if the cursor is not at the beginning or end of the |
| string, the chunk should contain at least the codepoint following the cursor. |
| If the string is nonempty, the chunk must be nonempty.</p> |
| |
| <p>All calls should have consistent chunk contents (ie, if a chunk provides |
| content for a given slice, all further chunks covering that slice must have |
| the same content for it).</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">flags</span> <span class="op">=</span> <span class="string">"\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">8</span>, <span class="ident">flags</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">is_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">true</span>)); |
| <span class="ident">cursor</span>.<span class="ident">set_cursor</span>(<span class="number">12</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">is_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="bool-val">false</span>));</pre> |
| </div><h4 id='method.next_boundary' class="method"><span id='next_boundary.v' class='invisible'><code>fn <a href='#method.next_boundary' class='fnname'>next_boundary</a>(<br> &mut self, <br> chunk: &str, <br> chunk_start: usize<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><usize>, <a class="enum" href="../unicode_segmentation/enum.GraphemeIncomplete.html" title="enum unicode_segmentation::GraphemeIncomplete">GraphemeIncomplete</a>></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#546-587' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Find the next boundary after the current cursor position. Only a part of |
| the string need be supplied. If the chunk is incomplete, then this |
| method might return <code>GraphemeIncomplete::PreContext</code> or |
| <code>GraphemeIncomplete::NextChunk</code>. In the former case, the caller should |
| call <code>provide_context</code> with the requested chunk, then retry. In the |
| latter case, the caller should provide the chunk following the one |
| given, then retry.</p> |
| |
| <p>See <code>is_boundary</code> for expectations on the provided chunk.</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">flags</span> <span class="op">=</span> <span class="string">"\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">4</span>, <span class="ident">flags</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">8</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">16</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>));</pre> |
| |
| <p>And an example that uses partial strings:</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">"abcd"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">0</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">NextChunk</span>)); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">2</span>..<span class="number">4</span>], <span class="number">2</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">2</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">2</span>..<span class="number">4</span>], <span class="number">2</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">3</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">2</span>..<span class="number">4</span>], <span class="number">2</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">4</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">next_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">2</span>..<span class="number">4</span>], <span class="number">2</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>));</pre> |
| </div><h4 id='method.prev_boundary' class="method"><span id='prev_boundary.v' class='invisible'><code>fn <a href='#method.prev_boundary' class='fnname'>prev_boundary</a>(<br> &mut self, <br> chunk: &str, <br> chunk_start: usize<br>) -> <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a><<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a><usize>, <a class="enum" href="../unicode_segmentation/enum.GraphemeIncomplete.html" title="enum unicode_segmentation::GraphemeIncomplete">GraphemeIncomplete</a>></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#622-660' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Find the previous boundary after the current cursor position. Only a part |
| of the string need be supplied. If the chunk is incomplete, then this |
| method might return <code>GraphemeIncomplete::PreContext</code> or |
| <code>GraphemeIncomplete::PrevChunk</code>. In the former case, the caller should |
| call <code>provide_context</code> with the requested chunk, then retry. In the |
| latter case, the caller should provide the chunk preceding the one |
| given, then retry.</p> |
| |
| <p>See <code>is_boundary</code> for expectations on the provided chunk.</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">flags</span> <span class="op">=</span> <span class="string">"\u{1F1F7}\u{1F1F8}\u{1F1EE}\u{1F1F4}"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">12</span>, <span class="ident">flags</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">8</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="ident">flags</span>, <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>));</pre> |
| |
| <p>And an example that uses partial strings (note the exact return is not |
| guaranteed, and may be <code>PrevChunk</code> or <code>PreContext</code> arbitrarily):</p> |
| |
| <pre class="rust rust-example-rendered"> |
| <span class="kw">let</span> <span class="ident">s</span> <span class="op">=</span> <span class="string">"abcd"</span>; |
| <span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">cursor</span> <span class="op">=</span> <span class="ident">GraphemeCursor</span>::<span class="ident">new</span>(<span class="number">4</span>, <span class="ident">s</span>.<span class="ident">len</span>(), <span class="bool-val">false</span>); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">2</span>..<span class="number">4</span>], <span class="number">2</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">3</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">2</span>..<span class="number">4</span>], <span class="number">2</span>), <span class="prelude-val">Err</span>(<span class="ident">GraphemeIncomplete</span>::<span class="ident">PrevChunk</span>)); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">0</span>..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">2</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">0</span>..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">1</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">0</span>..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">Some</span>(<span class="number">0</span>))); |
| <span class="macro">assert_eq</span><span class="macro">!</span>(<span class="ident">cursor</span>.<span class="ident">prev_boundary</span>(<span class="kw-2">&</span><span class="ident">s</span>[<span class="number">0</span>..<span class="number">2</span>], <span class="number">0</span>), <span class="prelude-val">Ok</span>(<span class="prelude-val">None</span>));</pre> |
| </div></div> |
| <h2 id='implementations' class='small-section-header'> |
| Trait Implementations<a href='#implementations' class='anchor'></a> |
| </h2> |
| <h3 class='impl'><span class='in-band'><code>impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="../unicode_segmentation/struct.GraphemeCursor.html" title="struct unicode_segmentation::GraphemeCursor">GraphemeCursor</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#156' title='goto source code'>[src]</a></span></h3> |
| <div class='impl-items'><h4 id='method.clone' class="method"><span id='clone.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone' class='fnname'>clone</a>(&self) -> <a class="struct" href="../unicode_segmentation/struct.GraphemeCursor.html" title="struct unicode_segmentation::GraphemeCursor">GraphemeCursor</a></code></span><span class='out-of-band'><div class='ghost'></div><a class='srclink' href='../src/unicode_segmentation/grapheme.rs.html#156' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></p> |
| </div><h4 id='method.clone_from' class="method"><span id='clone_from.v' class='invisible'><code>fn <a href='https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from' class='fnname'>clone_from</a>(&mut self, source: &Self)</code></span><span class='out-of-band'><div class='ghost'></div><div class='since' title='Stable since Rust version 1.0.0'>1.0.0</div><a class='srclink' href='https://doc.rust-lang.org/nightly/src/core/clone.rs.html#112-114' title='goto source code'>[src]</a></span></h4> |
| <div class='docblock'><p>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from">Read more</a></p> |
| </div></div></section> |
| <section id='search' class="content hidden"></section> |
| |
| <section class="footer"></section> |
| |
| <aside id="help" class="hidden"> |
| <div> |
| <h1 class="hidden">Help</h1> |
| |
| <div class="shortcuts"> |
| <h2>Keyboard Shortcuts</h2> |
| |
| <dl> |
| <dt>?</dt> |
| <dd>Show this help dialog</dd> |
| <dt>S</dt> |
| <dd>Focus the search field</dd> |
| <dt>⇤</dt> |
| <dd>Move up in search results</dd> |
| <dt>⇥</dt> |
| <dd>Move down in search results</dd> |
| <dt>⏎</dt> |
| <dd>Go to active search result</dd> |
| <dt>+</dt> |
| <dd>Collapse/expand all sections</dd> |
| </dl> |
| </div> |
| |
| <div class="infos"> |
| <h2>Search Tricks</h2> |
| |
| <p> |
| Prefix searches with a type followed by a colon (e.g. |
| <code>fn:</code>) to restrict the search to a given type. |
| </p> |
| |
| <p> |
| Accepted types are: <code>fn</code>, <code>mod</code>, |
| <code>struct</code>, <code>enum</code>, |
| <code>trait</code>, <code>type</code>, <code>macro</code>, |
| and <code>const</code>. |
| </p> |
| |
| <p> |
| Search functions by type signature (e.g. |
| <code>vec -> usize</code> or <code>* -> vec</code>) |
| </p> |
| </div> |
| </div> |
| </aside> |
| |
| |
| |
| <script> |
| window.rootPath = "../"; |
| window.currentCrate = "unicode_segmentation"; |
| </script> |
| <script src="../main.js"></script> |
| <script defer src="../search-index.js"></script> |
| </body> |
| </html> |