]> Untitled Git - bitcoindevkit.org/blob
49b6793b65d0004b9cc58f96e990d6b67a249a6c
[bitcoindevkit.org] /
1 <!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="Holds signature serialized in-line (not in `Vec`)."><title>SerializedSignature in bdk_chain::bitcoin::ecdsa - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.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-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-46132b98.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="bdk_chain" data-themes="" data-resource-suffix="" data-rustdoc-version="1.85.0-nightly (4363f9b6f 2025-01-02)" data-channel="nightly" data-search-js="search-75f5ac3e.js" data-settings-js="settings-0f613d39.js" ><script src="../../../static.files/storage-59e33391.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../../static.files/main-5f194d8c.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-893ab5e7.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-6580c154.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.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><a class="logo-container" href="../../../bdk_chain/index.html"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt=""></a></nav><nav class="sidebar"><div class="sidebar-crate"><a class="logo-container" href="../../../bdk_chain/index.html"><img src="https://github.com/bitcoindevkit/bdk/raw/master/static/bdk.png" alt="logo"></a><h2><a href="../../../bdk_chain/index.html">bdk_<wbr>chain</a><span class="version">0.21.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Serialized<wbr>Signature</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.iter" title="iter">iter</a></li><li><a href="#method.write_to" title="write_to">write_to</a></li></ul><h3><a href="#deref-methods-%5Bu8%5D">Methods from Deref&lt;<wbr>Target=[u8]&gt;</a></h3><ul class="block deref-methods"><li><a href="#method.align_to" title="align_to">align_to</a></li><li><a href="#method.align_to_mut" title="align_to_mut">align_to_mut</a></li><li><a href="#method.array_chunks" title="array_chunks">array_chunks</a></li><li><a href="#method.array_chunks_mut" title="array_chunks_mut">array_chunks_mut</a></li><li><a href="#method.array_windows" title="array_windows">array_windows</a></li><li><a href="#method.as_array" title="as_array">as_array</a></li><li><a href="#method.as_ascii" title="as_ascii">as_ascii</a></li><li><a href="#method.as_ascii_unchecked" title="as_ascii_unchecked">as_ascii_unchecked</a></li><li><a href="#method.as_bytes" title="as_bytes">as_bytes</a></li><li><a href="#method.as_chunks" title="as_chunks">as_chunks</a></li><li><a href="#method.as_chunks_mut" title="as_chunks_mut">as_chunks_mut</a></li><li><a href="#method.as_chunks_unchecked" title="as_chunks_unchecked">as_chunks_unchecked</a></li><li><a href="#method.as_chunks_unchecked_mut" title="as_chunks_unchecked_mut">as_chunks_unchecked_mut</a></li><li><a href="#method.as_flattened" title="as_flattened">as_flattened</a></li><li><a href="#method.as_flattened_mut" title="as_flattened_mut">as_flattened_mut</a></li><li><a href="#method.as_mut_array" title="as_mut_array">as_mut_array</a></li><li><a href="#method.as_mut_ptr" title="as_mut_ptr">as_mut_ptr</a></li><li><a href="#method.as_mut_ptr_range" title="as_mut_ptr_range">as_mut_ptr_range</a></li><li><a href="#method.as_ptr" title="as_ptr">as_ptr</a></li><li><a href="#method.as_ptr_range" title="as_ptr_range">as_ptr_range</a></li><li><a href="#method.as_rchunks" title="as_rchunks">as_rchunks</a></li><li><a href="#method.as_rchunks_mut" title="as_rchunks_mut">as_rchunks_mut</a></li><li><a href="#method.as_simd" title="as_simd">as_simd</a></li><li><a href="#method.as_simd_mut" title="as_simd_mut">as_simd_mut</a></li><li><a href="#method.as_str" title="as_str">as_str</a></li><li><a href="#method.binary_search" title="binary_search">binary_search</a></li><li><a href="#method.binary_search_by" title="binary_search_by">binary_search_by</a></li><li><a href="#method.binary_search_by_key" title="binary_search_by_key">binary_search_by_key</a></li><li><a href="#method.chunk_by" title="chunk_by">chunk_by</a></li><li><a href="#method.chunk_by_mut" title="chunk_by_mut">chunk_by_mut</a></li><li><a href="#method.chunks" title="chunks">chunks</a></li><li><a href="#method.chunks_exact" title="chunks_exact">chunks_exact</a></li><li><a href="#method.chunks_exact_mut" title="chunks_exact_mut">chunks_exact_mut</a></li><li><a href="#method.chunks_mut" title="chunks_mut">chunks_mut</a></li><li><a href="#method.clone_from_slice" title="clone_from_slice">clone_from_slice</a></li><li><a href="#method.concat" title="concat">concat</a></li><li><a href="#method.connect" title="connect">connect</a></li><li><a href="#method.contains" title="contains">contains</a></li><li><a href="#method.copy_from_slice" title="copy_from_slice">copy_from_slice</a></li><li><a href="#method.copy_within" title="copy_within">copy_within</a></li><li><a href="#method.element_offset" title="element_offset">element_offset</a></li><li><a href="#method.ends_with" title="ends_with">ends_with</a></li><li><a href="#method.eq_ignore_ascii_case" title="eq_ignore_ascii_case">eq_ignore_ascii_case</a></li><li><a href="#method.escape_ascii" title="escape_ascii">escape_ascii</a></li><li><a href="#method.fill" title="fill">fill</a></li><li><a href="#method.fill_with" title="fill_with">fill_with</a></li><li><a href="#method.first" title="first">first</a></li><li><a href="#method.first_chunk" title="first_chunk">first_chunk</a></li><li><a href="#method.first_chunk_mut" title="first_chunk_mut">first_chunk_mut</a></li><li><a href="#method.first_mut" title="first_mut">first_mut</a></li><li><a href="#method.get" title="get">get</a></li><li><a href="#method.get_many_mut" title="get_many_mut">get_many_mut</a></li><li><a href="#method.get_many_unchecked_mut" title="get_many_unchecked_mut">get_many_unchecked_mut</a></li><li><a href="#method.get_mut" title="get_mut">get_mut</a></li><li><a href="#method.get_unchecked" title="get_unchecked">get_unchecked</a></li><li><a href="#method.get_unchecked_mut" title="get_unchecked_mut">get_unchecked_mut</a></li><li><a href="#method.is_ascii" title="is_ascii">is_ascii</a></li><li><a href="#method.is_empty" title="is_empty">is_empty</a></li><li><a href="#method.is_sorted" title="is_sorted">is_sorted</a></li><li><a href="#method.is_sorted_by" title="is_sorted_by">is_sorted_by</a></li><li><a href="#method.is_sorted_by_key" title="is_sorted_by_key">is_sorted_by_key</a></li><li><a href="#method.iter-1" title="iter">iter</a></li><li><a href="#method.iter_mut" title="iter_mut">iter_mut</a></li><li><a href="#method.join" title="join">join</a></li><li><a href="#method.last" title="last">last</a></li><li><a href="#method.last_chunk" title="last_chunk">last_chunk</a></li><li><a href="#method.last_chunk_mut" title="last_chunk_mut">last_chunk_mut</a></li><li><a href="#method.last_mut" title="last_mut">last_mut</a></li><li><a href="#method.len" title="len">len</a></li><li><a href="#method.make_ascii_lowercase" title="make_ascii_lowercase">make_ascii_lowercase</a></li><li><a href="#method.make_ascii_uppercase" title="make_ascii_uppercase">make_ascii_uppercase</a></li><li><a href="#method.partition_dedup" title="partition_dedup">partition_dedup</a></li><li><a href="#method.partition_dedup_by" title="partition_dedup_by">partition_dedup_by</a></li><li><a href="#method.partition_dedup_by_key" title="partition_dedup_by_key">partition_dedup_by_key</a></li><li><a href="#method.partition_point" title="partition_point">partition_point</a></li><li><a href="#method.rchunks" title="rchunks">rchunks</a></li><li><a href="#method.rchunks_exact" title="rchunks_exact">rchunks_exact</a></li><li><a href="#method.rchunks_exact_mut" title="rchunks_exact_mut">rchunks_exact_mut</a></li><li><a href="#method.rchunks_mut" title="rchunks_mut">rchunks_mut</a></li><li><a href="#method.repeat" title="repeat">repeat</a></li><li><a href="#method.reverse" title="reverse">reverse</a></li><li><a href="#method.rotate_left" title="rotate_left">rotate_left</a></li><li><a href="#method.rotate_right" title="rotate_right">rotate_right</a></li><li><a href="#method.rsplit" title="rsplit">rsplit</a></li><li><a href="#method.rsplit_mut" title="rsplit_mut">rsplit_mut</a></li><li><a href="#method.rsplit_once" title="rsplit_once">rsplit_once</a></li><li><a href="#method.rsplitn" title="rsplitn">rsplitn</a></li><li><a href="#method.rsplitn_mut" title="rsplitn_mut">rsplitn_mut</a></li><li><a href="#method.select_nth_unstable" title="select_nth_unstable">select_nth_unstable</a></li><li><a href="#method.select_nth_unstable_by" title="select_nth_unstable_by">select_nth_unstable_by</a></li><li><a href="#method.select_nth_unstable_by_key" title="select_nth_unstable_by_key">select_nth_unstable_by_key</a></li><li><a href="#method.sort" title="sort">sort</a></li><li><a href="#method.sort_by" title="sort_by">sort_by</a></li><li><a href="#method.sort_by_cached_key" title="sort_by_cached_key">sort_by_cached_key</a></li><li><a href="#method.sort_by_key" title="sort_by_key">sort_by_key</a></li><li><a href="#method.sort_floats" title="sort_floats">sort_floats</a></li><li><a href="#method.sort_floats-1" title="sort_floats">sort_floats</a></li><li><a href="#method.sort_unstable" title="sort_unstable">sort_unstable</a></li><li><a href="#method.sort_unstable_by" title="sort_unstable_by">sort_unstable_by</a></li><li><a href="#method.sort_unstable_by_key" title="sort_unstable_by_key">sort_unstable_by_key</a></li><li><a href="#method.split" title="split">split</a></li><li><a href="#method.split_at" title="split_at">split_at</a></li><li><a href="#method.split_at_checked" title="split_at_checked">split_at_checked</a></li><li><a href="#method.split_at_mut" title="split_at_mut">split_at_mut</a></li><li><a href="#method.split_at_mut_checked" title="split_at_mut_checked">split_at_mut_checked</a></li><li><a href="#method.split_at_mut_unchecked" title="split_at_mut_unchecked">split_at_mut_unchecked</a></li><li><a href="#method.split_at_unchecked" title="split_at_unchecked">split_at_unchecked</a></li><li><a href="#method.split_first" title="split_first">split_first</a></li><li><a href="#method.split_first_chunk" title="split_first_chunk">split_first_chunk</a></li><li><a href="#method.split_first_chunk_mut" title="split_first_chunk_mut">split_first_chunk_mut</a></li><li><a href="#method.split_first_mut" title="split_first_mut">split_first_mut</a></li><li><a href="#method.split_inclusive" title="split_inclusive">split_inclusive</a></li><li><a href="#method.split_inclusive_mut" title="split_inclusive_mut">split_inclusive_mut</a></li><li><a href="#method.split_last" title="split_last">split_last</a></li><li><a href="#method.split_last_chunk" title="split_last_chunk">split_last_chunk</a></li><li><a href="#method.split_last_chunk_mut" title="split_last_chunk_mut">split_last_chunk_mut</a></li><li><a href="#method.split_last_mut" title="split_last_mut">split_last_mut</a></li><li><a href="#method.split_mut" title="split_mut">split_mut</a></li><li><a href="#method.split_once" title="split_once">split_once</a></li><li><a href="#method.splitn" title="splitn">splitn</a></li><li><a href="#method.splitn_mut" title="splitn_mut">splitn_mut</a></li><li><a href="#method.starts_with" title="starts_with">starts_with</a></li><li><a href="#method.strip_prefix" title="strip_prefix">strip_prefix</a></li><li><a href="#method.strip_suffix" title="strip_suffix">strip_suffix</a></li><li><a href="#method.subslice_range" title="subslice_range">subslice_range</a></li><li><a href="#method.swap" title="swap">swap</a></li><li><a href="#method.swap_unchecked" title="swap_unchecked">swap_unchecked</a></li><li><a href="#method.swap_with_slice" title="swap_with_slice">swap_with_slice</a></li><li><a href="#method.take" title="take">take</a></li><li><a href="#method.take_first" title="take_first">take_first</a></li><li><a href="#method.take_first_mut" title="take_first_mut">take_first_mut</a></li><li><a href="#method.take_last" title="take_last">take_last</a></li><li><a href="#method.take_last_mut" title="take_last_mut">take_last_mut</a></li><li><a href="#method.take_mut" title="take_mut">take_mut</a></li><li><a href="#method.to_ascii_lowercase" title="to_ascii_lowercase">to_ascii_lowercase</a></li><li><a href="#method.to_ascii_uppercase" title="to_ascii_uppercase">to_ascii_uppercase</a></li><li><a href="#method.to_vec" title="to_vec">to_vec</a></li><li><a href="#method.to_vec_in" title="to_vec_in">to_vec_in</a></li><li><a href="#method.trim_ascii" title="trim_ascii">trim_ascii</a></li><li><a href="#method.trim_ascii_end" title="trim_ascii_end">trim_ascii_end</a></li><li><a href="#method.trim_ascii_start" title="trim_ascii_start">trim_ascii_start</a></li><li><a href="#method.utf8_chunks" title="utf8_chunks">utf8_chunks</a></li><li><a href="#method.windows" title="windows">windows</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-AsMut%3C%5Bu8%5D%3E-for-SerializedSignature" title="AsMut&#60;[u8]&#62;">AsMut&#60;[u8]&#62;</a></li><li><a href="#impl-AsRef%3CPushBytes%3E-for-SerializedSignature" title="AsRef&#60;PushBytes&#62;">AsRef&#60;PushBytes&#62;</a></li><li><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-SerializedSignature" title="AsRef&#60;[u8]&#62;">AsRef&#60;[u8]&#62;</a></li><li><a href="#impl-Borrow%3C%5Bu8%5D%3E-for-SerializedSignature" title="Borrow&#60;[u8]&#62;">Borrow&#60;[u8]&#62;</a></li><li><a href="#impl-BorrowMut%3C%5Bu8%5D%3E-for-SerializedSignature" title="BorrowMut&#60;[u8]&#62;">BorrowMut&#60;[u8]&#62;</a></li><li><a href="#impl-Clone-for-SerializedSignature" title="Clone">Clone</a></li><li><a href="#impl-Copy-for-SerializedSignature" title="Copy">Copy</a></li><li><a href="#impl-Debug-for-SerializedSignature" title="Debug">Debug</a></li><li><a href="#impl-Deref-for-SerializedSignature" title="Deref">Deref</a></li><li><a href="#impl-DerefMut-for-SerializedSignature" title="DerefMut">DerefMut</a></li><li><a href="#impl-Display-for-SerializedSignature" title="Display">Display</a></li><li><a href="#impl-Eq-for-SerializedSignature" title="Eq">Eq</a></li><li><a href="#impl-Hash-for-SerializedSignature" title="Hash">Hash</a></li><li><a href="#impl-IntoIterator-for-%26SerializedSignature" title="IntoIterator">IntoIterator</a></li><li><a href="#impl-LowerHex-for-SerializedSignature" title="LowerHex">LowerHex</a></li><li><a href="#impl-PartialEq-for-SerializedSignature" title="PartialEq">PartialEq</a></li><li><a href="#impl-UpperHex-for-SerializedSignature" title="UpperHex">UpperHex</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-SerializedSignature" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-SerializedSignature" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SerializedSignature" title="Send">Send</a></li><li><a href="#impl-Sync-for-SerializedSignature" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-SerializedSignature" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SerializedSignature" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-CloneToUninit-for-T" title="CloneToUninit">CloneToUninit</a></li><li><a href="#impl-Equivalent%3CK%3E-for-Q" title="Equivalent&#60;K&#62;">Equivalent&#60;K&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-Receiver-for-P" title="Receiver">Receiver</a></li><li><a href="#impl-ToOwned-for-T" title="ToOwned">ToOwned</a></li><li><a href="#impl-ToString-for-T" title="ToString">ToString</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In bdk_<wbr>chain::<wbr>bitcoin::<wbr>ecdsa</a></h2></div></div></nav><div class="sidebar-resizer"></div><main><div class="width-limiter"><rustdoc-search></rustdoc-search><section id="main-content" class="content"><div class="main-heading"><span class="rustdoc-breadcrumbs"><a href="../../index.html">bdk_chain</a>::<wbr><a href="../index.html">bitcoin</a>::<wbr><a href="index.html">ecdsa</a></span><h1>Struct <span class="struct">SerializedSignature</span><button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub struct SerializedSignature { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Holds signature serialized in-line (not in <code>Vec</code>).</p>
2 <p>This avoids allocation and allows proving maximum size of the signature (73 bytes).
3 The type can be used largely as a byte slice. It implements all standard traits one would
4 expect and has familiar methods.
5 However, the usual use case is to push it into a script. This can be done directly passing it
6 into <a href="../struct.ScriptBuf.html#method.push_slice" title="method bdk_chain::bitcoin::ScriptBuf::push_slice"><code>push_slice</code></a>.</p>
7 </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-SerializedSignature" class="impl"><a href="#impl-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.iter" class="method"><h4 class="code-header">pub fn <a href="#method.iter" class="fn">iter</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html" title="struct core::slice::iter::Iter">Iter</a>&lt;'_, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt; <a href="#" class="tooltip" data-notable-ty="Iter&lt;&#39;_, u8&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over bytes of the signature.</p>
8 </div></details><details class="toggle method-toggle" open><summary><section id="method.write_to" class="method"><h4 class="code-header">pub fn <a href="#method.write_to" class="fn">write_to</a>&lt;W&gt;(&amp;self, writer: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut W</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../io/struct.Error.html" title="struct bdk_chain::bitcoin::io::Error">Error</a>&gt;<div class="where">where
9 W: <a class="trait" href="../io/trait.Write.html" title="trait bdk_chain::bitcoin::io::Write">Write</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class="docblock"><p>Writes this serialized signature to a <code>writer</code>.</p>
10 </div></details></div></details></div><details class="toggle big-toggle" open><summary><h2 id="deref-methods-%5Bu8%5D" class="section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;</span><a href="#deref-methods-%5Bu8%5D" class="anchor">§</a></h2></summary><div id="deref-methods-%5Bu8%5D-1" class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_str" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/ascii/ascii_char.rs.html#564">Source</a><h4 class="code-header">pub fn <a href="#method.as_str" class="fn">as_str</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</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>Views this slice of ASCII characters as a UTF-8 <code>str</code>.</p>
11 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_bytes" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/ascii/ascii_char.rs.html#575">Source</a><h4 class="code-header">pub fn <a href="#method.as_bytes" class="fn">as_bytes</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</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>Views this slice of ASCII characters as a slice of <code>u8</code> bytes.</p>
12 </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/nightly/src/core/slice/ascii.rs.html#17">Source</a></span><h4 class="code-header">pub fn <a href="#method.is_ascii" class="fn">is_ascii</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks if all bytes in this slice are within the ASCII range.</p>
13 </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/nightly/src/core/slice/ascii.rs.html#26">Source</a><h4 class="code-header">pub fn <a href="#method.as_ascii" class="fn">as_ascii</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="enum" href="https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">AsciiChar</a>]&gt;</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 slice <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_ascii" title="method slice::is_ascii"><code>is_ascii</code></a>, returns it as a slice of
14 <a href="https://doc.rust-lang.org/nightly/core/ascii/ascii_char/enum.AsciiChar.html" title="enum core::ascii::ascii_char::AsciiChar">ASCII characters</a>, otherwise returns <code>None</code>.</p>
15 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_ascii_unchecked" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#44">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_ascii_unchecked" class="fn">as_ascii_unchecked</a>(&amp;self) -&gt; &amp;[<a class="enum" href="https://doc.rust-lang.org/nightly/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>Converts this slice of bytes into a slice of ASCII characters,
16 without checking whether they’re valid.</p>
17 <h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
18 <p>Every byte in the slice must be in <code>0..=127</code>, or else this is UB.</p>
19 </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/nightly/src/core/slice/ascii.rs.html#59">Source</a></span><h4 class="code-header">pub fn <a href="#method.eq_ignore_ascii_case" class="fn">eq_ignore_ascii_case</a>(&amp;self, other: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Checks that two slices are an ASCII case-insensitive match.</p>
20 <p>Same as <code>to_ascii_lowercase(a) == to_ascii_lowercase(b)</code>,
21 but without allocating and copying temporaries.</p>
22 </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/nightly/src/core/slice/ascii.rs.html#94">Source</a></span><h4 class="code-header">pub fn <a href="#method.make_ascii_uppercase" class="fn">make_ascii_uppercase</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Converts this slice to its ASCII upper case equivalent in-place.</p>
23 <p>ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’,
24 but non-ASCII letters are unchanged.</p>
25 <p>To return a new uppercased value without modifying the existing one, use
26 <a href="#method.to_ascii_uppercase"><code>to_ascii_uppercase</code></a>.</p>
27 </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/nightly/src/core/slice/ascii.rs.html#116">Source</a></span><h4 class="code-header">pub fn <a href="#method.make_ascii_lowercase" class="fn">make_ascii_lowercase</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Converts this slice to its ASCII lower case equivalent in-place.</p>
28 <p>ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’,
29 but non-ASCII letters are unchanged.</p>
30 <p>To return a new lowercased value without modifying the existing one, use
31 <a href="#method.to_ascii_lowercase"><code>to_ascii_lowercase</code></a>.</p>
32 </div></details><details class="toggle method-toggle" open><summary><section id="method.escape_ascii" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.60.0">1.60.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/ascii.rs.html#140">Source</a></span><h4 class="code-header">pub fn <a href="#method.escape_ascii" class="fn">escape_ascii</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html" title="struct core::slice::ascii::EscapeAscii">EscapeAscii</a>&lt;'_&gt; <a href="#" class="tooltip" data-notable-ty="EscapeAscii&lt;&#39;_&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator that produces an escaped version of this slice,
33 treating it as an ASCII string.</p>
34 <h5 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h5>
35 <div class="example-wrap"><pre class="rust rust-example-rendered"><code>
36 <span class="kw">let </span>s = <span class="string">b"0\t\r\n'\"\\\x9d"</span>;
37 <span class="kw">let </span>escaped = s.escape_ascii().to_string();
38 <span class="macro">assert_eq!</span>(escaped, <span class="string">"0\\t\\r\\n\\'\\\"\\\\\\x9d"</span>);</code></pre></div>
39 </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/nightly/src/core/slice/ascii.rs.html#159">Source</a></span><h4 class="code-header">pub fn <a href="#method.trim_ascii_start" class="fn">trim_ascii_start</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a byte slice with leading ASCII whitespace bytes removed.</p>
40 <p>‘Whitespace’ refers to the definition used by
41 <a href="https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace" title="method u8::is_ascii_whitespace"><code>u8::is_ascii_whitespace</code></a>.</p>
42 <h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
43 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">b" \t hello world\n"</span>.trim_ascii_start(), <span class="string">b"hello world\n"</span>);
44 <span class="macro">assert_eq!</span>(<span class="string">b" "</span>.trim_ascii_start(), <span class="string">b""</span>);
45 <span class="macro">assert_eq!</span>(<span class="string">b""</span>.trim_ascii_start(), <span class="string">b""</span>);</code></pre></div>
46 </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/nightly/src/core/slice/ascii.rs.html#188">Source</a></span><h4 class="code-header">pub fn <a href="#method.trim_ascii_end" class="fn">trim_ascii_end</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a byte slice with trailing ASCII whitespace bytes removed.</p>
47 <p>‘Whitespace’ refers to the definition used by
48 <a href="https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace" title="method u8::is_ascii_whitespace"><code>u8::is_ascii_whitespace</code></a>.</p>
49 <h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
50 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">b"\r hello world\n "</span>.trim_ascii_end(), <span class="string">b"\r hello world"</span>);
51 <span class="macro">assert_eq!</span>(<span class="string">b" "</span>.trim_ascii_end(), <span class="string">b""</span>);
52 <span class="macro">assert_eq!</span>(<span class="string">b""</span>.trim_ascii_end(), <span class="string">b""</span>);</code></pre></div>
53 </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/nightly/src/core/slice/ascii.rs.html#218">Source</a></span><h4 class="code-header">pub fn <a href="#method.trim_ascii" class="fn">trim_ascii</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a byte slice with leading and trailing ASCII whitespace bytes
54 removed.</p>
55 <p>‘Whitespace’ refers to the definition used by
56 <a href="https://doc.rust-lang.org/nightly/std/primitive.u8.html#method.is_ascii_whitespace" title="method u8::is_ascii_whitespace"><code>u8::is_ascii_whitespace</code></a>.</p>
57 <h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
58 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>(<span class="string">b"\r hello world\n "</span>.trim_ascii(), <span class="string">b"hello world"</span>);
59 <span class="macro">assert_eq!</span>(<span class="string">b" "</span>.trim_ascii(), <span class="string">b""</span>);
60 <span class="macro">assert_eq!</span>(<span class="string">b""</span>.trim_ascii(), <span class="string">b""</span>);</code></pre></div>
61 </div></details><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/nightly/src/core/slice/mod.rs.html#117">Source</a></span><h4 class="code-header">pub fn <a href="#method.len" class="fn">len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the number of elements in the slice.</p>
62 <h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
63 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
64 <span class="macro">assert_eq!</span>(a.len(), <span class="number">3</span>);</code></pre></div>
65 </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/nightly/src/core/slice/mod.rs.html#136">Source</a></span><h4 class="code-header">pub fn <a href="#method.is_empty" class="fn">is_empty</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the slice has a length of 0.</p>
66 <h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
67 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
68 <span class="macro">assert!</span>(!a.is_empty());
69
70 <span class="kw">let </span>b: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
71 <span class="macro">assert!</span>(b.is_empty());</code></pre></div>
72 </div></details><details class="toggle method-toggle" open><summary><section id="method.first" 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/nightly/src/core/slice/mod.rs.html#155">Source</a></span><h4 class="code-header">pub fn <a href="#method.first" class="fn">first</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the first element of the slice, or <code>None</code> if it is empty.</p>
73 <h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
74 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
75 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">10</span>), v.first());
76
77 <span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
78 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, w.first());</code></pre></div>
79 </div></details><details class="toggle method-toggle" open><summary><section id="method.first_mut" 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/nightly/src/core/slice/mod.rs.html#178">Source</a></span><h4 class="code-header">pub fn <a href="#method.first_mut" class="fn">first_mut</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable reference to the first element of the slice, or <code>None</code> if it is empty.</p>
80 <h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
81 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
82
83 <span class="kw">if let </span><span class="prelude-val">Some</span>(first) = x.first_mut() {
84 <span class="kw-2">*</span>first = <span class="number">5</span>;
85 }
86 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">5</span>, <span class="number">1</span>, <span class="number">2</span>]);
87
88 <span class="kw">let </span>y: <span class="kw-2">&amp;mut </span>[i32] = <span class="kw-2">&amp;mut </span>[];
89 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, y.first_mut());</code></pre></div>
90 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_first" 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/nightly/src/core/slice/mod.rs.html#198">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_first" class="fn">split_first</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns the first and all the rest of the elements of the slice, or <code>None</code> if it is empty.</p>
91 <h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
92 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
93
94 <span class="kw">if let </span><span class="prelude-val">Some</span>((first, elements)) = x.split_first() {
95 <span class="macro">assert_eq!</span>(first, <span class="kw-2">&amp;</span><span class="number">0</span>);
96 <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
97 }</code></pre></div>
98 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_first_mut" 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/nightly/src/core/slice/mod.rs.html#220">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_first_mut" class="fn">split_first_mut</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns the first and all the rest of the elements of the slice, or <code>None</code> if it is empty.</p>
99 <h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
100 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
101
102 <span class="kw">if let </span><span class="prelude-val">Some</span>((first, elements)) = x.split_first_mut() {
103 <span class="kw-2">*</span>first = <span class="number">3</span>;
104 elements[<span class="number">0</span>] = <span class="number">4</span>;
105 elements[<span class="number">1</span>] = <span class="number">5</span>;
106 }
107 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);</code></pre></div>
108 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_last" 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/nightly/src/core/slice/mod.rs.html#240">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_last" class="fn">split_last</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns the last and all the rest of the elements of the slice, or <code>None</code> if it is empty.</p>
109 <h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
110 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
111
112 <span class="kw">if let </span><span class="prelude-val">Some</span>((last, elements)) = x.split_last() {
113 <span class="macro">assert_eq!</span>(last, <span class="kw-2">&amp;</span><span class="number">2</span>);
114 <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
115 }</code></pre></div>
116 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_last_mut" 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/nightly/src/core/slice/mod.rs.html#262">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_last_mut" class="fn">split_last_mut</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns the last and all the rest of the elements of the slice, or <code>None</code> if it is empty.</p>
117 <h5 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples</h5>
118 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
119
120 <span class="kw">if let </span><span class="prelude-val">Some</span>((last, elements)) = x.split_last_mut() {
121 <span class="kw-2">*</span>last = <span class="number">3</span>;
122 elements[<span class="number">0</span>] = <span class="number">4</span>;
123 elements[<span class="number">1</span>] = <span class="number">5</span>;
124 }
125 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">4</span>, <span class="number">5</span>, <span class="number">3</span>]);</code></pre></div>
126 </div></details><details class="toggle method-toggle" open><summary><section id="method.last" 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/nightly/src/core/slice/mod.rs.html#281">Source</a></span><h4 class="code-header">pub fn <a href="#method.last" class="fn">last</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the last element of the slice, or <code>None</code> if it is empty.</p>
127 <h5 id="examples-12"><a class="doc-anchor" href="#examples-12">§</a>Examples</h5>
128 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
129 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">30</span>), v.last());
130
131 <span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
132 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, w.last());</code></pre></div>
133 </div></details><details class="toggle method-toggle" open><summary><section id="method.last_mut" 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/nightly/src/core/slice/mod.rs.html#304">Source</a></span><h4 class="code-header">pub fn <a href="#method.last_mut" class="fn">last_mut</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable reference to the last item in the slice, or <code>None</code> if it is empty.</p>
134 <h5 id="examples-13"><a class="doc-anchor" href="#examples-13">§</a>Examples</h5>
135 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
136
137 <span class="kw">if let </span><span class="prelude-val">Some</span>(last) = x.last_mut() {
138 <span class="kw-2">*</span>last = <span class="number">10</span>;
139 }
140 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">10</span>]);
141
142 <span class="kw">let </span>y: <span class="kw-2">&amp;mut </span>[i32] = <span class="kw-2">&amp;mut </span>[];
143 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, y.last_mut());</code></pre></div>
144 </div></details><details class="toggle method-toggle" open><summary><section id="method.first_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#327">Source</a></span><h4 class="code-header">pub fn <a href="#method.first_chunk" class="fn">first_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section></summary><div class="docblock"><p>Returns an array reference to the first <code>N</code> items in the slice.</p>
145 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
146 <h5 id="examples-14"><a class="doc-anchor" href="#examples-14">§</a>Examples</h5>
147 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>u = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
148 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]), u.first_chunk::&lt;<span class="number">2</span>&gt;());
149
150 <span class="kw">let </span>v: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[<span class="number">10</span>];
151 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.first_chunk::&lt;<span class="number">2</span>&gt;());
152
153 <span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
154 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[]), w.first_chunk::&lt;<span class="number">0</span>&gt;());</code></pre></div>
155 </div></details><details class="toggle method-toggle" open><summary><section id="method.first_chunk_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#357">Source</a></span><h4 class="code-header">pub fn <a href="#method.first_chunk_mut" class="fn">first_chunk_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable array reference to the first <code>N</code> items in the slice.</p>
156 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
157 <h5 id="examples-15"><a class="doc-anchor" href="#examples-15">§</a>Examples</h5>
158 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
159
160 <span class="kw">if let </span><span class="prelude-val">Some</span>(first) = x.first_chunk_mut::&lt;<span class="number">2</span>&gt;() {
161 first[<span class="number">0</span>] = <span class="number">5</span>;
162 first[<span class="number">1</span>] = <span class="number">4</span>;
163 }
164 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">5</span>, <span class="number">4</span>, <span class="number">2</span>]);
165
166 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.first_chunk_mut::&lt;<span class="number">4</span>&gt;());</code></pre></div>
167 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_first_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#387">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_first_chunk" class="fn">split_first_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns an array reference to the first <code>N</code> items in the slice and the remaining slice.</p>
168 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
169 <h5 id="examples-16"><a class="doc-anchor" href="#examples-16">§</a>Examples</h5>
170 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
171
172 <span class="kw">if let </span><span class="prelude-val">Some</span>((first, elements)) = x.split_first_chunk::&lt;<span class="number">2</span>&gt;() {
173 <span class="macro">assert_eq!</span>(first, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
174 <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">2</span>]);
175 }
176
177 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.split_first_chunk::&lt;<span class="number">4</span>&gt;());</code></pre></div>
178 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_first_chunk_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#422-424">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_first_chunk_mut" class="fn">split_first_chunk_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
179 &amp;mut self,
180 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable array reference to the first <code>N</code> items in the slice and the remaining
181 slice.</p>
182 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
183 <h5 id="examples-17"><a class="doc-anchor" href="#examples-17">§</a>Examples</h5>
184 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
185
186 <span class="kw">if let </span><span class="prelude-val">Some</span>((first, elements)) = x.split_first_chunk_mut::&lt;<span class="number">2</span>&gt;() {
187 first[<span class="number">0</span>] = <span class="number">3</span>;
188 first[<span class="number">1</span>] = <span class="number">4</span>;
189 elements[<span class="number">0</span>] = <span class="number">5</span>;
190 }
191 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);
192
193 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.split_first_chunk_mut::&lt;<span class="number">4</span>&gt;());</code></pre></div>
194 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_last_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#457">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_last_chunk" class="fn">split_last_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns an array reference to the last <code>N</code> items in the slice and the remaining slice.</p>
195 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
196 <h5 id="examples-18"><a class="doc-anchor" href="#examples-18">§</a>Examples</h5>
197 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
198
199 <span class="kw">if let </span><span class="prelude-val">Some</span>((elements, last)) = x.split_last_chunk::&lt;<span class="number">2</span>&gt;() {
200 <span class="macro">assert_eq!</span>(elements, <span class="kw-2">&amp;</span>[<span class="number">0</span>]);
201 <span class="macro">assert_eq!</span>(last, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
202 }
203
204 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.split_last_chunk::&lt;<span class="number">4</span>&gt;());</code></pre></div>
205 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_last_chunk_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#492-494">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_last_chunk_mut" class="fn">split_last_chunk_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
206 &amp;mut self,
207 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>)&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable array reference to the last <code>N</code> items in the slice and the remaining
208 slice.</p>
209 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
210 <h5 id="examples-19"><a class="doc-anchor" href="#examples-19">§</a>Examples</h5>
211 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
212
213 <span class="kw">if let </span><span class="prelude-val">Some</span>((elements, last)) = x.split_last_chunk_mut::&lt;<span class="number">2</span>&gt;() {
214 last[<span class="number">0</span>] = <span class="number">3</span>;
215 last[<span class="number">1</span>] = <span class="number">4</span>;
216 elements[<span class="number">0</span>] = <span class="number">5</span>;
217 }
218 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">5</span>, <span class="number">3</span>, <span class="number">4</span>]);
219
220 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.split_last_chunk_mut::&lt;<span class="number">4</span>&gt;());</code></pre></div>
221 </div></details><details class="toggle method-toggle" open><summary><section id="method.last_chunk" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#527">Source</a></span><h4 class="code-header">pub fn <a href="#method.last_chunk" class="fn">last_chunk</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section></summary><div class="docblock"><p>Returns an array reference to the last <code>N</code> items in the slice.</p>
222 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
223 <h5 id="examples-20"><a class="doc-anchor" href="#examples-20">§</a>Examples</h5>
224 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>u = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
225 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>]), u.last_chunk::&lt;<span class="number">2</span>&gt;());
226
227 <span class="kw">let </span>v: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[<span class="number">10</span>];
228 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.last_chunk::&lt;<span class="number">2</span>&gt;());
229
230 <span class="kw">let </span>w: <span class="kw-2">&amp;</span>[i32] = <span class="kw-2">&amp;</span>[];
231 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[]), w.last_chunk::&lt;<span class="number">0</span>&gt;());</code></pre></div>
232 </div></details><details class="toggle method-toggle" open><summary><section id="method.last_chunk_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#561">Source</a></span><h4 class="code-header">pub fn <a href="#method.last_chunk_mut" class="fn">last_chunk_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a mutable array reference to the last <code>N</code> items in the slice.</p>
233 <p>If the slice is not at least <code>N</code> in length, this will return <code>None</code>.</p>
234 <h5 id="examples-21"><a class="doc-anchor" href="#examples-21">§</a>Examples</h5>
235 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
236
237 <span class="kw">if let </span><span class="prelude-val">Some</span>(last) = x.last_chunk_mut::&lt;<span class="number">2</span>&gt;() {
238 last[<span class="number">0</span>] = <span class="number">10</span>;
239 last[<span class="number">1</span>] = <span class="number">20</span>;
240 }
241 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">10</span>, <span class="number">20</span>]);
242
243 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, x.last_chunk_mut::&lt;<span class="number">4</span>&gt;());</code></pre></div>
244 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#596-598">Source</a></span><h4 class="code-header">pub fn <a href="#method.get" class="fn">get</a>&lt;I&gt;(&amp;self, index: I) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>&gt;<div class="where">where
245 I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a reference to an element or subslice depending on the type of
246 index.</p>
247 <ul>
248 <li>If given a position, returns a reference to the element at that
249 position or <code>None</code> if out of bounds.</li>
250 <li>If given a range, returns the subslice corresponding to that range,
251 or <code>None</code> if out of bounds.</li>
252 </ul>
253 <h5 id="examples-22"><a class="doc-anchor" href="#examples-22">§</a>Examples</h5>
254 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
255 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">40</span>), v.get(<span class="number">1</span>));
256 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>][..]), v.get(<span class="number">0</span>..<span class="number">2</span>));
257 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.get(<span class="number">3</span>));
258 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.get(<span class="number">0</span>..<span class="number">4</span>));</code></pre></div>
259 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#621-623">Source</a></span><h4 class="code-header">pub fn <a href="#method.get_mut" class="fn">get_mut</a>&lt;I&gt;(
260 &amp;mut self,
261 index: I,
262 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>&gt;<div class="where">where
263 I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a mutable reference to an element or subslice depending on the
264 type of index (see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get" title="method slice::get"><code>get</code></a>) or <code>None</code> if the index is out of bounds.</p>
265 <h5 id="examples-23"><a class="doc-anchor" href="#examples-23">§</a>Examples</h5>
266 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>];
267
268 <span class="kw">if let </span><span class="prelude-val">Some</span>(elem) = x.get_mut(<span class="number">1</span>) {
269 <span class="kw-2">*</span>elem = <span class="number">42</span>;
270 }
271 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">42</span>, <span class="number">2</span>]);</code></pre></div>
272 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#658-660">Source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked" class="fn">get_unchecked</a>&lt;I&gt;(
273 &amp;self,
274 index: I,
275 ) -&gt; &amp;&lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a><div class="where">where
276 I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a reference to an element or subslice, without doing bounds
277 checking.</p>
278 <p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get" title="method slice::get"><code>get</code></a>.</p>
279 <h5 id="safety-1"><a class="doc-anchor" href="#safety-1">§</a>Safety</h5>
280 <p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
281 even if the resulting reference is not used.</p>
282 <p>You can think of this like <code>.get(index).unwrap_unchecked()</code>. It’s UB
283 to call <code>.get_unchecked(len)</code>, even if you immediately convert to a
284 pointer. And it’s UB to call <code>.get_unchecked(..len + 1)</code>,
285 <code>.get_unchecked(..=len)</code>, or similar.</p>
286 <h5 id="examples-24"><a class="doc-anchor" href="#examples-24">§</a>Examples</h5>
287 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
288
289 <span class="kw">unsafe </span>{
290 <span class="macro">assert_eq!</span>(x.get_unchecked(<span class="number">1</span>), <span class="kw-2">&amp;</span><span class="number">2</span>);
291 }</code></pre></div>
292 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#700-702">Source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.get_unchecked_mut" class="fn">get_unchecked_mut</a>&lt;I&gt;(
293 &amp;mut self,
294 index: I,
295 ) -&gt; &amp;mut &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a><div class="where">where
296 I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Returns a mutable reference to an element or subslice, without doing
297 bounds checking.</p>
298 <p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get_mut" title="method slice::get_mut"><code>get_mut</code></a>.</p>
299 <h5 id="safety-2"><a class="doc-anchor" href="#safety-2">§</a>Safety</h5>
300 <p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
301 even if the resulting reference is not used.</p>
302 <p>You can think of this like <code>.get_mut(index).unwrap_unchecked()</code>. It’s
303 UB to call <code>.get_unchecked_mut(len)</code>, even if you immediately convert
304 to a pointer. And it’s UB to call <code>.get_unchecked_mut(..len + 1)</code>,
305 <code>.get_unchecked_mut(..=len)</code>, or similar.</p>
306 <h5 id="examples-25"><a class="doc-anchor" href="#examples-25">§</a>Examples</h5>
307 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
308
309 <span class="kw">unsafe </span>{
310 <span class="kw">let </span>elem = x.get_unchecked_mut(<span class="number">1</span>);
311 <span class="kw-2">*</span>elem = <span class="number">13</span>;
312 }
313 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">13</span>, <span class="number">4</span>]);</code></pre></div>
314 </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/nightly/src/core/slice/mod.rs.html#742">Source</a></span><h4 class="code-header">pub fn <a href="#method.as_ptr" class="fn">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*const T</a></h4></section></summary><div class="docblock"><p>Returns a raw pointer to the slice’s buffer.</p>
315 <p>The caller must ensure that the slice outlives the pointer this
316 function returns, or else it will end up dangling.</p>
317 <p>The caller must also ensure that the memory the pointer (non-transitively) points to
318 is never written to (except inside an <code>UnsafeCell</code>) using this pointer or any pointer
319 derived from it. If you need to mutate the contents of the slice, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr" title="method slice::as_mut_ptr"><code>as_mut_ptr</code></a>.</p>
320 <p>Modifying the container referenced by this slice may cause its buffer
321 to be reallocated, which would also make any pointers to it invalid.</p>
322 <h5 id="examples-26"><a class="doc-anchor" href="#examples-26">§</a>Examples</h5>
323 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
324 <span class="kw">let </span>x_ptr = x.as_ptr();
325
326 <span class="kw">unsafe </span>{
327 <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..x.len() {
328 <span class="macro">assert_eq!</span>(x.get_unchecked(i), <span class="kw-2">&amp;*</span>x_ptr.add(i));
329 }
330 }</code></pre></div>
331 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#773">Source</a></span><h4 class="code-header">pub fn <a href="#method.as_mut_ptr" class="fn">as_mut_ptr</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut T</a></h4></section></summary><div class="docblock"><p>Returns an unsafe mutable pointer to the slice’s buffer.</p>
332 <p>The caller must ensure that the slice outlives the pointer this
333 function returns, or else it will end up dangling.</p>
334 <p>Modifying the container referenced by this slice may cause its buffer
335 to be reallocated, which would also make any pointers to it invalid.</p>
336 <h5 id="examples-27"><a class="doc-anchor" href="#examples-27">§</a>Examples</h5>
337 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
338 <span class="kw">let </span>x_ptr = x.as_mut_ptr();
339
340 <span class="kw">unsafe </span>{
341 <span class="kw">for </span>i <span class="kw">in </span><span class="number">0</span>..x.len() {
342 <span class="kw-2">*</span>x_ptr.add(i) += <span class="number">2</span>;
343 }
344 }
345 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">4</span>, <span class="number">6</span>]);</code></pre></div>
346 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_ptr_range" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.48.0">1.48.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#809">Source</a></span><h4 class="code-header">pub fn <a href="#method.as_ptr_range" class="fn">as_ptr_range</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*const T</a>&gt; <a href="#" class="tooltip" data-notable-ty="Range&lt;*const T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the two raw pointers spanning the slice.</p>
347 <p>The returned range is half-open, which means that the end pointer
348 points <em>one past</em> the last element of the slice. This way, an empty
349 slice is represented by two equal pointers, and the difference between
350 the two pointers represents the size of the slice.</p>
351 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_ptr" title="method slice::as_ptr"><code>as_ptr</code></a> for warnings on using these pointers. The end pointer
352 requires extra caution, as it does not point to a valid element in the
353 slice.</p>
354 <p>This function is useful for interacting with foreign interfaces which
355 use two pointers to refer to a range of elements in memory, as is
356 common in C++.</p>
357 <p>It can also be useful to check if a pointer to an element refers to an
358 element of this slice:</p>
359
360 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
361 <span class="kw">let </span>x = <span class="kw-2">&amp;</span>a[<span class="number">1</span>] <span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_</span>;
362 <span class="kw">let </span>y = <span class="kw-2">&amp;</span><span class="number">5 </span><span class="kw">as </span><span class="kw-2">*const </span><span class="kw">_</span>;
363
364 <span class="macro">assert!</span>(a.as_ptr_range().contains(<span class="kw-2">&amp;</span>x));
365 <span class="macro">assert!</span>(!a.as_ptr_range().contains(<span class="kw-2">&amp;</span>y));</code></pre></div>
366 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_mut_ptr_range" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.48.0">1.48.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#852">Source</a></span><h4 class="code-header">pub fn <a href="#method.as_mut_ptr_range" class="fn">as_mut_ptr_range</a>(&amp;mut self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut T</a>&gt; <a href="#" class="tooltip" data-notable-ty="Range&lt;*mut T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns the two unsafe mutable pointers spanning the slice.</p>
367 <p>The returned range is half-open, which means that the end pointer
368 points <em>one past</em> the last element of the slice. This way, an empty
369 slice is represented by two equal pointers, and the difference between
370 the two pointers represents the size of the slice.</p>
371 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_mut_ptr" title="method slice::as_mut_ptr"><code>as_mut_ptr</code></a> for warnings on using these pointers. The end
372 pointer requires extra caution, as it does not point to a valid element
373 in the slice.</p>
374 <p>This function is useful for interacting with foreign interfaces which
375 use two pointers to refer to a range of elements in memory, as is
376 common in C++.</p>
377 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_array" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#865">Source</a><h4 class="code-header">pub fn <a href="#method.as_array" class="fn">as_array</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_array</code>)</span></div></span></summary><div class="docblock"><p>Gets a reference to the underlying array.</p>
378 <p>If <code>N</code> is not exactly equal to the length of <code>self</code>, then this method returns <code>None</code>.</p>
379 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_mut_array" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#883">Source</a><h4 class="code-header">pub fn <a href="#method.as_mut_array" class="fn">as_mut_array</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_array</code>)</span></div></span></summary><div class="docblock"><p>Gets a mutable reference to the slice’s underlying array.</p>
380 <p>If <code>N</code> is not exactly equal to the length of <code>self</code>, then this method returns <code>None</code>.</p>
381 </div></details><details class="toggle method-toggle" open><summary><section id="method.swap" 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/nightly/src/core/slice/mod.rs.html#919">Source</a></span><h4 class="code-header">pub fn <a href="#method.swap" class="fn">swap</a>(&amp;mut self, a: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Swaps two elements in the slice.</p>
382 <p>If <code>a</code> equals to <code>b</code>, it’s guaranteed that elements won’t change value.</p>
383 <h5 id="arguments"><a class="doc-anchor" href="#arguments">§</a>Arguments</h5>
384 <ul>
385 <li>a - The index of the first element</li>
386 <li>b - The index of the second element</li>
387 </ul>
388 <h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
389 <p>Panics if <code>a</code> or <code>b</code> are out of bounds.</p>
390 <h5 id="examples-28"><a class="doc-anchor" href="#examples-28">§</a>Examples</h5>
391 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>, <span class="string">"d"</span>, <span class="string">"e"</span>];
392 v.swap(<span class="number">2</span>, <span class="number">4</span>);
393 <span class="macro">assert!</span>(v == [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"e"</span>, <span class="string">"d"</span>, <span class="string">"c"</span>]);</code></pre></div>
394 </div></details><details class="toggle method-toggle" open><summary><section id="method.swap_unchecked" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#962">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.swap_unchecked" class="fn">swap_unchecked</a>(&amp;mut self, a: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/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>slice_swap_unchecked</code>)</span></div></span></summary><div class="docblock"><p>Swaps two elements in the slice, without doing bounds checking.</p>
395 <p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.swap" title="method slice::swap"><code>swap</code></a>.</p>
396 <h5 id="arguments-1"><a class="doc-anchor" href="#arguments-1">§</a>Arguments</h5>
397 <ul>
398 <li>a - The index of the first element</li>
399 <li>b - The index of the second element</li>
400 </ul>
401 <h5 id="safety-3"><a class="doc-anchor" href="#safety-3">§</a>Safety</h5>
402 <p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>.
403 The caller has to ensure that <code>a &lt; self.len()</code> and <code>b &lt; self.len()</code>.</p>
404 <h5 id="examples-29"><a class="doc-anchor" href="#examples-29">§</a>Examples</h5>
405 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_swap_unchecked)]
406
407 </span><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="string">"a"</span>, <span class="string">"b"</span>, <span class="string">"c"</span>, <span class="string">"d"</span>];
408 <span class="comment">// SAFETY: we know that 1 and 3 are both indices of the slice
409 </span><span class="kw">unsafe </span>{ v.swap_unchecked(<span class="number">1</span>, <span class="number">3</span>) };
410 <span class="macro">assert!</span>(v == [<span class="string">"a"</span>, <span class="string">"d"</span>, <span class="string">"c"</span>, <span class="string">"b"</span>]);</code></pre></div>
411 </div></details><details class="toggle method-toggle" open><summary><section id="method.reverse" 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/nightly/src/core/slice/mod.rs.html#991">Source</a></span><h4 class="code-header">pub fn <a href="#method.reverse" class="fn">reverse</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Reverses the order of elements in the slice, in place.</p>
412 <h5 id="examples-30"><a class="doc-anchor" href="#examples-30">§</a>Examples</h5>
413 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
414 v.reverse();
415 <span class="macro">assert!</span>(v == [<span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>]);</code></pre></div>
416 </div></details><details class="toggle method-toggle" open><summary><section id="method.iter-1" 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/nightly/src/core/slice/mod.rs.html#1050">Source</a></span><h4 class="code-header">pub fn <a href="#method.iter-1" class="fn">iter</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html" title="struct core::slice::iter::Iter">Iter</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="Iter&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over the slice.</p>
417 <p>The iterator yields all items from start to end.</p>
418 <h5 id="examples-31"><a class="doc-anchor" href="#examples-31">§</a>Examples</h5>
419 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
420 <span class="kw">let </span><span class="kw-2">mut </span>iterator = x.iter();
421
422 <span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">1</span>));
423 <span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">2</span>));
424 <span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span><span class="number">4</span>));
425 <span class="macro">assert_eq!</span>(iterator.next(), <span class="prelude-val">None</span>);</code></pre></div>
426 </div></details><details class="toggle method-toggle" open><summary><section id="method.iter_mut" 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/nightly/src/core/slice/mod.rs.html#1069">Source</a></span><h4 class="code-header">pub fn <a href="#method.iter_mut" class="fn">iter_mut</a>(&amp;mut self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.IterMut.html" title="struct core::slice::iter::IterMut">IterMut</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="IterMut&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator that allows modifying each value.</p>
427 <p>The iterator yields all items from start to end.</p>
428 <h5 id="examples-32"><a class="doc-anchor" href="#examples-32">§</a>Examples</h5>
429 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
430 <span class="kw">for </span>elem <span class="kw">in </span>x.iter_mut() {
431 <span class="kw-2">*</span>elem += <span class="number">2</span>;
432 }
433 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">4</span>, <span class="number">6</span>]);</code></pre></div>
434 </div></details><details class="toggle method-toggle" open><summary><section id="method.windows" 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/nightly/src/core/slice/mod.rs.html#1118">Source</a></span><h4 class="code-header">pub fn <a href="#method.windows" class="fn">windows</a>(&amp;self, size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html" title="struct core::slice::iter::Windows">Windows</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="Windows&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over all contiguous windows of length
435 <code>size</code>. The windows overlap. If the slice is shorter than
436 <code>size</code>, the iterator returns no values.</p>
437 <h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
438 <p>Panics if <code>size</code> is zero.</p>
439 <h5 id="examples-33"><a class="doc-anchor" href="#examples-33">§</a>Examples</h5>
440 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
441 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.windows(<span class="number">3</span>);
442 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>]);
443 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>]);
444 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>]);
445 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
446 <p>If the slice is shorter than <code>size</code>:</p>
447
448 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'f'</span>, <span class="string">'o'</span>, <span class="string">'o'</span>];
449 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.windows(<span class="number">4</span>);
450 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
451 <p>There’s no <code>windows_mut</code>, as that existing would let safe code violate the
452 “only one <code>&amp;mut</code> at a time to the same thing” rule. However, you can sometimes
453 use <a href="https://doc.rust-lang.org/nightly/core/cell/struct.Cell.html#method.as_slice_of_cells" title="method core::cell::Cell::as_slice_of_cells"><code>Cell::as_slice_of_cells</code></a> in
454 conjunction with <code>windows</code> to accomplish something similar:</p>
455
456 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::cell::Cell;
457
458 <span class="kw">let </span><span class="kw-2">mut </span>array = [<span class="string">'R'</span>, <span class="string">'u'</span>, <span class="string">'s'</span>, <span class="string">'t'</span>, <span class="string">' '</span>, <span class="string">'2'</span>, <span class="string">'0'</span>, <span class="string">'1'</span>, <span class="string">'5'</span>];
459 <span class="kw">let </span>slice = <span class="kw-2">&amp;mut </span>array[..];
460 <span class="kw">let </span>slice_of_cells: <span class="kw-2">&amp;</span>[Cell&lt;char&gt;] = Cell::from_mut(slice).as_slice_of_cells();
461 <span class="kw">for </span>w <span class="kw">in </span>slice_of_cells.windows(<span class="number">3</span>) {
462 Cell::swap(<span class="kw-2">&amp;</span>w[<span class="number">0</span>], <span class="kw-2">&amp;</span>w[<span class="number">2</span>]);
463 }
464 <span class="macro">assert_eq!</span>(array, [<span class="string">'s'</span>, <span class="string">'t'</span>, <span class="string">' '</span>, <span class="string">'2'</span>, <span class="string">'0'</span>, <span class="string">'1'</span>, <span class="string">'5'</span>, <span class="string">'u'</span>, <span class="string">'R'</span>]);</code></pre></div>
465 </div></details><details class="toggle method-toggle" open><summary><section id="method.chunks" 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/nightly/src/core/slice/mod.rs.html#1153">Source</a></span><h4 class="code-header">pub fn <a href="#method.chunks" class="fn">chunks</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html" title="struct core::slice::iter::Chunks">Chunks</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="Chunks&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
466 beginning of the slice.</p>
467 <p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
468 slice, then the last chunk will not have length <code>chunk_size</code>.</p>
469 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact" title="method slice::chunks_exact"><code>chunks_exact</code></a> for a variant of this iterator that returns chunks of always exactly
470 <code>chunk_size</code> elements, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks" title="method slice::rchunks"><code>rchunks</code></a> for the same iterator but starting at the end of the
471 slice.</p>
472 <h5 id="panics-2"><a class="doc-anchor" href="#panics-2">§</a>Panics</h5>
473 <p>Panics if <code>chunk_size</code> is zero.</p>
474 <h5 id="examples-34"><a class="doc-anchor" href="#examples-34">§</a>Examples</h5>
475 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
476 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunks(<span class="number">2</span>);
477 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>]);
478 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>]);
479 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);
480 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
481 </div></details><details class="toggle method-toggle" open><summary><section id="method.chunks_mut" 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/nightly/src/core/slice/mod.rs.html#1192">Source</a></span><h4 class="code-header">pub fn <a href="#method.chunks_mut" class="fn">chunks_mut</a>(&amp;mut self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksMut.html" title="struct core::slice::iter::ChunksMut">ChunksMut</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="ChunksMut&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
482 beginning of the slice.</p>
483 <p>The chunks are mutable slices, and do not overlap. If <code>chunk_size</code> does not divide the
484 length of the slice, then the last chunk will not have length <code>chunk_size</code>.</p>
485 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact_mut" title="method slice::chunks_exact_mut"><code>chunks_exact_mut</code></a> for a variant of this iterator that returns chunks of always
486 exactly <code>chunk_size</code> elements, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_mut" title="method slice::rchunks_mut"><code>rchunks_mut</code></a> for the same iterator but starting at
487 the end of the slice.</p>
488 <h5 id="panics-3"><a class="doc-anchor" href="#panics-3">§</a>Panics</h5>
489 <p>Panics if <code>chunk_size</code> is zero.</p>
490 <h5 id="examples-35"><a class="doc-anchor" href="#examples-35">§</a>Examples</h5>
491 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
492 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
493
494 <span class="kw">for </span>chunk <span class="kw">in </span>v.chunks_mut(<span class="number">2</span>) {
495 <span class="kw">for </span>elem <span class="kw">in </span>chunk.iter_mut() {
496 <span class="kw-2">*</span>elem += count;
497 }
498 count += <span class="number">1</span>;
499 }
500 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">3</span>]);</code></pre></div>
501 </div></details><details class="toggle method-toggle" open><summary><section id="method.chunks_exact" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1230">Source</a></span><h4 class="code-header">pub fn <a href="#method.chunks_exact" class="fn">chunks_exact</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html" title="struct core::slice::iter::ChunksExact">ChunksExact</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="ChunksExact&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
502 beginning of the slice.</p>
503 <p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
504 slice, then the last up to <code>chunk_size-1</code> elements will be omitted and can be retrieved
505 from the <code>remainder</code> function of the iterator.</p>
506 <p>Due to each chunk having exactly <code>chunk_size</code> elements, the compiler can often optimize the
507 resulting code better than in the case of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks" title="method slice::chunks"><code>chunks</code></a>.</p>
508 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks" title="method slice::chunks"><code>chunks</code></a> for a variant of this iterator that also returns the remainder as a smaller
509 chunk, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact" title="method slice::rchunks_exact"><code>rchunks_exact</code></a> for the same iterator but starting at the end of the slice.</p>
510 <h5 id="panics-4"><a class="doc-anchor" href="#panics-4">§</a>Panics</h5>
511 <p>Panics if <code>chunk_size</code> is zero.</p>
512 <h5 id="examples-36"><a class="doc-anchor" href="#examples-36">§</a>Examples</h5>
513 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
514 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunks_exact(<span class="number">2</span>);
515 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>]);
516 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>]);
517 <span class="macro">assert!</span>(iter.next().is_none());
518 <span class="macro">assert_eq!</span>(iter.remainder(), <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);</code></pre></div>
519 </div></details><details class="toggle method-toggle" open><summary><section id="method.chunks_exact_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1273">Source</a></span><h4 class="code-header">pub fn <a href="#method.chunks_exact_mut" class="fn">chunks_exact_mut</a>(&amp;mut self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExactMut.html" title="struct core::slice::iter::ChunksExactMut">ChunksExactMut</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="ChunksExactMut&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
520 beginning of the slice.</p>
521 <p>The chunks are mutable slices, and do not overlap. If <code>chunk_size</code> does not divide the
522 length of the slice, then the last up to <code>chunk_size-1</code> elements will be omitted and can be
523 retrieved from the <code>into_remainder</code> function of the iterator.</p>
524 <p>Due to each chunk having exactly <code>chunk_size</code> elements, the compiler can often optimize the
525 resulting code better than in the case of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut" title="method slice::chunks_mut"><code>chunks_mut</code></a>.</p>
526 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut" title="method slice::chunks_mut"><code>chunks_mut</code></a> for a variant of this iterator that also returns the remainder as a
527 smaller chunk, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact_mut" title="method slice::rchunks_exact_mut"><code>rchunks_exact_mut</code></a> for the same iterator but starting at the end of
528 the slice.</p>
529 <h5 id="panics-5"><a class="doc-anchor" href="#panics-5">§</a>Panics</h5>
530 <p>Panics if <code>chunk_size</code> is zero.</p>
531 <h5 id="examples-37"><a class="doc-anchor" href="#examples-37">§</a>Examples</h5>
532 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
533 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
534
535 <span class="kw">for </span>chunk <span class="kw">in </span>v.chunks_exact_mut(<span class="number">2</span>) {
536 <span class="kw">for </span>elem <span class="kw">in </span>chunk.iter_mut() {
537 <span class="kw-2">*</span>elem += count;
538 }
539 count += <span class="number">1</span>;
540 }
541 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">0</span>]);</code></pre></div>
542 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_chunks_unchecked" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1309">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_chunks_unchecked" class="fn">as_chunks_unchecked</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>]</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
543 assuming that there’s no remainder.</p>
544 <h5 id="safety-4"><a class="doc-anchor" href="#safety-4">§</a>Safety</h5>
545 <p>This may only be called when</p>
546 <ul>
547 <li>The slice splits exactly into <code>N</code>-element chunks (aka <code>self.len() % N == 0</code>).</li>
548 <li><code>N != 0</code>.</li>
549 </ul>
550 <h5 id="examples-38"><a class="doc-anchor" href="#examples-38">§</a>Examples</h5>
551 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
552 </span><span class="kw">let </span>slice: <span class="kw-2">&amp;</span>[char] = <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>, <span class="string">'!'</span>];
553 <span class="kw">let </span>chunks: <span class="kw-2">&amp;</span>[[char; <span class="number">1</span>]] =
554 <span class="comment">// SAFETY: 1-element chunks never have remainder
555 </span><span class="kw">unsafe </span>{ slice.as_chunks_unchecked() };
556 <span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'l'</span>], [<span class="string">'o'</span>], [<span class="string">'r'</span>], [<span class="string">'e'</span>], [<span class="string">'m'</span>], [<span class="string">'!'</span>]]);
557 <span class="kw">let </span>chunks: <span class="kw-2">&amp;</span>[[char; <span class="number">3</span>]] =
558 <span class="comment">// SAFETY: The slice length (6) is a multiple of 3
559 </span><span class="kw">unsafe </span>{ slice.as_chunks_unchecked() };
560 <span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>], [<span class="string">'e'</span>, <span class="string">'m'</span>, <span class="string">'!'</span>]]);
561
562 <span class="comment">// These would be unsound:
563 // let chunks: &amp;[[_; 5]] = slice.as_chunks_unchecked() // The slice length is not a multiple of 5
564 // let chunks: &amp;[[_; 0]] = slice.as_chunks_unchecked() // Zero-length chunks are never allowed</span></code></pre></div>
565 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_chunks" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1356">Source</a><h4 class="code-header">pub fn <a href="#method.as_chunks" class="fn">as_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; (&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>], &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
566 starting at the beginning of the slice,
567 and a remainder slice with length strictly less than <code>N</code>.</p>
568 <h5 id="panics-6"><a class="doc-anchor" href="#panics-6">§</a>Panics</h5>
569 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
570 error before this method gets stabilized.</p>
571 <h5 id="examples-39"><a class="doc-anchor" href="#examples-39">§</a>Examples</h5>
572 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
573 </span><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
574 <span class="kw">let </span>(chunks, remainder) = slice.as_chunks();
575 <span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'l'</span>, <span class="string">'o'</span>], [<span class="string">'r'</span>, <span class="string">'e'</span>]]);
576 <span class="macro">assert_eq!</span>(remainder, <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);</code></pre></div>
577 <p>If you expect the slice to be an exact multiple, you can combine
578 <code>let</code>-<code>else</code> with an empty slice pattern:</p>
579
580 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
581 </span><span class="kw">let </span>slice = [<span class="string">'R'</span>, <span class="string">'u'</span>, <span class="string">'s'</span>, <span class="string">'t'</span>];
582 <span class="kw">let </span>(chunks, []) = slice.as_chunks::&lt;<span class="number">2</span>&gt;() <span class="kw">else </span>{
583 <span class="macro">panic!</span>(<span class="string">"slice didn't have even length"</span>)
584 };
585 <span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'R'</span>, <span class="string">'u'</span>], [<span class="string">'s'</span>, <span class="string">'t'</span>]]);</code></pre></div>
586 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_rchunks" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1391">Source</a><h4 class="code-header">pub fn <a href="#method.as_rchunks" class="fn">as_rchunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>])</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
587 starting at the end of the slice,
588 and a remainder slice with length strictly less than <code>N</code>.</p>
589 <h5 id="panics-7"><a class="doc-anchor" href="#panics-7">§</a>Panics</h5>
590 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
591 error before this method gets stabilized.</p>
592 <h5 id="examples-40"><a class="doc-anchor" href="#examples-40">§</a>Examples</h5>
593 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
594 </span><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
595 <span class="kw">let </span>(remainder, chunks) = slice.as_rchunks();
596 <span class="macro">assert_eq!</span>(remainder, <span class="kw-2">&amp;</span>[<span class="string">'l'</span>]);
597 <span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'o'</span>, <span class="string">'r'</span>], [<span class="string">'e'</span>, <span class="string">'m'</span>]]);</code></pre></div>
598 </div></details><details class="toggle method-toggle" open><summary><section id="method.array_chunks" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1431">Source</a><h4 class="code-header">pub fn <a href="#method.array_chunks" class="fn">array_chunks</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunks.html" title="struct core::slice::iter::ArrayChunks">ArrayChunks</a>&lt;'_, T, N&gt; <a href="#" class="tooltip" data-notable-ty="ArrayChunks&lt;&#39;_, T, N&gt;">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>array_chunks</code>)</span></div></span></summary><div class="docblock"><p>Returns an iterator over <code>N</code> elements of the slice at a time, starting at the
599 beginning of the slice.</p>
600 <p>The chunks are array references and do not overlap. If <code>N</code> does not divide the
601 length of the slice, then the last up to <code>N-1</code> elements will be omitted and can be
602 retrieved from the <code>remainder</code> function of the iterator.</p>
603 <p>This method is the const generic equivalent of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact" title="method slice::chunks_exact"><code>chunks_exact</code></a>.</p>
604 <h5 id="panics-8"><a class="doc-anchor" href="#panics-8">§</a>Panics</h5>
605 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
606 error before this method gets stabilized.</p>
607 <h5 id="examples-41"><a class="doc-anchor" href="#examples-41">§</a>Examples</h5>
608 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(array_chunks)]
609 </span><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
610 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.array_chunks();
611 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>, <span class="string">'o'</span>]);
612 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'r'</span>, <span class="string">'e'</span>]);
613 <span class="macro">assert!</span>(iter.next().is_none());
614 <span class="macro">assert_eq!</span>(iter.remainder(), <span class="kw-2">&amp;</span>[<span class="string">'m'</span>]);</code></pre></div>
615 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_chunks_unchecked_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1469">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.as_chunks_unchecked_mut" class="fn">as_chunks_unchecked_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
616 &amp;mut self,
617 ) -&gt; &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>]</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
618 assuming that there’s no remainder.</p>
619 <h5 id="safety-5"><a class="doc-anchor" href="#safety-5">§</a>Safety</h5>
620 <p>This may only be called when</p>
621 <ul>
622 <li>The slice splits exactly into <code>N</code>-element chunks (aka <code>self.len() % N == 0</code>).</li>
623 <li><code>N != 0</code>.</li>
624 </ul>
625 <h5 id="examples-42"><a class="doc-anchor" href="#examples-42">§</a>Examples</h5>
626 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
627 </span><span class="kw">let </span>slice: <span class="kw-2">&amp;mut </span>[char] = <span class="kw-2">&amp;mut </span>[<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>, <span class="string">'!'</span>];
628 <span class="kw">let </span>chunks: <span class="kw-2">&amp;mut </span>[[char; <span class="number">1</span>]] =
629 <span class="comment">// SAFETY: 1-element chunks never have remainder
630 </span><span class="kw">unsafe </span>{ slice.as_chunks_unchecked_mut() };
631 chunks[<span class="number">0</span>] = [<span class="string">'L'</span>];
632 <span class="macro">assert_eq!</span>(chunks, <span class="kw-2">&amp;</span>[[<span class="string">'L'</span>], [<span class="string">'o'</span>], [<span class="string">'r'</span>], [<span class="string">'e'</span>], [<span class="string">'m'</span>], [<span class="string">'!'</span>]]);
633 <span class="kw">let </span>chunks: <span class="kw-2">&amp;mut </span>[[char; <span class="number">3</span>]] =
634 <span class="comment">// SAFETY: The slice length (6) is a multiple of 3
635 </span><span class="kw">unsafe </span>{ slice.as_chunks_unchecked_mut() };
636 chunks[<span class="number">1</span>] = [<span class="string">'a'</span>, <span class="string">'x'</span>, <span class="string">'?'</span>];
637 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'L'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'a'</span>, <span class="string">'x'</span>, <span class="string">'?'</span>]);
638
639 <span class="comment">// These would be unsound:
640 // let chunks: &amp;[[_; 5]] = slice.as_chunks_unchecked_mut() // The slice length is not a multiple of 5
641 // let chunks: &amp;[[_; 0]] = slice.as_chunks_unchecked_mut() // Zero-length chunks are never allowed</span></code></pre></div>
642 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_chunks_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1511">Source</a><h4 class="code-header">pub fn <a href="#method.as_chunks_mut" class="fn">as_chunks_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;mut self) -&gt; (&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>], &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
643 starting at the beginning of the slice,
644 and a remainder slice with length strictly less than <code>N</code>.</p>
645 <h5 id="panics-9"><a class="doc-anchor" href="#panics-9">§</a>Panics</h5>
646 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
647 error before this method gets stabilized.</p>
648 <h5 id="examples-43"><a class="doc-anchor" href="#examples-43">§</a>Examples</h5>
649 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
650 </span><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
651 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
652
653 <span class="kw">let </span>(chunks, remainder) = v.as_chunks_mut();
654 remainder[<span class="number">0</span>] = <span class="number">9</span>;
655 <span class="kw">for </span>chunk <span class="kw">in </span>chunks {
656 <span class="kw-2">*</span>chunk = [count; <span class="number">2</span>];
657 count += <span class="number">1</span>;
658 }
659 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>]);</code></pre></div>
660 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_rchunks_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1552">Source</a><h4 class="code-header">pub fn <a href="#method.as_rchunks_mut" class="fn">as_rchunks_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;mut self) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; N]</a>])</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_as_chunks</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice into a slice of <code>N</code>-element arrays,
661 starting at the end of the slice,
662 and a remainder slice with length strictly less than <code>N</code>.</p>
663 <h5 id="panics-10"><a class="doc-anchor" href="#panics-10">§</a>Panics</h5>
664 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
665 error before this method gets stabilized.</p>
666 <h5 id="examples-44"><a class="doc-anchor" href="#examples-44">§</a>Examples</h5>
667 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_as_chunks)]
668 </span><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
669 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
670
671 <span class="kw">let </span>(remainder, chunks) = v.as_rchunks_mut();
672 remainder[<span class="number">0</span>] = <span class="number">9</span>;
673 <span class="kw">for </span>chunk <span class="kw">in </span>chunks {
674 <span class="kw-2">*</span>chunk = [count; <span class="number">2</span>];
675 count += <span class="number">1</span>;
676 }
677 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">9</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>]);</code></pre></div>
678 </div></details><details class="toggle method-toggle" open><summary><section id="method.array_chunks_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1594">Source</a><h4 class="code-header">pub fn <a href="#method.array_chunks_mut" class="fn">array_chunks_mut</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;mut self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunksMut.html" title="struct core::slice::iter::ArrayChunksMut">ArrayChunksMut</a>&lt;'_, T, N&gt; <a href="#" class="tooltip" data-notable-ty="ArrayChunksMut&lt;&#39;_, T, N&gt;">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>array_chunks</code>)</span></div></span></summary><div class="docblock"><p>Returns an iterator over <code>N</code> elements of the slice at a time, starting at the
679 beginning of the slice.</p>
680 <p>The chunks are mutable array references and do not overlap. If <code>N</code> does not divide
681 the length of the slice, then the last up to <code>N-1</code> elements will be omitted and
682 can be retrieved from the <code>into_remainder</code> function of the iterator.</p>
683 <p>This method is the const generic equivalent of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact_mut" title="method slice::chunks_exact_mut"><code>chunks_exact_mut</code></a>.</p>
684 <h5 id="panics-11"><a class="doc-anchor" href="#panics-11">§</a>Panics</h5>
685 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
686 error before this method gets stabilized.</p>
687 <h5 id="examples-45"><a class="doc-anchor" href="#examples-45">§</a>Examples</h5>
688 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(array_chunks)]
689 </span><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
690 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
691
692 <span class="kw">for </span>chunk <span class="kw">in </span>v.array_chunks_mut() {
693 <span class="kw-2">*</span>chunk = [count; <span class="number">2</span>];
694 count += <span class="number">1</span>;
695 }
696 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">0</span>]);</code></pre></div>
697 </div></details><details class="toggle method-toggle" open><summary><section id="method.array_windows" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1627">Source</a><h4 class="code-header">pub fn <a href="#method.array_windows" class="fn">array_windows</a>&lt;const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html" title="struct core::slice::iter::ArrayWindows">ArrayWindows</a>&lt;'_, T, N&gt; <a href="#" class="tooltip" data-notable-ty="ArrayWindows&lt;&#39;_, T, N&gt;">ⓘ</a></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>array_windows</code>)</span></div></span></summary><div class="docblock"><p>Returns an iterator over overlapping windows of <code>N</code> elements of a slice,
698 starting at the beginning of the slice.</p>
699 <p>This is the const generic equivalent of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows" title="method slice::windows"><code>windows</code></a>.</p>
700 <p>If <code>N</code> is greater than the size of the slice, it will return no windows.</p>
701 <h5 id="panics-12"><a class="doc-anchor" href="#panics-12">§</a>Panics</h5>
702 <p>Panics if <code>N</code> is zero. This check will most probably get changed to a compile time
703 error before this method gets stabilized.</p>
704 <h5 id="examples-46"><a class="doc-anchor" href="#examples-46">§</a>Examples</h5>
705 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(array_windows)]
706 </span><span class="kw">let </span>slice = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
707 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.array_windows();
708 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
709 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
710 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">3</span>]);
711 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
712 </div></details><details class="toggle method-toggle" open><summary><section id="method.rchunks" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1662">Source</a></span><h4 class="code-header">pub fn <a href="#method.rchunks" class="fn">rchunks</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html" title="struct core::slice::iter::RChunks">RChunks</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="RChunks&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the end
713 of the slice.</p>
714 <p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
715 slice, then the last chunk will not have length <code>chunk_size</code>.</p>
716 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact" title="method slice::rchunks_exact"><code>rchunks_exact</code></a> for a variant of this iterator that returns chunks of always exactly
717 <code>chunk_size</code> elements, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks" title="method slice::chunks"><code>chunks</code></a> for the same iterator but starting at the beginning
718 of the slice.</p>
719 <h5 id="panics-13"><a class="doc-anchor" href="#panics-13">§</a>Panics</h5>
720 <p>Panics if <code>chunk_size</code> is zero.</p>
721 <h5 id="examples-47"><a class="doc-anchor" href="#examples-47">§</a>Examples</h5>
722 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
723 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.rchunks(<span class="number">2</span>);
724 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'e'</span>, <span class="string">'m'</span>]);
725 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'o'</span>, <span class="string">'r'</span>]);
726 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>]);
727 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
728 </div></details><details class="toggle method-toggle" open><summary><section id="method.rchunks_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1701">Source</a></span><h4 class="code-header">pub fn <a href="#method.rchunks_mut" class="fn">rchunks_mut</a>(&amp;mut self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksMut.html" title="struct core::slice::iter::RChunksMut">RChunksMut</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="RChunksMut&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the end
729 of the slice.</p>
730 <p>The chunks are mutable slices, and do not overlap. If <code>chunk_size</code> does not divide the
731 length of the slice, then the last chunk will not have length <code>chunk_size</code>.</p>
732 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_exact_mut" title="method slice::rchunks_exact_mut"><code>rchunks_exact_mut</code></a> for a variant of this iterator that returns chunks of always
733 exactly <code>chunk_size</code> elements, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut" title="method slice::chunks_mut"><code>chunks_mut</code></a> for the same iterator but starting at the
734 beginning of the slice.</p>
735 <h5 id="panics-14"><a class="doc-anchor" href="#panics-14">§</a>Panics</h5>
736 <p>Panics if <code>chunk_size</code> is zero.</p>
737 <h5 id="examples-48"><a class="doc-anchor" href="#examples-48">§</a>Examples</h5>
738 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
739 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
740
741 <span class="kw">for </span>chunk <span class="kw">in </span>v.rchunks_mut(<span class="number">2</span>) {
742 <span class="kw">for </span>elem <span class="kw">in </span>chunk.iter_mut() {
743 <span class="kw-2">*</span>elem += count;
744 }
745 count += <span class="number">1</span>;
746 }
747 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">1</span>]);</code></pre></div>
748 </div></details><details class="toggle method-toggle" open><summary><section id="method.rchunks_exact" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1741">Source</a></span><h4 class="code-header">pub fn <a href="#method.rchunks_exact" class="fn">rchunks_exact</a>(&amp;self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html" title="struct core::slice::iter::RChunksExact">RChunksExact</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="RChunksExact&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the
749 end of the slice.</p>
750 <p>The chunks are slices and do not overlap. If <code>chunk_size</code> does not divide the length of the
751 slice, then the last up to <code>chunk_size-1</code> elements will be omitted and can be retrieved
752 from the <code>remainder</code> function of the iterator.</p>
753 <p>Due to each chunk having exactly <code>chunk_size</code> elements, the compiler can often optimize the
754 resulting code better than in the case of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks" title="method slice::rchunks"><code>rchunks</code></a>.</p>
755 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks" title="method slice::rchunks"><code>rchunks</code></a> for a variant of this iterator that also returns the remainder as a smaller
756 chunk, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact" title="method slice::chunks_exact"><code>chunks_exact</code></a> for the same iterator but starting at the beginning of the
757 slice.</p>
758 <h5 id="panics-15"><a class="doc-anchor" href="#panics-15">§</a>Panics</h5>
759 <p>Panics if <code>chunk_size</code> is zero.</p>
760 <h5 id="examples-49"><a class="doc-anchor" href="#examples-49">§</a>Examples</h5>
761 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="string">'l'</span>, <span class="string">'o'</span>, <span class="string">'r'</span>, <span class="string">'e'</span>, <span class="string">'m'</span>];
762 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.rchunks_exact(<span class="number">2</span>);
763 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'e'</span>, <span class="string">'m'</span>]);
764 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="string">'o'</span>, <span class="string">'r'</span>]);
765 <span class="macro">assert!</span>(iter.next().is_none());
766 <span class="macro">assert_eq!</span>(iter.remainder(), <span class="kw-2">&amp;</span>[<span class="string">'l'</span>]);</code></pre></div>
767 </div></details><details class="toggle method-toggle" open><summary><section id="method.rchunks_exact_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.31.0">1.31.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1785">Source</a></span><h4 class="code-header">pub fn <a href="#method.rchunks_exact_mut" class="fn">rchunks_exact_mut</a>(&amp;mut self, chunk_size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExactMut.html" title="struct core::slice::iter::RChunksExactMut">RChunksExactMut</a>&lt;'_, T&gt; <a href="#" class="tooltip" data-notable-ty="RChunksExactMut&lt;&#39;_, T&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns an iterator over <code>chunk_size</code> elements of the slice at a time, starting at the end
768 of the slice.</p>
769 <p>The chunks are mutable slices, and do not overlap. If <code>chunk_size</code> does not divide the
770 length of the slice, then the last up to <code>chunk_size-1</code> elements will be omitted and can be
771 retrieved from the <code>into_remainder</code> function of the iterator.</p>
772 <p>Due to each chunk having exactly <code>chunk_size</code> elements, the compiler can often optimize the
773 resulting code better than in the case of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_mut" title="method slice::chunks_mut"><code>chunks_mut</code></a>.</p>
774 <p>See <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.rchunks_mut" title="method slice::rchunks_mut"><code>rchunks_mut</code></a> for a variant of this iterator that also returns the remainder as a
775 smaller chunk, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.chunks_exact_mut" title="method slice::chunks_exact_mut"><code>chunks_exact_mut</code></a> for the same iterator but starting at the beginning
776 of the slice.</p>
777 <h5 id="panics-16"><a class="doc-anchor" href="#panics-16">§</a>Panics</h5>
778 <p>Panics if <code>chunk_size</code> is zero.</p>
779 <h5 id="examples-50"><a class="doc-anchor" href="#examples-50">§</a>Examples</h5>
780 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">0</span>];
781 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">1</span>;
782
783 <span class="kw">for </span>chunk <span class="kw">in </span>v.rchunks_exact_mut(<span class="number">2</span>) {
784 <span class="kw">for </span>elem <span class="kw">in </span>chunk.iter_mut() {
785 <span class="kw-2">*</span>elem += count;
786 }
787 count += <span class="number">1</span>;
788 }
789 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">1</span>]);</code></pre></div>
790 </div></details><details class="toggle method-toggle" open><summary><section id="method.chunk_by" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1824-1826">Source</a></span><h4 class="code-header">pub fn <a href="#method.chunk_by" class="fn">chunk_by</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html" title="struct core::slice::iter::ChunkBy">ChunkBy</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="ChunkBy&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
791 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the slice producing non-overlapping runs
792 of elements using the predicate to separate them.</p>
793 <p>The predicate is called for every pair of consecutive elements,
794 meaning that it is called on <code>slice[0]</code> and <code>slice[1]</code>,
795 followed by <code>slice[1]</code> and <code>slice[2]</code>, and so on.</p>
796 <h5 id="examples-51"><a class="doc-anchor" href="#examples-51">§</a>Examples</h5>
797 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>];
798
799 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunk_by(|a, b| a == b);
800
801 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>][..]));
802 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">3</span>][..]));
803 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>][..]));
804 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
805 <p>This method can be used to extract the sorted subslices:</p>
806
807 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>];
808
809 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunk_by(|a, b| a &lt;= b);
810
811 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>][..]));
812 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">3</span>][..]));
813 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>][..]));
814 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
815 </div></details><details class="toggle method-toggle" open><summary><section id="method.chunk_by_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.77.0">1.77.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1865-1867">Source</a></span><h4 class="code-header">pub fn <a href="#method.chunk_by_mut" class="fn">chunk_by_mut</a>&lt;F&gt;(&amp;mut self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkByMut.html" title="struct core::slice::iter::ChunkByMut">ChunkByMut</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="ChunkByMut&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
816 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over the slice producing non-overlapping mutable
817 runs of elements using the predicate to separate them.</p>
818 <p>The predicate is called for every pair of consecutive elements,
819 meaning that it is called on <code>slice[0]</code> and <code>slice[1]</code>,
820 followed by <code>slice[1]</code> and <code>slice[2]</code>, and so on.</p>
821 <h5 id="examples-52"><a class="doc-anchor" href="#examples-52">§</a>Examples</h5>
822 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>];
823
824 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunk_by_mut(|a, b| a == b);
825
826 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>][..]));
827 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;mut </span>[<span class="number">3</span>, <span class="number">3</span>][..]));
828 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;mut </span>[<span class="number">2</span>, <span class="number">2</span>, <span class="number">2</span>][..]));
829 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
830 <p>This method can be used to extract the sorted subslices:</p>
831
832 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>];
833
834 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.chunk_by_mut(|a, b| a &lt;= b);
835
836 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>][..]));
837 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;mut </span>[<span class="number">2</span>, <span class="number">3</span>][..]));
838 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;mut </span>[<span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>][..]));
839 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
840 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1911">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_at" class="fn">split_at</a>(&amp;self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Divides one slice into two at an index.</p>
841 <p>The first will contain all indices from <code>[0, mid)</code> (excluding
842 the index <code>mid</code> itself) and the second will contain all
843 indices from <code>[mid, len)</code> (excluding the index <code>len</code> itself).</p>
844 <h5 id="panics-17"><a class="doc-anchor" href="#panics-17">§</a>Panics</h5>
845 <p>Panics if <code>mid &gt; len</code>. For a non-panicking alternative see
846 <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_checked" title="method slice::split_at_checked"><code>split_at_checked</code></a>.</p>
847 <h5 id="examples-53"><a class="doc-anchor" href="#examples-53">§</a>Examples</h5>
848 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>];
849
850 {
851 <span class="kw">let </span>(left, right) = v.split_at(<span class="number">0</span>);
852 <span class="macro">assert_eq!</span>(left, []);
853 <span class="macro">assert_eq!</span>(right, [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]);
854 }
855
856 {
857 <span class="kw">let </span>(left, right) = v.split_at(<span class="number">2</span>);
858 <span class="macro">assert_eq!</span>(left, [<span class="string">'a'</span>, <span class="string">'b'</span>]);
859 <span class="macro">assert_eq!</span>(right, [<span class="string">'c'</span>]);
860 }
861
862 {
863 <span class="kw">let </span>(left, right) = v.split_at(<span class="number">3</span>);
864 <span class="macro">assert_eq!</span>(left, [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]);
865 <span class="macro">assert_eq!</span>(right, []);
866 }</code></pre></div>
867 </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.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1945">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_at_mut" class="fn">split_at_mut</a>(&amp;mut self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Divides one mutable slice into two at an index.</p>
868 <p>The first will contain all indices from <code>[0, mid)</code> (excluding
869 the index <code>mid</code> itself) and the second will contain all
870 indices from <code>[mid, len)</code> (excluding the index <code>len</code> itself).</p>
871 <h5 id="panics-18"><a class="doc-anchor" href="#panics-18">§</a>Panics</h5>
872 <p>Panics if <code>mid &gt; len</code>. For a non-panicking alternative see
873 <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut_checked" title="method slice::split_at_mut_checked"><code>split_at_mut_checked</code></a>.</p>
874 <h5 id="examples-54"><a class="doc-anchor" href="#examples-54">§</a>Examples</h5>
875 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">1</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="number">6</span>];
876 <span class="kw">let </span>(left, right) = v.split_at_mut(<span class="number">2</span>);
877 <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">0</span>]);
878 <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="number">6</span>]);
879 left[<span class="number">1</span>] = <span class="number">2</span>;
880 right[<span class="number">1</span>] = <span class="number">4</span>;
881 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);</code></pre></div>
882 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.79.0">1.79.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#1996">Source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.split_at_unchecked" class="fn">split_at_unchecked</a>(&amp;self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Divides one slice into two at an index, without doing bounds checking.</p>
883 <p>The first will contain all indices from <code>[0, mid)</code> (excluding
884 the index <code>mid</code> itself) and the second will contain all
885 indices from <code>[mid, len)</code> (excluding the index <code>len</code> itself).</p>
886 <p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at" title="method slice::split_at"><code>split_at</code></a>.</p>
887 <h5 id="safety-6"><a class="doc-anchor" href="#safety-6">§</a>Safety</h5>
888 <p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
889 even if the resulting reference is not used. The caller has to ensure that
890 <code>0 &lt;= mid &lt;= self.len()</code>.</p>
891 <h5 id="examples-55"><a class="doc-anchor" href="#examples-55">§</a>Examples</h5>
892 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>];
893
894 <span class="kw">unsafe </span>{
895 <span class="kw">let </span>(left, right) = v.split_at_unchecked(<span class="number">0</span>);
896 <span class="macro">assert_eq!</span>(left, []);
897 <span class="macro">assert_eq!</span>(right, [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]);
898 }
899
900 <span class="kw">unsafe </span>{
901 <span class="kw">let </span>(left, right) = v.split_at_unchecked(<span class="number">2</span>);
902 <span class="macro">assert_eq!</span>(left, [<span class="string">'a'</span>, <span class="string">'b'</span>]);
903 <span class="macro">assert_eq!</span>(right, [<span class="string">'c'</span>]);
904 }
905
906 <span class="kw">unsafe </span>{
907 <span class="kw">let </span>(left, right) = v.split_at_unchecked(<span class="number">3</span>);
908 <span class="macro">assert_eq!</span>(left, [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]);
909 <span class="macro">assert_eq!</span>(right, []);
910 }</code></pre></div>
911 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_at_mut_unchecked" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.79.0">1.79.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2049">Source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.split_at_mut_unchecked" class="fn">split_at_mut_unchecked</a>(
912 &amp;mut self,
913 mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
914 ) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Divides one mutable slice into two at an index, without doing bounds checking.</p>
915 <p>The first will contain all indices from <code>[0, mid)</code> (excluding
916 the index <code>mid</code> itself) and the second will contain all
917 indices from <code>[mid, len)</code> (excluding the index <code>len</code> itself).</p>
918 <p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut" title="method slice::split_at_mut"><code>split_at_mut</code></a>.</p>
919 <h5 id="safety-7"><a class="doc-anchor" href="#safety-7">§</a>Safety</h5>
920 <p>Calling this method with an out-of-bounds index is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
921 even if the resulting reference is not used. The caller has to ensure that
922 <code>0 &lt;= mid &lt;= self.len()</code>.</p>
923 <h5 id="examples-56"><a class="doc-anchor" href="#examples-56">§</a>Examples</h5>
924 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">1</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="number">6</span>];
925 <span class="comment">// scoped to restrict the lifetime of the borrows
926 </span><span class="kw">unsafe </span>{
927 <span class="kw">let </span>(left, right) = v.split_at_mut_unchecked(<span class="number">2</span>);
928 <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">0</span>]);
929 <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="number">6</span>]);
930 left[<span class="number">1</span>] = <span class="number">2</span>;
931 right[<span class="number">1</span>] = <span class="number">4</span>;
932 }
933 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);</code></pre></div>
934 </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/nightly/src/core/slice/mod.rs.html#2110">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_at_checked" class="fn">split_at_checked</a>(&amp;self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Divides one slice into two at an index, returning <code>None</code> if the slice is
935 too short.</p>
936 <p>If <code>mid ≤ len</code> returns a pair of slices where the first will contain all
937 indices from <code>[0, mid)</code> (excluding the index <code>mid</code> itself) and the
938 second will contain all indices from <code>[mid, len)</code> (excluding the index
939 <code>len</code> itself).</p>
940 <p>Otherwise, if <code>mid &gt; len</code>, returns <code>None</code>.</p>
941 <h5 id="examples-57"><a class="doc-anchor" href="#examples-57">§</a>Examples</h5>
942 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">1</span>, -<span class="number">2</span>, <span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>];
943
944 {
945 <span class="kw">let </span>(left, right) = v.split_at_checked(<span class="number">0</span>).unwrap();
946 <span class="macro">assert_eq!</span>(left, []);
947 <span class="macro">assert_eq!</span>(right, [<span class="number">1</span>, -<span class="number">2</span>, <span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>]);
948 }
949
950 {
951 <span class="kw">let </span>(left, right) = v.split_at_checked(<span class="number">2</span>).unwrap();
952 <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, -<span class="number">2</span>]);
953 <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>]);
954 }
955
956 {
957 <span class="kw">let </span>(left, right) = v.split_at_checked(<span class="number">6</span>).unwrap();
958 <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, -<span class="number">2</span>, <span class="number">3</span>, -<span class="number">4</span>, <span class="number">5</span>, -<span class="number">6</span>]);
959 <span class="macro">assert_eq!</span>(right, []);
960 }
961
962 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.split_at_checked(<span class="number">7</span>));</code></pre></div>
963 </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/nightly/src/core/slice/mod.rs.html#2149">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_at_mut_checked" class="fn">split_at_mut_checked</a>(
964 &amp;mut self,
965 mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
966 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;</h4></section></summary><div class="docblock"><p>Divides one mutable slice into two at an index, returning <code>None</code> if the
967 slice is too short.</p>
968 <p>If <code>mid ≤ len</code> returns a pair of slices where the first will contain all
969 indices from <code>[0, mid)</code> (excluding the index <code>mid</code> itself) and the
970 second will contain all indices from <code>[mid, len)</code> (excluding the index
971 <code>len</code> itself).</p>
972 <p>Otherwise, if <code>mid &gt; len</code>, returns <code>None</code>.</p>
973 <h5 id="examples-58"><a class="doc-anchor" href="#examples-58">§</a>Examples</h5>
974 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">1</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="number">6</span>];
975
976 <span class="kw">if let </span><span class="prelude-val">Some</span>((left, right)) = v.split_at_mut_checked(<span class="number">2</span>) {
977 <span class="macro">assert_eq!</span>(left, [<span class="number">1</span>, <span class="number">0</span>]);
978 <span class="macro">assert_eq!</span>(right, [<span class="number">3</span>, <span class="number">0</span>, <span class="number">5</span>, <span class="number">6</span>]);
979 left[<span class="number">1</span>] = <span class="number">2</span>;
980 right[<span class="number">1</span>] = <span class="number">4</span>;
981 }
982 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
983
984 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, v.split_at_mut_checked(<span class="number">7</span>));</code></pre></div>
985 </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/nightly/src/core/slice/mod.rs.html#2201-2203">Source</a></span><h4 class="code-header">pub fn <a href="#method.split" class="fn">split</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html" title="struct core::slice::iter::Split">Split</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="Split&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
986 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
987 <code>pred</code>. The matched element is not contained in the subslices.</p>
988 <h5 id="examples-59"><a class="doc-anchor" href="#examples-59">§</a>Examples</h5>
989 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>, <span class="number">20</span>];
990 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
991
992 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]);
993 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">20</span>]);
994 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
995 <p>If the first element is matched, an empty slice will be the first item
996 returned by the iterator. Similarly, if the last element in the slice
997 is matched, an empty slice will be the last item returned by the
998 iterator:</p>
999
1000 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>];
1001 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
1002
1003 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]);
1004 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[]);
1005 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
1006 <p>If two matched elements are directly adjacent, an empty slice will be
1007 present between them:</p>
1008
1009 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">6</span>, <span class="number">33</span>, <span class="number">20</span>];
1010 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
1011
1012 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>]);
1013 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[]);
1014 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">20</span>]);
1015 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
1016 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_mut" 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/nightly/src/core/slice/mod.rs.html#2223-2225">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_mut" class="fn">split_mut</a>&lt;F&gt;(&amp;mut self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitMut.html" title="struct core::slice::iter::SplitMut">SplitMut</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="SplitMut&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1017 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over mutable subslices separated by elements that
1018 match <code>pred</code>. The matched element is not contained in the subslices.</p>
1019 <h5 id="examples-60"><a class="doc-anchor" href="#examples-60">§</a>Examples</h5>
1020 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
1021
1022 <span class="kw">for </span>group <span class="kw">in </span>v.split_mut(|num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1023 group[<span class="number">0</span>] = <span class="number">1</span>;
1024 }
1025 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">1</span>, <span class="number">60</span>, <span class="number">1</span>]);</code></pre></div>
1026 </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/nightly/src/core/slice/mod.rs.html#2259-2261">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_inclusive" class="fn">split_inclusive</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html" title="struct core::slice::iter::SplitInclusive">SplitInclusive</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="SplitInclusive&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1027 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
1028 <code>pred</code>. The matched element is contained in the end of the previous
1029 subslice as a terminator.</p>
1030 <h5 id="examples-61"><a class="doc-anchor" href="#examples-61">§</a>Examples</h5>
1031 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>, <span class="number">20</span>];
1032 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split_inclusive(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
1033
1034 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>]);
1035 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">20</span>]);
1036 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
1037 <p>If the last element of the slice is matched,
1038 that element will be considered the terminator of the preceding slice.
1039 That slice will be the last item returned by the iterator.</p>
1040
1041 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">3</span>, <span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>];
1042 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.split_inclusive(|num| num % <span class="number">3 </span>== <span class="number">0</span>);
1043
1044 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">3</span>]);
1045 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">33</span>]);
1046 <span class="macro">assert!</span>(iter.next().is_none());</code></pre></div>
1047 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_inclusive_mut" 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/nightly/src/core/slice/mod.rs.html#2283-2285">Source</a></span><h4 class="code-header">pub fn <a href="#method.split_inclusive_mut" class="fn">split_inclusive_mut</a>&lt;F&gt;(&amp;mut self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusiveMut.html" title="struct core::slice::iter::SplitInclusiveMut">SplitInclusiveMut</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="SplitInclusiveMut&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1048 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over mutable subslices separated by elements that
1049 match <code>pred</code>. The matched element is contained in the previous
1050 subslice as a terminator.</p>
1051 <h5 id="examples-62"><a class="doc-anchor" href="#examples-62">§</a>Examples</h5>
1052 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
1053
1054 <span class="kw">for </span>group <span class="kw">in </span>v.split_inclusive_mut(|num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1055 <span class="kw">let </span>terminator_idx = group.len()-<span class="number">1</span>;
1056 group[terminator_idx] = <span class="number">1</span>;
1057 }
1058 <span class="macro">assert_eq!</span>(v, [<span class="number">10</span>, <span class="number">40</span>, <span class="number">1</span>, <span class="number">20</span>, <span class="number">1</span>, <span class="number">1</span>]);</code></pre></div>
1059 </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.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2319-2321">Source</a></span><h4 class="code-header">pub fn <a href="#method.rsplit" class="fn">rsplit</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html" title="struct core::slice::iter::RSplit">RSplit</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="RSplit&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1060 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
1061 <code>pred</code>, starting at the end of the slice and working backwards.
1062 The matched element is not contained in the subslices.</p>
1063 <h5 id="examples-63"><a class="doc-anchor" href="#examples-63">§</a>Examples</h5>
1064 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>slice = [<span class="number">11</span>, <span class="number">22</span>, <span class="number">33</span>, <span class="number">0</span>, <span class="number">44</span>, <span class="number">55</span>];
1065 <span class="kw">let </span><span class="kw-2">mut </span>iter = slice.rsplit(|num| <span class="kw-2">*</span>num == <span class="number">0</span>);
1066
1067 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">44</span>, <span class="number">55</span>]);
1068 <span class="macro">assert_eq!</span>(iter.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">11</span>, <span class="number">22</span>, <span class="number">33</span>]);
1069 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">None</span>);</code></pre></div>
1070 <p>As with <code>split()</code>, if the first or last element is matched, an empty
1071 slice will be the first (or last) item returned by the iterator.</p>
1072
1073 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>];
1074 <span class="kw">let </span><span class="kw-2">mut </span>it = v.rsplit(|n| <span class="kw-2">*</span>n % <span class="number">2 </span>== <span class="number">0</span>);
1075 <span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[]);
1076 <span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">5</span>]);
1077 <span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">1</span>]);
1078 <span class="macro">assert_eq!</span>(it.next().unwrap(), <span class="kw-2">&amp;</span>[]);
1079 <span class="macro">assert_eq!</span>(it.next(), <span class="prelude-val">None</span>);</code></pre></div>
1080 </div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit_mut" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2345-2347">Source</a></span><h4 class="code-header">pub fn <a href="#method.rsplit_mut" class="fn">rsplit_mut</a>&lt;F&gt;(&amp;mut self, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitMut.html" title="struct core::slice::iter::RSplitMut">RSplitMut</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="RSplitMut&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1081 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over mutable subslices separated by elements that
1082 match <code>pred</code>, starting at the end of the slice and working
1083 backwards. The matched element is not contained in the subslices.</p>
1084 <h5 id="examples-64"><a class="doc-anchor" href="#examples-64">§</a>Examples</h5>
1085 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">100</span>, <span class="number">400</span>, <span class="number">300</span>, <span class="number">200</span>, <span class="number">600</span>, <span class="number">500</span>];
1086
1087 <span class="kw">let </span><span class="kw-2">mut </span>count = <span class="number">0</span>;
1088 <span class="kw">for </span>group <span class="kw">in </span>v.rsplit_mut(|num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1089 count += <span class="number">1</span>;
1090 group[<span class="number">0</span>] = count;
1091 }
1092 <span class="macro">assert_eq!</span>(v, [<span class="number">3</span>, <span class="number">400</span>, <span class="number">300</span>, <span class="number">2</span>, <span class="number">600</span>, <span class="number">1</span>]);</code></pre></div>
1093 </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/nightly/src/core/slice/mod.rs.html#2373-2375">Source</a></span><h4 class="code-header">pub fn <a href="#method.splitn" class="fn">splitn</a>&lt;F&gt;(&amp;self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html" title="struct core::slice::iter::SplitN">SplitN</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="SplitN&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1094 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
1095 <code>pred</code>, limited to returning at most <code>n</code> items. The matched element is
1096 not contained in the subslices.</p>
1097 <p>The last element returned, if any, will contain the remainder of the
1098 slice.</p>
1099 <h5 id="examples-65"><a class="doc-anchor" href="#examples-65">§</a>Examples</h5>
1100 <p>Print the slice split once by numbers divisible by 3 (i.e., <code>[10, 40]</code>,
1101 <code>[20, 60, 50]</code>):</p>
1102
1103 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
1104
1105 <span class="kw">for </span>group <span class="kw">in </span>v.splitn(<span class="number">2</span>, |num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1106 <span class="macro">println!</span>(<span class="string">"{group:?}"</span>);
1107 }</code></pre></div>
1108 </div></details><details class="toggle method-toggle" open><summary><section id="method.splitn_mut" 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/nightly/src/core/slice/mod.rs.html#2399-2401">Source</a></span><h4 class="code-header">pub fn <a href="#method.splitn_mut" class="fn">splitn_mut</a>&lt;F&gt;(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitNMut.html" title="struct core::slice::iter::SplitNMut">SplitNMut</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="SplitNMut&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1109 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over mutable subslices separated by elements that match
1110 <code>pred</code>, limited to returning at most <code>n</code> items. The matched element is
1111 not contained in the subslices.</p>
1112 <p>The last element returned, if any, will contain the remainder of the
1113 slice.</p>
1114 <h5 id="examples-66"><a class="doc-anchor" href="#examples-66">§</a>Examples</h5>
1115 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
1116
1117 <span class="kw">for </span>group <span class="kw">in </span>v.splitn_mut(<span class="number">2</span>, |num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1118 group[<span class="number">0</span>] = <span class="number">1</span>;
1119 }
1120 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">1</span>, <span class="number">60</span>, <span class="number">50</span>]);</code></pre></div>
1121 </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/nightly/src/core/slice/mod.rs.html#2428-2430">Source</a></span><h4 class="code-header">pub fn <a href="#method.rsplitn" class="fn">rsplitn</a>&lt;F&gt;(&amp;self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html" title="struct core::slice::iter::RSplitN">RSplitN</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="RSplitN&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1122 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
1123 <code>pred</code> limited to returning at most <code>n</code> items. This starts at the end of
1124 the slice and works backwards. The matched element is not contained in
1125 the subslices.</p>
1126 <p>The last element returned, if any, will contain the remainder of the
1127 slice.</p>
1128 <h5 id="examples-67"><a class="doc-anchor" href="#examples-67">§</a>Examples</h5>
1129 <p>Print the slice split once, starting from the end, by numbers divisible
1130 by 3 (i.e., <code>[50]</code>, <code>[10, 40, 30, 20]</code>):</p>
1131
1132 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
1133
1134 <span class="kw">for </span>group <span class="kw">in </span>v.rsplitn(<span class="number">2</span>, |num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1135 <span class="macro">println!</span>(<span class="string">"{group:?}"</span>);
1136 }</code></pre></div>
1137 </div></details><details class="toggle method-toggle" open><summary><section id="method.rsplitn_mut" 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/nightly/src/core/slice/mod.rs.html#2455-2457">Source</a></span><h4 class="code-header">pub fn <a href="#method.rsplitn_mut" class="fn">rsplitn_mut</a>&lt;F&gt;(&amp;mut self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, pred: F) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitNMut.html" title="struct core::slice::iter::RSplitNMut">RSplitNMut</a>&lt;'_, T, F&gt; <a href="#" class="tooltip" data-notable-ty="RSplitNMut&lt;&#39;_, T, F&gt;">ⓘ</a><div class="where">where
1138 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns an iterator over subslices separated by elements that match
1139 <code>pred</code> limited to returning at most <code>n</code> items. This starts at the end of
1140 the slice and works backwards. The matched element is not contained in
1141 the subslices.</p>
1142 <p>The last element returned, if any, will contain the remainder of the
1143 slice.</p>
1144 <h5 id="examples-68"><a class="doc-anchor" href="#examples-68">§</a>Examples</h5>
1145 <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="number">10</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">50</span>];
1146
1147 <span class="kw">for </span>group <span class="kw">in </span>s.rsplitn_mut(<span class="number">2</span>, |num| <span class="kw-2">*</span>num % <span class="number">3 </span>== <span class="number">0</span>) {
1148 group[<span class="number">0</span>] = <span class="number">1</span>;
1149 }
1150 <span class="macro">assert_eq!</span>(s, [<span class="number">1</span>, <span class="number">40</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">60</span>, <span class="number">1</span>]);</code></pre></div>
1151 </div></details><details class="toggle method-toggle" open><summary><section id="method.split_once" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2482-2484">Source</a><h4 class="code-header">pub fn <a href="#method.split_once" class="fn">split_once</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;<div class="where">where
1152 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_split_once</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice on the first element that matches the specified
1153 predicate.</p>
1154 <p>If any matching elements are present in the slice, returns the prefix
1155 before the match and suffix after. The matching element itself is not
1156 included. If no elements match, returns <code>None</code>.</p>
1157 <h5 id="examples-69"><a class="doc-anchor" href="#examples-69">§</a>Examples</h5>
1158 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_split_once)]
1159 </span><span class="kw">let </span>s = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>];
1160 <span class="macro">assert_eq!</span>(s.split_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">2</span>), <span class="prelude-val">Some</span>((
1161 <span class="kw-2">&amp;</span>[<span class="number">1</span>][..],
1162 <span class="kw-2">&amp;</span>[<span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>][..]
1163 )));
1164 <span class="macro">assert_eq!</span>(s.split_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">0</span>), <span class="prelude-val">None</span>);</code></pre></div>
1165 </div></details><details class="toggle method-toggle" open><summary><section id="method.rsplit_once" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2510-2512">Source</a><h4 class="code-header">pub fn <a href="#method.rsplit_once" class="fn">rsplit_once</a>&lt;F&gt;(&amp;self, pred: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)&gt;<div class="where">where
1166 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_split_once</code>)</span></div></span></summary><div class="docblock"><p>Splits the slice on the last element that matches the specified
1167 predicate.</p>
1168 <p>If any matching elements are present in the slice, returns the prefix
1169 before the match and suffix after. The matching element itself is not
1170 included. If no elements match, returns <code>None</code>.</p>
1171 <h5 id="examples-70"><a class="doc-anchor" href="#examples-70">§</a>Examples</h5>
1172 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_split_once)]
1173 </span><span class="kw">let </span>s = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>];
1174 <span class="macro">assert_eq!</span>(s.rsplit_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">2</span>), <span class="prelude-val">Some</span>((
1175 <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>][..],
1176 <span class="kw-2">&amp;</span>[<span class="number">4</span>][..]
1177 )));
1178 <span class="macro">assert_eq!</span>(s.rsplit_once(|<span class="kw-2">&amp;</span>x| x == <span class="number">0</span>), <span class="prelude-val">None</span>);</code></pre></div>
1179 </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/nightly/src/core/slice/mod.rs.html#2546-2548">Source</a></span><h4 class="code-header">pub fn <a href="#method.contains" class="fn">contains</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
1180 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if the slice contains an element with the given value.</p>
1181 <p>This operation is <em>O</em>(<em>n</em>).</p>
1182 <p>Note that if you have a sorted slice, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a> may be faster.</p>
1183 <h5 id="examples-71"><a class="doc-anchor" href="#examples-71">§</a>Examples</h5>
1184 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1185 <span class="macro">assert!</span>(v.contains(<span class="kw-2">&amp;</span><span class="number">30</span>));
1186 <span class="macro">assert!</span>(!v.contains(<span class="kw-2">&amp;</span><span class="number">50</span>));</code></pre></div>
1187 <p>If you do not have a <code>&amp;T</code>, but some other value that you can compare
1188 with one (for example, <code>String</code> implements <code>PartialEq&lt;str&gt;</code>), you can
1189 use <code>iter().any</code>:</p>
1190
1191 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [String::from(<span class="string">"hello"</span>), String::from(<span class="string">"world"</span>)]; <span class="comment">// slice of `String`
1192 </span><span class="macro">assert!</span>(v.iter().any(|e| e == <span class="string">"hello"</span>)); <span class="comment">// search with `&amp;str`
1193 </span><span class="macro">assert!</span>(!v.iter().any(|e| e == <span class="string">"hi"</span>));</code></pre></div>
1194 </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/nightly/src/core/slice/mod.rs.html#2576-2578">Source</a></span><h4 class="code-header">pub fn <a href="#method.starts_with" class="fn">starts_with</a>(&amp;self, needle: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
1195 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if <code>needle</code> is a prefix of the slice or equal to the slice.</p>
1196 <h5 id="examples-72"><a class="doc-anchor" href="#examples-72">§</a>Examples</h5>
1197 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1198 <span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">10</span>]));
1199 <span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]));
1200 <span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>v));
1201 <span class="macro">assert!</span>(!v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">50</span>]));
1202 <span class="macro">assert!</span>(!v.starts_with(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">50</span>]));</code></pre></div>
1203 <p>Always returns <code>true</code> if <code>needle</code> is an empty slice:</p>
1204
1205 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1206 <span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[]));
1207 <span class="kw">let </span>v: <span class="kw-2">&amp;</span>[u8] = <span class="kw-2">&amp;</span>[];
1208 <span class="macro">assert!</span>(v.starts_with(<span class="kw-2">&amp;</span>[]));</code></pre></div>
1209 </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/nightly/src/core/slice/mod.rs.html#2607-2609">Source</a></span><h4 class="code-header">pub fn <a href="#method.ends_with" class="fn">ends_with</a>(&amp;self, needle: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
1210 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns <code>true</code> if <code>needle</code> is a suffix of the slice or equal to the slice.</p>
1211 <h5 id="examples-73"><a class="doc-anchor" href="#examples-73">§</a>Examples</h5>
1212 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1213 <span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">30</span>]));
1214 <span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>]));
1215 <span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>v));
1216 <span class="macro">assert!</span>(!v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">50</span>]));
1217 <span class="macro">assert!</span>(!v.ends_with(<span class="kw-2">&amp;</span>[<span class="number">50</span>, <span class="number">30</span>]));</code></pre></div>
1218 <p>Always returns <code>true</code> if <code>needle</code> is an empty slice:</p>
1219
1220 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1221 <span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[]));
1222 <span class="kw">let </span>v: <span class="kw-2">&amp;</span>[u8] = <span class="kw-2">&amp;</span>[];
1223 <span class="macro">assert!</span>(v.ends_with(<span class="kw-2">&amp;</span>[]));</code></pre></div>
1224 </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.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2639-2641">Source</a></span><h4 class="code-header">pub fn <a href="#method.strip_prefix" class="fn">strip_prefix</a>&lt;P&gt;(&amp;self, prefix: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;P</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;<div class="where">where
1225 P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html" title="trait core::slice::SlicePattern">SlicePattern</a>&lt;Item = T&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
1226 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns a subslice with the prefix removed.</p>
1227 <p>If the slice starts with <code>prefix</code>, returns the subslice after the prefix, wrapped in <code>Some</code>.
1228 If <code>prefix</code> is empty, simply returns the original slice. If <code>prefix</code> is equal to the
1229 original slice, returns an empty slice.</p>
1230 <p>If the slice does not start with <code>prefix</code>, returns <code>None</code>.</p>
1231 <h5 id="examples-74"><a class="doc-anchor" href="#examples-74">§</a>Examples</h5>
1232 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1233 <span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>][..]));
1234 <span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">30</span>][..]));
1235 <span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[][..]));
1236 <span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">50</span>]), <span class="prelude-val">None</span>);
1237 <span class="macro">assert_eq!</span>(v.strip_prefix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">50</span>]), <span class="prelude-val">None</span>);
1238
1239 <span class="kw">let </span>prefix : <span class="kw-2">&amp;</span>str = <span class="string">"he"</span>;
1240 <span class="macro">assert_eq!</span>(<span class="string">b"hello"</span>.strip_prefix(prefix.as_bytes()),
1241 <span class="prelude-val">Some</span>(<span class="string">b"llo"</span>.as_ref()));</code></pre></div>
1242 </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.51.0">1.51.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2675-2677">Source</a></span><h4 class="code-header">pub fn <a href="#method.strip_suffix" class="fn">strip_suffix</a>&lt;P&gt;(&amp;self, suffix: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;P</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;<div class="where">where
1243 P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/trait.SlicePattern.html" title="trait core::slice::SlicePattern">SlicePattern</a>&lt;Item = T&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
1244 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section></summary><div class="docblock"><p>Returns a subslice with the suffix removed.</p>
1245 <p>If the slice ends with <code>suffix</code>, returns the subslice before the suffix, wrapped in <code>Some</code>.
1246 If <code>suffix</code> is empty, simply returns the original slice. If <code>suffix</code> is equal to the
1247 original slice, returns an empty slice.</p>
1248 <p>If the slice does not end with <code>suffix</code>, returns <code>None</code>.</p>
1249 <h5 id="examples-75"><a class="doc-anchor" href="#examples-75">§</a>Examples</h5>
1250 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
1251 <span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>][..]));
1252 <span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">40</span>, <span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[<span class="number">10</span>][..]));
1253 <span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>]), <span class="prelude-val">Some</span>(<span class="kw-2">&amp;</span>[][..]));
1254 <span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">50</span>]), <span class="prelude-val">None</span>);
1255 <span class="macro">assert_eq!</span>(v.strip_suffix(<span class="kw-2">&amp;</span>[<span class="number">50</span>, <span class="number">30</span>]), <span class="prelude-val">None</span>);</code></pre></div>
1256 </div></details><details class="toggle method-toggle" open><summary><section id="method.binary_search" 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/nightly/src/core/slice/mod.rs.html#2761-2763">Source</a></span><h4 class="code-header">pub fn <a href="#method.binary_search" class="fn">binary_search</a>(&amp;self, x: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
1257 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Binary searches this slice for a given element.
1258 If the slice is not sorted, the returned result is unspecified and
1259 meaningless.</p>
1260 <p>If the value is found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="variant core::result::Result::Ok"><code>Result::Ok</code></a> is returned, containing the
1261 index of the matching element. If there are multiple matches, then any
1262 one of the matches could be returned. The index is chosen
1263 deterministically, but is subject to change in future versions of Rust.
1264 If the value is not found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="variant core::result::Result::Err"><code>Result::Err</code></a> is returned, containing
1265 the index where a matching element could be inserted while maintaining
1266 sorted order.</p>
1267 <p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by" title="method slice::binary_search_by"><code>binary_search_by</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key" title="method slice::binary_search_by_key"><code>binary_search_by_key</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>.</p>
1268 <h5 id="examples-76"><a class="doc-anchor" href="#examples-76">§</a>Examples</h5>
1269 <p>Looks up a series of four elements. The first is found, with a
1270 uniquely determined position; the second and third are not
1271 found; the fourth could match any position in <code>[1, 4]</code>.</p>
1272
1273 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
1274
1275 <span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">13</span>), <span class="prelude-val">Ok</span>(<span class="number">9</span>));
1276 <span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">4</span>), <span class="prelude-val">Err</span>(<span class="number">7</span>));
1277 <span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">100</span>), <span class="prelude-val">Err</span>(<span class="number">13</span>));
1278 <span class="kw">let </span>r = s.binary_search(<span class="kw-2">&amp;</span><span class="number">1</span>);
1279 <span class="macro">assert!</span>(<span class="kw">match </span>r { <span class="prelude-val">Ok</span>(<span class="number">1</span>..=<span class="number">4</span>) =&gt; <span class="bool-val">true</span>, <span class="kw">_ </span>=&gt; <span class="bool-val">false</span>, });</code></pre></div>
1280 <p>If you want to find that whole <em>range</em> of matching items, rather than
1281 an arbitrary matching one, that can be done using <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>:</p>
1282
1283 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
1284
1285 <span class="kw">let </span>low = s.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">1</span>);
1286 <span class="macro">assert_eq!</span>(low, <span class="number">1</span>);
1287 <span class="kw">let </span>high = s.partition_point(|x| x &lt;= <span class="kw-2">&amp;</span><span class="number">1</span>);
1288 <span class="macro">assert_eq!</span>(high, <span class="number">5</span>);
1289 <span class="kw">let </span>r = s.binary_search(<span class="kw-2">&amp;</span><span class="number">1</span>);
1290 <span class="macro">assert!</span>((low..high).contains(<span class="kw-2">&amp;</span>r.unwrap()));
1291
1292 <span class="macro">assert!</span>(s[..low].iter().all(|<span class="kw-2">&amp;</span>x| x &lt; <span class="number">1</span>));
1293 <span class="macro">assert!</span>(s[low..high].iter().all(|<span class="kw-2">&amp;</span>x| x == <span class="number">1</span>));
1294 <span class="macro">assert!</span>(s[high..].iter().all(|<span class="kw-2">&amp;</span>x| x &gt; <span class="number">1</span>));
1295
1296 <span class="comment">// For something not found, the "range" of equal items is empty
1297 </span><span class="macro">assert_eq!</span>(s.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">11</span>), <span class="number">9</span>);
1298 <span class="macro">assert_eq!</span>(s.partition_point(|x| x &lt;= <span class="kw-2">&amp;</span><span class="number">11</span>), <span class="number">9</span>);
1299 <span class="macro">assert_eq!</span>(s.binary_search(<span class="kw-2">&amp;</span><span class="number">11</span>), <span class="prelude-val">Err</span>(<span class="number">9</span>));</code></pre></div>
1300 <p>If you want to insert an item to a sorted vector, while maintaining
1301 sort order, consider using <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>:</p>
1302
1303 <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="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
1304 <span class="kw">let </span>num = <span class="number">42</span>;
1305 <span class="kw">let </span>idx = s.partition_point(|<span class="kw-2">&amp;</span>x| x &lt;= num);
1306 <span class="comment">// If `num` is unique, `s.partition_point(|&amp;x| x &lt; num)` (with `&lt;`) is equivalent to
1307 // `s.binary_search(&amp;num).unwrap_or_else(|x| x)`, but using `&lt;=` will allow `insert`
1308 // to shift less elements.
1309 </span>s.insert(idx, num);
1310 <span class="macro">assert_eq!</span>(s, [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">42</span>, <span class="number">55</span>]);</code></pre></div>
1311 </div></details><details class="toggle method-toggle" open><summary><section id="method.binary_search_by" 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/nightly/src/core/slice/mod.rs.html#2812-2814">Source</a></span><h4 class="code-header">pub fn <a href="#method.binary_search_by" class="fn">binary_search_by</a>&lt;'a, F&gt;(&amp;'a self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
1312 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class="docblock"><p>Binary searches this slice with a comparator function.</p>
1313 <p>The comparator function should return an order code that indicates
1314 whether its argument is <code>Less</code>, <code>Equal</code> or <code>Greater</code> the desired
1315 target.
1316 If the slice is not sorted or if the comparator function does not
1317 implement an order consistent with the sort order of the underlying
1318 slice, the returned result is unspecified and meaningless.</p>
1319 <p>If the value is found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="variant core::result::Result::Ok"><code>Result::Ok</code></a> is returned, containing the
1320 index of the matching element. If there are multiple matches, then any
1321 one of the matches could be returned. The index is chosen
1322 deterministically, but is subject to change in future versions of Rust.
1323 If the value is not found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="variant core::result::Result::Err"><code>Result::Err</code></a> is returned, containing
1324 the index where a matching element could be inserted while maintaining
1325 sorted order.</p>
1326 <p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key" title="method slice::binary_search_by_key"><code>binary_search_by_key</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>.</p>
1327 <h5 id="examples-77"><a class="doc-anchor" href="#examples-77">§</a>Examples</h5>
1328 <p>Looks up a series of four elements. The first is found, with a
1329 uniquely determined position; the second and third are not
1330 found; the fourth could match any position in <code>[1, 4]</code>.</p>
1331
1332 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
1333
1334 <span class="kw">let </span>seek = <span class="number">13</span>;
1335 <span class="macro">assert_eq!</span>(s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek)), <span class="prelude-val">Ok</span>(<span class="number">9</span>));
1336 <span class="kw">let </span>seek = <span class="number">4</span>;
1337 <span class="macro">assert_eq!</span>(s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek)), <span class="prelude-val">Err</span>(<span class="number">7</span>));
1338 <span class="kw">let </span>seek = <span class="number">100</span>;
1339 <span class="macro">assert_eq!</span>(s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek)), <span class="prelude-val">Err</span>(<span class="number">13</span>));
1340 <span class="kw">let </span>seek = <span class="number">1</span>;
1341 <span class="kw">let </span>r = s.binary_search_by(|probe| probe.cmp(<span class="kw-2">&amp;</span>seek));
1342 <span class="macro">assert!</span>(<span class="kw">match </span>r { <span class="prelude-val">Ok</span>(<span class="number">1</span>..=<span class="number">4</span>) =&gt; <span class="bool-val">true</span>, <span class="kw">_ </span>=&gt; <span class="bool-val">false</span>, });</code></pre></div>
1343 </div></details><details class="toggle method-toggle" open><summary><section id="method.binary_search_by_key" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.10.0">1.10.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#2913-2916">Source</a></span><h4 class="code-header">pub fn <a href="#method.binary_search_by_key" class="fn">binary_search_by_key</a>&lt;'a, B, F&gt;(
1344 &amp;'a self,
1345 b: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;B</a>,
1346 f: F,
1347 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;<div class="where">where
1348 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; B,
1349 B: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Binary searches this slice with a key extraction function.</p>
1350 <p>Assumes that the slice is sorted by the key, for instance with
1351 <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key" title="method slice::sort_by_key"><code>sort_by_key</code></a> using the same key extraction function.
1352 If the slice is not sorted by the key, the returned result is
1353 unspecified and meaningless.</p>
1354 <p>If the value is found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Ok" title="variant core::result::Result::Ok"><code>Result::Ok</code></a> is returned, containing the
1355 index of the matching element. If there are multiple matches, then any
1356 one of the matches could be returned. The index is chosen
1357 deterministically, but is subject to change in future versions of Rust.
1358 If the value is not found then <a href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html#variant.Err" title="variant core::result::Result::Err"><code>Result::Err</code></a> is returned, containing
1359 the index where a matching element could be inserted while maintaining
1360 sorted order.</p>
1361 <p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by" title="method slice::binary_search_by"><code>binary_search_by</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.partition_point" title="method slice::partition_point"><code>partition_point</code></a>.</p>
1362 <h5 id="examples-78"><a class="doc-anchor" href="#examples-78">§</a>Examples</h5>
1363 <p>Looks up a series of four elements in a slice of pairs sorted by
1364 their second elements. The first is found, with a uniquely
1365 determined position; the second and third are not found; the
1366 fourth could match any position in <code>[1, 4]</code>.</p>
1367
1368 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [(<span class="number">0</span>, <span class="number">0</span>), (<span class="number">2</span>, <span class="number">1</span>), (<span class="number">4</span>, <span class="number">1</span>), (<span class="number">5</span>, <span class="number">1</span>), (<span class="number">3</span>, <span class="number">1</span>),
1369 (<span class="number">1</span>, <span class="number">2</span>), (<span class="number">2</span>, <span class="number">3</span>), (<span class="number">4</span>, <span class="number">5</span>), (<span class="number">5</span>, <span class="number">8</span>), (<span class="number">3</span>, <span class="number">13</span>),
1370 (<span class="number">1</span>, <span class="number">21</span>), (<span class="number">2</span>, <span class="number">34</span>), (<span class="number">4</span>, <span class="number">55</span>)];
1371
1372 <span class="macro">assert_eq!</span>(s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">13</span>, |<span class="kw-2">&amp;</span>(a, b)| b), <span class="prelude-val">Ok</span>(<span class="number">9</span>));
1373 <span class="macro">assert_eq!</span>(s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">4</span>, |<span class="kw-2">&amp;</span>(a, b)| b), <span class="prelude-val">Err</span>(<span class="number">7</span>));
1374 <span class="macro">assert_eq!</span>(s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">100</span>, |<span class="kw-2">&amp;</span>(a, b)| b), <span class="prelude-val">Err</span>(<span class="number">13</span>));
1375 <span class="kw">let </span>r = s.binary_search_by_key(<span class="kw-2">&amp;</span><span class="number">1</span>, |<span class="kw-2">&amp;</span>(a, b)| b);
1376 <span class="macro">assert!</span>(<span class="kw">match </span>r { <span class="prelude-val">Ok</span>(<span class="number">1</span>..=<span class="number">4</span>) =&gt; <span class="bool-val">true</span>, <span class="kw">_ </span>=&gt; <span class="bool-val">false</span>, });</code></pre></div>
1377 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_unstable" 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/nightly/src/core/slice/mod.rs.html#2967-2969">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort_unstable" class="fn">sort_unstable</a>(&amp;mut self)<div class="where">where
1378 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice <strong>without</strong> preserving the initial order of equal elements.</p>
1379 <p>This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not
1380 allocate), and <em>O</em>(<em>n</em> * log(<em>n</em>)) worst-case.</p>
1381 <p>If the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>T</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a> the resulting
1382 order of elements in the slice is unspecified. All original elements will remain in the
1383 slice and any possible modifications via interior mutability are observed in the input. Same
1384 is true if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>T</code> panics.</p>
1385 <p>Sorting types that only implement <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd"><code>PartialOrd</code></a> such as <a href="https://doc.rust-lang.org/nightly/std/primitive.f32.html" title="primitive f32"><code>f32</code></a> and <a href="https://doc.rust-lang.org/nightly/std/primitive.f64.html" title="primitive f64"><code>f64</code></a> require
1386 additional precautions. For example, <code>f32::NAN != f32::NAN</code>, which doesn’t fulfill the
1387 reflexivity requirement of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a>. By using an alternative comparison function with
1388 <code>slice::sort_unstable_by</code> such as <a href="https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.total_cmp" title="method f32::total_cmp"><code>f32::total_cmp</code></a> or <a href="https://doc.rust-lang.org/nightly/std/primitive.f64.html#method.total_cmp" title="method f64::total_cmp"><code>f64::total_cmp</code></a> that defines a
1389 <a href="https://en.wikipedia.org/wiki/Total_order">total order</a> users can sort slices containing floating-point values. Alternatively, if all
1390 values in the slice are guaranteed to be in a subset for which <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" title="method core::cmp::PartialOrd::partial_cmp"><code>PartialOrd::partial_cmp</code></a>
1391 forms a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, it’s possible to sort the slice with <code>sort_unstable_by(|a, b| a.partial_cmp(b).unwrap())</code>.</p>
1392 <h5 id="current-implementation"><a class="doc-anchor" href="#current-implementation">§</a>Current implementation</h5>
1393 <p>The current implementation is based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">ipnsort</a> by Lukas Bergdoll and Orson Peters, which
1394 combines the fast average case of quicksort with the fast worst case of heapsort, achieving
1395 linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the
1396 expected time to sort the data is <em>O</em>(<em>n</em> * log(<em>k</em>)).</p>
1397 <p>It is typically faster than stable sorting, except in a few special cases, e.g., when the
1398 slice is partially sorted.</p>
1399 <h5 id="panics-19"><a class="doc-anchor" href="#panics-19">§</a>Panics</h5>
1400 <p>May panic if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>T</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>.</p>
1401 <h5 id="examples-79"><a class="doc-anchor" href="#examples-79">§</a>Examples</h5>
1402 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
1403
1404 v.sort_unstable();
1405 <span class="macro">assert_eq!</span>(v, [-<span class="number">5</span>, -<span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>]);</code></pre></div>
1406 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_unstable_by" 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/nightly/src/core/slice/mod.rs.html#3019-3021">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort_unstable_by" class="fn">sort_unstable_by</a>&lt;F&gt;(&amp;mut self, compare: F)<div class="where">where
1407 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice with a comparison function, <strong>without</strong> preserving the initial order of
1408 equal elements.</p>
1409 <p>This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not
1410 allocate), and <em>O</em>(<em>n</em> * log(<em>n</em>)) worst-case.</p>
1411 <p>If the comparison function <code>compare</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a> the resulting order
1412 of elements in the slice is unspecified. All original elements will remain in the slice and
1413 any possible modifications via interior mutability are observed in the input. Same is true
1414 if <code>compare</code> panics.</p>
1415 <p>For example <code>|a, b| (a - b).cmp(a)</code> is a comparison function that is neither transitive nor
1416 reflexive nor total, <code>a &lt; b &lt; c &lt; a</code> with <code>a = 1, b = 2, c = 3</code>. For more information and
1417 examples see the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> documentation.</p>
1418 <h5 id="current-implementation-1"><a class="doc-anchor" href="#current-implementation-1">§</a>Current implementation</h5>
1419 <p>The current implementation is based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">ipnsort</a> by Lukas Bergdoll and Orson Peters, which
1420 combines the fast average case of quicksort with the fast worst case of heapsort, achieving
1421 linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the
1422 expected time to sort the data is <em>O</em>(<em>n</em> * log(<em>k</em>)).</p>
1423 <p>It is typically faster than stable sorting, except in a few special cases, e.g., when the
1424 slice is partially sorted.</p>
1425 <h5 id="panics-20"><a class="doc-anchor" href="#panics-20">§</a>Panics</h5>
1426 <p>May panic if <code>compare</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>.</p>
1427 <h5 id="examples-80"><a class="doc-anchor" href="#examples-80">§</a>Examples</h5>
1428 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
1429 v.sort_unstable_by(|a, b| a.cmp(b));
1430 <span class="macro">assert_eq!</span>(v, [-<span class="number">5</span>, -<span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>]);
1431
1432 <span class="comment">// reverse sorting
1433 </span>v.sort_unstable_by(|a, b| b.cmp(a));
1434 <span class="macro">assert_eq!</span>(v, [<span class="number">4</span>, <span class="number">2</span>, <span class="number">1</span>, -<span class="number">3</span>, -<span class="number">5</span>]);</code></pre></div>
1435 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_unstable_by_key" 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/nightly/src/core/slice/mod.rs.html#3064-3067">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort_unstable_by_key" class="fn">sort_unstable_by_key</a>&lt;K, F&gt;(&amp;mut self, f: F)<div class="where">where
1436 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; K,
1437 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice with a key extraction function, <strong>without</strong> preserving the initial order of
1438 equal elements.</p>
1439 <p>This sort is unstable (i.e., may reorder equal elements), in-place (i.e., does not
1440 allocate), and <em>O</em>(<em>n</em> * log(<em>n</em>)) worst-case.</p>
1441 <p>If the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a> the resulting
1442 order of elements in the slice is unspecified. All original elements will remain in the
1443 slice and any possible modifications via interior mutability are observed in the input. Same
1444 is true if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> panics.</p>
1445 <h5 id="current-implementation-2"><a class="doc-anchor" href="#current-implementation-2">§</a>Current implementation</h5>
1446 <p>The current implementation is based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">ipnsort</a> by Lukas Bergdoll and Orson Peters, which
1447 combines the fast average case of quicksort with the fast worst case of heapsort, achieving
1448 linear time on fully sorted and reversed inputs. On inputs with k distinct elements, the
1449 expected time to sort the data is <em>O</em>(<em>n</em> * log(<em>k</em>)).</p>
1450 <p>It is typically faster than stable sorting, except in a few special cases, e.g., when the
1451 slice is partially sorted.</p>
1452 <h5 id="panics-21"><a class="doc-anchor" href="#panics-21">§</a>Panics</h5>
1453 <p>May panic if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>.</p>
1454 <h5 id="examples-81"><a class="doc-anchor" href="#examples-81">§</a>Examples</h5>
1455 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4i32</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
1456
1457 v.sort_unstable_by_key(|k| k.abs());
1458 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">2</span>, -<span class="number">3</span>, <span class="number">4</span>, -<span class="number">5</span>]);</code></pre></div>
1459 </div></details><details class="toggle method-toggle" open><summary><section id="method.select_nth_unstable" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.49.0">1.49.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3126-3128">Source</a></span><h4 class="code-header">pub fn <a href="#method.select_nth_unstable" class="fn">select_nth_unstable</a>(
1460 &amp;mut self,
1461 index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
1462 ) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1463 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Reorders the slice such that the element at <code>index</code> after the reordering is at its final
1464 sorted position.</p>
1465 <p>This reordering has the additional property that any value at position <code>i &lt; index</code> will be
1466 less than or equal to any value at a position <code>j &gt; index</code>. Additionally, this reordering is
1467 unstable (i.e. any number of equal elements may end up at position <code>index</code>), in-place (i.e.
1468 does not allocate), and runs in <em>O</em>(<em>n</em>) time. This function is also known as “kth element”
1469 in other libraries.</p>
1470 <p>It returns a triplet of the following from the reordered slice: the subslice prior to
1471 <code>index</code>, the element at <code>index</code>, and the subslice after <code>index</code>; accordingly, the values in
1472 those two subslices will respectively all be less-than-or-equal-to and
1473 greater-than-or-equal-to the value of the element at <code>index</code>.</p>
1474 <h5 id="current-implementation-3"><a class="doc-anchor" href="#current-implementation-3">§</a>Current implementation</h5>
1475 <p>The current algorithm is an introselect implementation based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">ipnsort</a> by Lukas Bergdoll
1476 and Orson Peters, which is also the basis for <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable" title="method slice::sort_unstable"><code>sort_unstable</code></a>. The fallback algorithm is
1477 Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime
1478 for all inputs.</p>
1479 <h5 id="panics-22"><a class="doc-anchor" href="#panics-22">§</a>Panics</h5>
1480 <p>Panics when <code>index &gt;= len()</code>, meaning it always panics on empty slices.</p>
1481 <p>May panic if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>T</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>.</p>
1482 <h5 id="examples-82"><a class="doc-anchor" href="#examples-82">§</a>Examples</h5>
1483 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [-<span class="number">5i32</span>, <span class="number">4</span>, <span class="number">2</span>, -<span class="number">3</span>, <span class="number">1</span>];
1484
1485 <span class="comment">// Find the items less than or equal to the median, the median, and greater than or equal to
1486 // the median.
1487 </span><span class="kw">let </span>(lesser, median, greater) = v.select_nth_unstable(<span class="number">2</span>);
1488
1489 <span class="macro">assert!</span>(lesser == [-<span class="number">3</span>, -<span class="number">5</span>] || lesser == [-<span class="number">5</span>, -<span class="number">3</span>]);
1490 <span class="macro">assert_eq!</span>(median, <span class="kw-2">&amp;mut </span><span class="number">1</span>);
1491 <span class="macro">assert!</span>(greater == [<span class="number">4</span>, <span class="number">2</span>] || greater == [<span class="number">2</span>, <span class="number">4</span>]);
1492
1493 <span class="comment">// We are only guaranteed the slice will be one of the following, based on the way we sort
1494 // about the specified index.
1495 </span><span class="macro">assert!</span>(v == [-<span class="number">3</span>, -<span class="number">5</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>] ||
1496 v == [-<span class="number">5</span>, -<span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>] ||
1497 v == [-<span class="number">3</span>, -<span class="number">5</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">2</span>] ||
1498 v == [-<span class="number">5</span>, -<span class="number">3</span>, <span class="number">1</span>, <span class="number">4</span>, <span class="number">2</span>]);</code></pre></div>
1499 </div></details><details class="toggle method-toggle" open><summary><section id="method.select_nth_unstable_by" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.49.0">1.49.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3187-3193">Source</a></span><h4 class="code-header">pub fn <a href="#method.select_nth_unstable_by" class="fn">select_nth_unstable_by</a>&lt;F&gt;(
1500 &amp;mut self,
1501 index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
1502 compare: F,
1503 ) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1504 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class="docblock"><p>Reorders the slice with a comparator function such that the element at <code>index</code> after the
1505 reordering is at its final sorted position.</p>
1506 <p>This reordering has the additional property that any value at position <code>i &lt; index</code> will be
1507 less than or equal to any value at a position <code>j &gt; index</code> using the comparator function.
1508 Additionally, this reordering is unstable (i.e. any number of equal elements may end up at
1509 position <code>index</code>), in-place (i.e. does not allocate), and runs in <em>O</em>(<em>n</em>) time. This
1510 function is also known as “kth element” in other libraries.</p>
1511 <p>It returns a triplet of the following from the slice reordered according to the provided
1512 comparator function: the subslice prior to <code>index</code>, the element at <code>index</code>, and the subslice
1513 after <code>index</code>; accordingly, the values in those two subslices will respectively all be
1514 less-than-or-equal-to and greater-than-or-equal-to the value of the element at <code>index</code>.</p>
1515 <h5 id="current-implementation-4"><a class="doc-anchor" href="#current-implementation-4">§</a>Current implementation</h5>
1516 <p>The current algorithm is an introselect implementation based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">ipnsort</a> by Lukas Bergdoll
1517 and Orson Peters, which is also the basis for <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable" title="method slice::sort_unstable"><code>sort_unstable</code></a>. The fallback algorithm is
1518 Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime
1519 for all inputs.</p>
1520 <h5 id="panics-23"><a class="doc-anchor" href="#panics-23">§</a>Panics</h5>
1521 <p>Panics when <code>index &gt;= len()</code>, meaning it always panics on empty slices.</p>
1522 <p>May panic if <code>compare</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>.</p>
1523 <h5 id="examples-83"><a class="doc-anchor" href="#examples-83">§</a>Examples</h5>
1524 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [-<span class="number">5i32</span>, <span class="number">4</span>, <span class="number">2</span>, -<span class="number">3</span>, <span class="number">1</span>];
1525
1526 <span class="comment">// Find the items less than or equal to the median, the median, and greater than or equal to
1527 // the median as if the slice were sorted in descending order.
1528 </span><span class="kw">let </span>(lesser, median, greater) = v.select_nth_unstable_by(<span class="number">2</span>, |a, b| b.cmp(a));
1529
1530 <span class="macro">assert!</span>(lesser == [<span class="number">4</span>, <span class="number">2</span>] || lesser == [<span class="number">2</span>, <span class="number">4</span>]);
1531 <span class="macro">assert_eq!</span>(median, <span class="kw-2">&amp;mut </span><span class="number">1</span>);
1532 <span class="macro">assert!</span>(greater == [-<span class="number">3</span>, -<span class="number">5</span>] || greater == [-<span class="number">5</span>, -<span class="number">3</span>]);
1533
1534 <span class="comment">// We are only guaranteed the slice will be one of the following, based on the way we sort
1535 // about the specified index.
1536 </span><span class="macro">assert!</span>(v == [<span class="number">2</span>, <span class="number">4</span>, <span class="number">1</span>, -<span class="number">5</span>, -<span class="number">3</span>] ||
1537 v == [<span class="number">2</span>, <span class="number">4</span>, <span class="number">1</span>, -<span class="number">3</span>, -<span class="number">5</span>] ||
1538 v == [<span class="number">4</span>, <span class="number">2</span>, <span class="number">1</span>, -<span class="number">5</span>, -<span class="number">3</span>] ||
1539 v == [<span class="number">4</span>, <span class="number">2</span>, <span class="number">1</span>, -<span class="number">3</span>, -<span class="number">5</span>]);</code></pre></div>
1540 </div></details><details class="toggle method-toggle" open><summary><section id="method.select_nth_unstable_by_key" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.49.0">1.49.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3252-3259">Source</a></span><h4 class="code-header">pub fn <a href="#method.select_nth_unstable_by_key" class="fn">select_nth_unstable_by_key</a>&lt;K, F&gt;(
1541 &amp;mut self,
1542 index: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
1543 f: F,
1544 ) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1545 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; K,
1546 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Reorders the slice with a key extraction function such that the element at <code>index</code> after the
1547 reordering is at its final sorted position.</p>
1548 <p>This reordering has the additional property that any value at position <code>i &lt; index</code> will be
1549 less than or equal to any value at a position <code>j &gt; index</code> using the key extraction function.
1550 Additionally, this reordering is unstable (i.e. any number of equal elements may end up at
1551 position <code>index</code>), in-place (i.e. does not allocate), and runs in <em>O</em>(<em>n</em>) time. This
1552 function is also known as “kth element” in other libraries.</p>
1553 <p>It returns a triplet of the following from the slice reordered according to the provided key
1554 extraction function: the subslice prior to <code>index</code>, the element at <code>index</code>, and the subslice
1555 after <code>index</code>; accordingly, the values in those two subslices will respectively all be
1556 less-than-or-equal-to and greater-than-or-equal-to the value of the element at <code>index</code>.</p>
1557 <h5 id="current-implementation-5"><a class="doc-anchor" href="#current-implementation-5">§</a>Current implementation</h5>
1558 <p>The current algorithm is an introselect implementation based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">ipnsort</a> by Lukas Bergdoll
1559 and Orson Peters, which is also the basis for <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable" title="method slice::sort_unstable"><code>sort_unstable</code></a>. The fallback algorithm is
1560 Median of Medians using Tukey’s Ninther for pivot selection, which guarantees linear runtime
1561 for all inputs.</p>
1562 <h5 id="panics-24"><a class="doc-anchor" href="#panics-24">§</a>Panics</h5>
1563 <p>Panics when <code>index &gt;= len()</code>, meaning it always panics on empty slices.</p>
1564 <p>May panic if <code>K: Ord</code> does not implement a total order.</p>
1565 <h5 id="examples-84"><a class="doc-anchor" href="#examples-84">§</a>Examples</h5>
1566 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [-<span class="number">5i32</span>, <span class="number">4</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
1567
1568 <span class="comment">// Find the items less than or equal to the median, the median, and greater than or equal to
1569 // the median as if the slice were sorted according to absolute value.
1570 </span><span class="kw">let </span>(lesser, median, greater) = v.select_nth_unstable_by_key(<span class="number">2</span>, |a| a.abs());
1571
1572 <span class="macro">assert!</span>(lesser == [<span class="number">1</span>, <span class="number">2</span>] || lesser == [<span class="number">2</span>, <span class="number">1</span>]);
1573 <span class="macro">assert_eq!</span>(median, <span class="kw-2">&amp;mut </span>-<span class="number">3</span>);
1574 <span class="macro">assert!</span>(greater == [<span class="number">4</span>, -<span class="number">5</span>] || greater == [-<span class="number">5</span>, <span class="number">4</span>]);
1575
1576 <span class="comment">// We are only guaranteed the slice will be one of the following, based on the way we sort
1577 // about the specified index.
1578 </span><span class="macro">assert!</span>(v == [<span class="number">1</span>, <span class="number">2</span>, -<span class="number">3</span>, <span class="number">4</span>, -<span class="number">5</span>] ||
1579 v == [<span class="number">1</span>, <span class="number">2</span>, -<span class="number">3</span>, -<span class="number">5</span>, <span class="number">4</span>] ||
1580 v == [<span class="number">2</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">4</span>, -<span class="number">5</span>] ||
1581 v == [<span class="number">2</span>, <span class="number">1</span>, -<span class="number">3</span>, -<span class="number">5</span>, <span class="number">4</span>]);</code></pre></div>
1582 </div></details><details class="toggle method-toggle" open><summary><section id="method.partition_dedup" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3286-3288">Source</a><h4 class="code-header">pub fn <a href="#method.partition_dedup" class="fn">partition_dedup</a>(&amp;mut self) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1583 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_partition_dedup</code>)</span></div></span></summary><div class="docblock"><p>Moves all consecutive repeated elements to the end of the slice according to the
1584 <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq"><code>PartialEq</code></a> trait implementation.</p>
1585 <p>Returns two slices. The first contains no consecutive repeated elements.
1586 The second contains all the duplicates in no specified order.</p>
1587 <p>If the slice is sorted, the first returned slice contains no duplicates.</p>
1588 <h5 id="examples-85"><a class="doc-anchor" href="#examples-85">§</a>Examples</h5>
1589 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_partition_dedup)]
1590
1591 </span><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">1</span>];
1592
1593 <span class="kw">let </span>(dedup, duplicates) = slice.partition_dedup();
1594
1595 <span class="macro">assert_eq!</span>(dedup, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">1</span>]);
1596 <span class="macro">assert_eq!</span>(duplicates, [<span class="number">2</span>, <span class="number">3</span>, <span class="number">1</span>]);</code></pre></div>
1597 </div></details><details class="toggle method-toggle" open><summary><section id="method.partition_dedup_by" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3320-3322">Source</a><h4 class="code-header">pub fn <a href="#method.partition_dedup_by" class="fn">partition_dedup_by</a>&lt;F&gt;(&amp;mut self, same_bucket: F) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1598 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_partition_dedup</code>)</span></div></span></summary><div class="docblock"><p>Moves all but the first of consecutive elements to the end of the slice satisfying
1599 a given equality relation.</p>
1600 <p>Returns two slices. The first contains no consecutive repeated elements.
1601 The second contains all the duplicates in no specified order.</p>
1602 <p>The <code>same_bucket</code> function is passed references to two elements from the slice and
1603 must determine if the elements compare equal. The elements are passed in opposite order
1604 from their order in the slice, so if <code>same_bucket(a, b)</code> returns <code>true</code>, <code>a</code> is moved
1605 at the end of the slice.</p>
1606 <p>If the slice is sorted, the first returned slice contains no duplicates.</p>
1607 <h5 id="examples-86"><a class="doc-anchor" href="#examples-86">§</a>Examples</h5>
1608 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_partition_dedup)]
1609
1610 </span><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="string">"foo"</span>, <span class="string">"Foo"</span>, <span class="string">"BAZ"</span>, <span class="string">"Bar"</span>, <span class="string">"bar"</span>, <span class="string">"baz"</span>, <span class="string">"BAZ"</span>];
1611
1612 <span class="kw">let </span>(dedup, duplicates) = slice.partition_dedup_by(|a, b| a.eq_ignore_ascii_case(b));
1613
1614 <span class="macro">assert_eq!</span>(dedup, [<span class="string">"foo"</span>, <span class="string">"BAZ"</span>, <span class="string">"Bar"</span>, <span class="string">"baz"</span>]);
1615 <span class="macro">assert_eq!</span>(duplicates, [<span class="string">"bar"</span>, <span class="string">"Foo"</span>, <span class="string">"BAZ"</span>]);</code></pre></div>
1616 </div></details><details class="toggle method-toggle" open><summary><section id="method.partition_dedup_by_key" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3446-3449">Source</a><h4 class="code-header">pub fn <a href="#method.partition_dedup_by_key" class="fn">partition_dedup_by_key</a>&lt;K, F&gt;(&amp;mut self, key: F) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1617 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>) -&gt; K,
1618 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_partition_dedup</code>)</span></div></span></summary><div class="docblock"><p>Moves all but the first of consecutive elements to the end of the slice that resolve
1619 to the same key.</p>
1620 <p>Returns two slices. The first contains no consecutive repeated elements.
1621 The second contains all the duplicates in no specified order.</p>
1622 <p>If the slice is sorted, the first returned slice contains no duplicates.</p>
1623 <h5 id="examples-87"><a class="doc-anchor" href="#examples-87">§</a>Examples</h5>
1624 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_partition_dedup)]
1625
1626 </span><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">10</span>, <span class="number">20</span>, <span class="number">21</span>, <span class="number">30</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">11</span>, <span class="number">13</span>];
1627
1628 <span class="kw">let </span>(dedup, duplicates) = slice.partition_dedup_by_key(|i| <span class="kw-2">*</span>i / <span class="number">10</span>);
1629
1630 <span class="macro">assert_eq!</span>(dedup, [<span class="number">10</span>, <span class="number">20</span>, <span class="number">30</span>, <span class="number">20</span>, <span class="number">11</span>]);
1631 <span class="macro">assert_eq!</span>(duplicates, [<span class="number">21</span>, <span class="number">30</span>, <span class="number">13</span>]);</code></pre></div>
1632 </div></details><details class="toggle method-toggle" open><summary><section id="method.rotate_left" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.26.0">1.26.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3487">Source</a></span><h4 class="code-header">pub fn <a href="#method.rotate_left" class="fn">rotate_left</a>(&amp;mut self, mid: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Rotates the slice in-place such that the first <code>mid</code> elements of the
1633 slice move to the end while the last <code>self.len() - mid</code> elements move to
1634 the front.</p>
1635 <p>After calling <code>rotate_left</code>, the element previously at index <code>mid</code> will
1636 become the first element in the slice.</p>
1637 <h5 id="panics-25"><a class="doc-anchor" href="#panics-25">§</a>Panics</h5>
1638 <p>This function will panic if <code>mid</code> is greater than the length of the
1639 slice. Note that <code>mid == self.len()</code> does <em>not</em> panic and is a no-op
1640 rotation.</p>
1641 <h5 id="complexity"><a class="doc-anchor" href="#complexity">§</a>Complexity</h5>
1642 <p>Takes linear (in <code>self.len()</code>) time.</p>
1643 <h5 id="examples-88"><a class="doc-anchor" href="#examples-88">§</a>Examples</h5>
1644 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>a = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>];
1645 a.rotate_left(<span class="number">2</span>);
1646 <span class="macro">assert_eq!</span>(a, [<span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>, <span class="string">'a'</span>, <span class="string">'b'</span>]);</code></pre></div>
1647 <p>Rotating a subslice:</p>
1648
1649 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>a = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>];
1650 a[<span class="number">1</span>..<span class="number">5</span>].rotate_left(<span class="number">1</span>);
1651 <span class="macro">assert_eq!</span>(a, [<span class="string">'a'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'b'</span>, <span class="string">'f'</span>]);</code></pre></div>
1652 </div></details><details class="toggle method-toggle" open><summary><section id="method.rotate_right" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.26.0">1.26.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3532">Source</a></span><h4 class="code-header">pub fn <a href="#method.rotate_right" class="fn">rotate_right</a>(&amp;mut self, k: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)</h4></section></summary><div class="docblock"><p>Rotates the slice in-place such that the first <code>self.len() - k</code>
1653 elements of the slice move to the end while the last <code>k</code> elements move
1654 to the front.</p>
1655 <p>After calling <code>rotate_right</code>, the element previously at index
1656 <code>self.len() - k</code> will become the first element in the slice.</p>
1657 <h5 id="panics-26"><a class="doc-anchor" href="#panics-26">§</a>Panics</h5>
1658 <p>This function will panic if <code>k</code> is greater than the length of the
1659 slice. Note that <code>k == self.len()</code> does <em>not</em> panic and is a no-op
1660 rotation.</p>
1661 <h5 id="complexity-1"><a class="doc-anchor" href="#complexity-1">§</a>Complexity</h5>
1662 <p>Takes linear (in <code>self.len()</code>) time.</p>
1663 <h5 id="examples-89"><a class="doc-anchor" href="#examples-89">§</a>Examples</h5>
1664 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>a = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>];
1665 a.rotate_right(<span class="number">2</span>);
1666 <span class="macro">assert_eq!</span>(a, [<span class="string">'e'</span>, <span class="string">'f'</span>, <span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>]);</code></pre></div>
1667 <p>Rotating a subslice:</p>
1668
1669 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>a = [<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'e'</span>, <span class="string">'f'</span>];
1670 a[<span class="number">1</span>..<span class="number">5</span>].rotate_right(<span class="number">1</span>);
1671 <span class="macro">assert_eq!</span>(a, [<span class="string">'a'</span>, <span class="string">'e'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>, <span class="string">'f'</span>]);</code></pre></div>
1672 </div></details><details class="toggle method-toggle" open><summary><section id="method.fill" class="method"><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/nightly/src/core/slice/mod.rs.html#3555-3557">Source</a></span><h4 class="code-header">pub fn <a href="#method.fill" class="fn">fill</a>(&amp;mut self, value: T)<div class="where">where
1673 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section></summary><div class="docblock"><p>Fills <code>self</code> with elements by cloning <code>value</code>.</p>
1674 <h5 id="examples-90"><a class="doc-anchor" href="#examples-90">§</a>Examples</h5>
1675 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">10</span>];
1676 buf.fill(<span class="number">1</span>);
1677 <span class="macro">assert_eq!</span>(buf, <span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">10</span>]);</code></pre></div>
1678 </div></details><details class="toggle method-toggle" open><summary><section id="method.fill_with" 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/nightly/src/core/slice/mod.rs.html#3579-3581">Source</a></span><h4 class="code-header">pub fn <a href="#method.fill_with" class="fn">fill_with</a>&lt;F&gt;(&amp;mut self, f: F)<div class="where">where
1679 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>() -&gt; T,</div></h4></section></summary><div class="docblock"><p>Fills <code>self</code> with elements returned by calling a closure repeatedly.</p>
1680 <p>This method uses a closure to create new values. If you’d rather
1681 <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone"><code>Clone</code></a> a given value, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.fill" title="method slice::fill"><code>fill</code></a>. If you want to use the <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html" title="trait core::default::Default"><code>Default</code></a>
1682 trait to generate values, you can pass <a href="https://doc.rust-lang.org/nightly/core/default/trait.Default.html#tymethod.default" title="associated function core::default::Default::default"><code>Default::default</code></a> as the
1683 argument.</p>
1684 <h5 id="examples-91"><a class="doc-anchor" href="#examples-91">§</a>Examples</h5>
1685 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>buf = <span class="macro">vec!</span>[<span class="number">1</span>; <span class="number">10</span>];
1686 buf.fill_with(Default::default);
1687 <span class="macro">assert_eq!</span>(buf, <span class="macro">vec!</span>[<span class="number">0</span>; <span class="number">10</span>]);</code></pre></div>
1688 </div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from_slice" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.7.0">1.7.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3642-3644">Source</a></span><h4 class="code-header">pub fn <a href="#method.clone_from_slice" class="fn">clone_from_slice</a>(&amp;mut self, src: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1689 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section></summary><div class="docblock"><p>Copies the elements from <code>src</code> into <code>self</code>.</p>
1690 <p>The length of <code>src</code> must be the same as <code>self</code>.</p>
1691 <h5 id="panics-27"><a class="doc-anchor" href="#panics-27">§</a>Panics</h5>
1692 <p>This function will panic if the two slices have different lengths.</p>
1693 <h5 id="examples-92"><a class="doc-anchor" href="#examples-92">§</a>Examples</h5>
1694 <p>Cloning two elements from a slice into another:</p>
1695
1696 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>src = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>];
1697 <span class="kw">let </span><span class="kw-2">mut </span>dst = [<span class="number">0</span>, <span class="number">0</span>];
1698
1699 <span class="comment">// Because the slices have to be the same length,
1700 // we slice the source slice from four elements
1701 // to two. It will panic if we don't do this.
1702 </span>dst.clone_from_slice(<span class="kw-2">&amp;</span>src[<span class="number">2</span>..]);
1703
1704 <span class="macro">assert_eq!</span>(src, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]);
1705 <span class="macro">assert_eq!</span>(dst, [<span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
1706 <p>Rust enforces that there can only be one mutable reference with no
1707 immutable references to a particular piece of data in a particular
1708 scope. Because of this, attempting to use <code>clone_from_slice</code> on a
1709 single slice will result in a compile failure:</p>
1710
1711 <div class="example-wrap compile_fail"><a href="#" class="tooltip" title="This example deliberately fails to compile">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
1712
1713 slice[..<span class="number">2</span>].clone_from_slice(<span class="kw-2">&amp;</span>slice[<span class="number">3</span>..]); <span class="comment">// compile fail!</span></code></pre></div>
1714 <p>To work around this, we can use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut" title="method slice::split_at_mut"><code>split_at_mut</code></a> to create two distinct
1715 sub-slices from a slice:</p>
1716
1717 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
1718
1719 {
1720 <span class="kw">let </span>(left, right) = slice.split_at_mut(<span class="number">2</span>);
1721 left.clone_from_slice(<span class="kw-2">&amp;</span>right[<span class="number">1</span>..]);
1722 }
1723
1724 <span class="macro">assert_eq!</span>(slice, [<span class="number">4</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);</code></pre></div>
1725 </div></details><details class="toggle method-toggle" open><summary><section id="method.copy_from_slice" 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/nightly/src/core/slice/mod.rs.html#3707-3709">Source</a></span><h4 class="code-header">pub fn <a href="#method.copy_from_slice" class="fn">copy_from_slice</a>(&amp;mut self, src: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1726 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</div></h4></section></summary><div class="docblock"><p>Copies all elements from <code>src</code> into <code>self</code>, using a memcpy.</p>
1727 <p>The length of <code>src</code> must be the same as <code>self</code>.</p>
1728 <p>If <code>T</code> does not implement <code>Copy</code>, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.clone_from_slice" title="method slice::clone_from_slice"><code>clone_from_slice</code></a>.</p>
1729 <h5 id="panics-28"><a class="doc-anchor" href="#panics-28">§</a>Panics</h5>
1730 <p>This function will panic if the two slices have different lengths.</p>
1731 <h5 id="examples-93"><a class="doc-anchor" href="#examples-93">§</a>Examples</h5>
1732 <p>Copying two elements from a slice into another:</p>
1733
1734 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>src = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>];
1735 <span class="kw">let </span><span class="kw-2">mut </span>dst = [<span class="number">0</span>, <span class="number">0</span>];
1736
1737 <span class="comment">// Because the slices have to be the same length,
1738 // we slice the source slice from four elements
1739 // to two. It will panic if we don't do this.
1740 </span>dst.copy_from_slice(<span class="kw-2">&amp;</span>src[<span class="number">2</span>..]);
1741
1742 <span class="macro">assert_eq!</span>(src, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]);
1743 <span class="macro">assert_eq!</span>(dst, [<span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
1744 <p>Rust enforces that there can only be one mutable reference with no
1745 immutable references to a particular piece of data in a particular
1746 scope. Because of this, attempting to use <code>copy_from_slice</code> on a
1747 single slice will result in a compile failure:</p>
1748
1749 <div class="example-wrap compile_fail"><a href="#" class="tooltip" title="This example deliberately fails to compile">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
1750
1751 slice[..<span class="number">2</span>].copy_from_slice(<span class="kw-2">&amp;</span>slice[<span class="number">3</span>..]); <span class="comment">// compile fail!</span></code></pre></div>
1752 <p>To work around this, we can use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut" title="method slice::split_at_mut"><code>split_at_mut</code></a> to create two distinct
1753 sub-slices from a slice:</p>
1754
1755 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
1756
1757 {
1758 <span class="kw">let </span>(left, right) = slice.split_at_mut(<span class="number">2</span>);
1759 left.copy_from_slice(<span class="kw-2">&amp;</span>right[<span class="number">1</span>..]);
1760 }
1761
1762 <span class="macro">assert_eq!</span>(slice, [<span class="number">4</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>]);</code></pre></div>
1763 </div></details><details class="toggle method-toggle" open><summary><section id="method.copy_within" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.37.0">1.37.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3763-3765">Source</a></span><h4 class="code-header">pub fn <a href="#method.copy_within" class="fn">copy_within</a>&lt;R&gt;(&amp;mut self, src: R, dest: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>)<div class="where">where
1764 R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/range/trait.RangeBounds.html" title="trait core::ops::range::RangeBounds">RangeBounds</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,
1765 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</div></h4></section></summary><div class="docblock"><p>Copies elements from one part of the slice to another part of itself,
1766 using a memmove.</p>
1767 <p><code>src</code> is the range within <code>self</code> to copy from. <code>dest</code> is the starting
1768 index of the range within <code>self</code> to copy to, which will have the same
1769 length as <code>src</code>. The two ranges may overlap. The ends of the two ranges
1770 must be less than or equal to <code>self.len()</code>.</p>
1771 <h5 id="panics-29"><a class="doc-anchor" href="#panics-29">§</a>Panics</h5>
1772 <p>This function will panic if either range exceeds the end of the slice,
1773 or if the end of <code>src</code> is before the start.</p>
1774 <h5 id="examples-94"><a class="doc-anchor" href="#examples-94">§</a>Examples</h5>
1775 <p>Copying four bytes within a slice:</p>
1776
1777 <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="kw-2">*</span><span class="string">b"Hello, World!"</span>;
1778
1779 bytes.copy_within(<span class="number">1</span>..<span class="number">5</span>, <span class="number">8</span>);
1780
1781 <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>bytes, <span class="string">b"Hello, Wello!"</span>);</code></pre></div>
1782 </div></details><details class="toggle method-toggle" open><summary><section id="method.swap_with_slice" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.27.0">1.27.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#3830">Source</a></span><h4 class="code-header">pub fn <a href="#method.swap_with_slice" class="fn">swap_with_slice</a>(&amp;mut self, other: &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Swaps all elements in <code>self</code> with those in <code>other</code>.</p>
1783 <p>The length of <code>other</code> must be the same as <code>self</code>.</p>
1784 <h5 id="panics-30"><a class="doc-anchor" href="#panics-30">§</a>Panics</h5>
1785 <p>This function will panic if the two slices have different lengths.</p>
1786 <h5 id="example"><a class="doc-anchor" href="#example">§</a>Example</h5>
1787 <p>Swapping two elements across slices:</p>
1788
1789 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice1 = [<span class="number">0</span>, <span class="number">0</span>];
1790 <span class="kw">let </span><span class="kw-2">mut </span>slice2 = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>];
1791
1792 slice1.swap_with_slice(<span class="kw-2">&amp;mut </span>slice2[<span class="number">2</span>..]);
1793
1794 <span class="macro">assert_eq!</span>(slice1, [<span class="number">3</span>, <span class="number">4</span>]);
1795 <span class="macro">assert_eq!</span>(slice2, [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">0</span>]);</code></pre></div>
1796 <p>Rust enforces that there can only be one mutable reference to a
1797 particular piece of data in a particular scope. Because of this,
1798 attempting to use <code>swap_with_slice</code> on a single slice will result in
1799 a compile failure:</p>
1800
1801 <div class="example-wrap compile_fail"><a href="#" class="tooltip" title="This example deliberately fails to compile">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
1802 slice[..<span class="number">2</span>].swap_with_slice(<span class="kw-2">&amp;mut </span>slice[<span class="number">3</span>..]); <span class="comment">// compile fail!</span></code></pre></div>
1803 <p>To work around this, we can use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split_at_mut" title="method slice::split_at_mut"><code>split_at_mut</code></a> to create two distinct
1804 mutable sub-slices from a slice:</p>
1805
1806 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>slice = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>];
1807
1808 {
1809 <span class="kw">let </span>(left, right) = slice.split_at_mut(<span class="number">2</span>);
1810 left.swap_with_slice(<span class="kw-2">&amp;mut </span>right[<span class="number">1</span>..]);
1811 }
1812
1813 <span class="macro">assert_eq!</span>(slice, [<span class="number">4</span>, <span class="number">5</span>, <span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>]);</code></pre></div>
1814 </div></details><details class="toggle method-toggle" open><summary><section id="method.align_to" 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/nightly/src/core/slice/mod.rs.html#3907">Source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.align_to" class="fn">align_to</a>&lt;U&gt;(&amp;self) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[U]</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Transmutes the slice to a slice of another type, ensuring alignment of the types is
1815 maintained.</p>
1816 <p>This method splits the slice into three distinct slices: prefix, correctly aligned middle
1817 slice of a new type, and the suffix slice. The middle part will be as big as possible under
1818 the given alignment constraint and element size.</p>
1819 <p>This method has no purpose when either input element <code>T</code> or output element <code>U</code> are
1820 zero-sized and will return the original slice without splitting anything.</p>
1821 <h5 id="safety-8"><a class="doc-anchor" href="#safety-8">§</a>Safety</h5>
1822 <p>This method is essentially a <code>transmute</code> with respect to the elements in the returned
1823 middle slice, so all the usual caveats pertaining to <code>transmute::&lt;T, U&gt;</code> also apply here.</p>
1824 <h5 id="examples-95"><a class="doc-anchor" href="#examples-95">§</a>Examples</h5>
1825 <p>Basic usage:</p>
1826
1827 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">unsafe </span>{
1828 <span class="kw">let </span>bytes: [u8; <span class="number">7</span>] = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>];
1829 <span class="kw">let </span>(prefix, shorts, suffix) = bytes.align_to::&lt;u16&gt;();
1830 <span class="comment">// less_efficient_algorithm_for_bytes(prefix);
1831 // more_efficient_algorithm_for_aligned_shorts(shorts);
1832 // less_efficient_algorithm_for_bytes(suffix);
1833 </span>}</code></pre></div>
1834 </div></details><details class="toggle method-toggle" open><summary><section id="method.align_to_mut" 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/nightly/src/core/slice/mod.rs.html#3972">Source</a></span><h4 class="code-header">pub unsafe fn <a href="#method.align_to_mut" class="fn">align_to_mut</a>&lt;U&gt;(&amp;mut self) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[U]</a>, &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)</h4></section></summary><div class="docblock"><p>Transmutes the mutable slice to a mutable slice of another type, ensuring alignment of the
1835 types is maintained.</p>
1836 <p>This method splits the slice into three distinct slices: prefix, correctly aligned middle
1837 slice of a new type, and the suffix slice. The middle part will be as big as possible under
1838 the given alignment constraint and element size.</p>
1839 <p>This method has no purpose when either input element <code>T</code> or output element <code>U</code> are
1840 zero-sized and will return the original slice without splitting anything.</p>
1841 <h5 id="safety-9"><a class="doc-anchor" href="#safety-9">§</a>Safety</h5>
1842 <p>This method is essentially a <code>transmute</code> with respect to the elements in the returned
1843 middle slice, so all the usual caveats pertaining to <code>transmute::&lt;T, U&gt;</code> also apply here.</p>
1844 <h5 id="examples-96"><a class="doc-anchor" href="#examples-96">§</a>Examples</h5>
1845 <p>Basic usage:</p>
1846
1847 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">unsafe </span>{
1848 <span class="kw">let </span><span class="kw-2">mut </span>bytes: [u8; <span class="number">7</span>] = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>];
1849 <span class="kw">let </span>(prefix, shorts, suffix) = bytes.align_to_mut::&lt;u16&gt;();
1850 <span class="comment">// less_efficient_algorithm_for_bytes(prefix);
1851 // more_efficient_algorithm_for_aligned_shorts(shorts);
1852 // less_efficient_algorithm_for_bytes(suffix);
1853 </span>}</code></pre></div>
1854 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_simd" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4063-4067">Source</a><h4 class="code-header">pub fn <a href="#method.as_simd" class="fn">as_simd</a>&lt;const LANES: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(&amp;self) -&gt; (&amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;[<a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html" title="struct core::core_simd::vector::Simd">Simd</a>&lt;T, LANES&gt;], &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1855 <a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html" title="struct core::core_simd::vector::Simd">Simd</a>&lt;T, LANES&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; LANES]</a>&gt;,
1856 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html" title="trait core::core_simd::vector::SimdElement">SimdElement</a>,
1857 <a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/lane_count/struct.LaneCount.html" title="struct core::core_simd::lane_count::LaneCount">LaneCount</a>&lt;LANES&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/core_simd/lane_count/trait.SupportedLaneCount.html" title="trait core::core_simd::lane_count::SupportedLaneCount">SupportedLaneCount</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>portable_simd</code>)</span></div></span></summary><div class="docblock"><p>Splits a slice into a prefix, a middle of aligned SIMD types, and a suffix.</p>
1858 <p>This is a safe wrapper around <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to" title="method slice::align_to"><code>slice::align_to</code></a>, so inherits the same
1859 guarantees as that method.</p>
1860 <h5 id="panics-31"><a class="doc-anchor" href="#panics-31">§</a>Panics</h5>
1861 <p>This will panic if the size of the SIMD type is different from
1862 <code>LANES</code> times that of the scalar.</p>
1863 <p>At the time of writing, the trait restrictions on <code>Simd&lt;T, LANES&gt;</code> keeps
1864 that from ever happening, as only power-of-two numbers of lanes are
1865 supported. It’s possible that, in the future, those restrictions might
1866 be lifted in a way that would make it possible to see panics from this
1867 method for something like <code>LANES == 3</code>.</p>
1868 <h5 id="examples-97"><a class="doc-anchor" href="#examples-97">§</a>Examples</h5>
1869 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(portable_simd)]
1870 </span><span class="kw">use </span>core::simd::prelude::<span class="kw-2">*</span>;
1871
1872 <span class="kw">let </span>short = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
1873 <span class="kw">let </span>(prefix, middle, suffix) = short.as_simd::&lt;<span class="number">4</span>&gt;();
1874 <span class="macro">assert_eq!</span>(middle, []); <span class="comment">// Not enough elements for anything in the middle
1875
1876 // They might be split in any possible way between prefix and suffix
1877 </span><span class="kw">let </span>it = prefix.iter().chain(suffix).copied();
1878 <span class="macro">assert_eq!</span>(it.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;(), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>]);
1879
1880 <span class="kw">fn </span>basic_simd_sum(x: <span class="kw-2">&amp;</span>[f32]) -&gt; f32 {
1881 <span class="kw">use </span>std::ops::Add;
1882 <span class="kw">let </span>(prefix, middle, suffix) = x.as_simd();
1883 <span class="kw">let </span>sums = f32x4::from_array([
1884 prefix.iter().copied().sum(),
1885 <span class="number">0.0</span>,
1886 <span class="number">0.0</span>,
1887 suffix.iter().copied().sum(),
1888 ]);
1889 <span class="kw">let </span>sums = middle.iter().copied().fold(sums, f32x4::add);
1890 sums.reduce_sum()
1891 }
1892
1893 <span class="kw">let </span>numbers: Vec&lt;f32&gt; = (<span class="number">1</span>..<span class="number">101</span>).map(|x| x <span class="kw">as _</span>).collect();
1894 <span class="macro">assert_eq!</span>(basic_simd_sum(<span class="kw-2">&amp;</span>numbers[<span class="number">1</span>..<span class="number">99</span>]), <span class="number">4949.0</span>);</code></pre></div>
1895 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_simd_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4099-4103">Source</a><h4 class="code-header">pub fn <a href="#method.as_simd_mut" class="fn">as_simd_mut</a>&lt;const LANES: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
1896 &amp;mut self,
1897 ) -&gt; (&amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, &amp;mut [<a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html" title="struct core::core_simd::vector::Simd">Simd</a>&lt;T, LANES&gt;], &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>)<div class="where">where
1898 <a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/struct.Simd.html" title="struct core::core_simd::vector::Simd">Simd</a>&lt;T, LANES&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[T; LANES]</a>&gt;,
1899 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/core_simd/vector/trait.SimdElement.html" title="trait core::core_simd::vector::SimdElement">SimdElement</a>,
1900 <a class="struct" href="https://doc.rust-lang.org/nightly/core/core_simd/lane_count/struct.LaneCount.html" title="struct core::core_simd::lane_count::LaneCount">LaneCount</a>&lt;LANES&gt;: <a class="trait" href="https://doc.rust-lang.org/nightly/core/core_simd/lane_count/trait.SupportedLaneCount.html" title="trait core::core_simd::lane_count::SupportedLaneCount">SupportedLaneCount</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>portable_simd</code>)</span></div></span></summary><div class="docblock"><p>Splits a mutable slice into a mutable prefix, a middle of aligned SIMD types,
1901 and a mutable suffix.</p>
1902 <p>This is a safe wrapper around <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.align_to_mut" title="method slice::align_to_mut"><code>slice::align_to_mut</code></a>, so inherits the same
1903 guarantees as that method.</p>
1904 <p>This is the mutable version of <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.as_simd" title="method slice::as_simd"><code>slice::as_simd</code></a>; see that for examples.</p>
1905 <h5 id="panics-32"><a class="doc-anchor" href="#panics-32">§</a>Panics</h5>
1906 <p>This will panic if the size of the SIMD type is different from
1907 <code>LANES</code> times that of the scalar.</p>
1908 <p>At the time of writing, the trait restrictions on <code>Simd&lt;T, LANES&gt;</code> keeps
1909 that from ever happening, as only power-of-two numbers of lanes are
1910 supported. It’s possible that, in the future, those restrictions might
1911 be lifted in a way that would make it possible to see panics from this
1912 method for something like <code>LANES == 3</code>.</p>
1913 </div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.82.0">1.82.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4138-4140">Source</a></span><h4 class="code-header">pub fn <a href="#method.is_sorted" class="fn">is_sorted</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
1914 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div class="docblock"><p>Checks if the elements of this slice are sorted.</p>
1915 <p>That is, for each element <code>a</code> and its following element <code>b</code>, <code>a &lt;= b</code> must hold. If the
1916 slice yields exactly zero or one element, <code>true</code> is returned.</p>
1917 <p>Note that if <code>Self::Item</code> is only <code>PartialOrd</code>, but not <code>Ord</code>, the above definition
1918 implies that this function returns <code>false</code> if any two consecutive items are not
1919 comparable.</p>
1920 <h5 id="examples-98"><a class="doc-anchor" href="#examples-98">§</a>Examples</h5>
1921 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>empty: [i32; <span class="number">0</span>] = [];
1922
1923 <span class="macro">assert!</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>].is_sorted());
1924 <span class="macro">assert!</span>(![<span class="number">1</span>, <span class="number">3</span>, <span class="number">2</span>, <span class="number">4</span>].is_sorted());
1925 <span class="macro">assert!</span>([<span class="number">0</span>].is_sorted());
1926 <span class="macro">assert!</span>(empty.is_sorted());
1927 <span class="macro">assert!</span>(![<span class="number">0.0</span>, <span class="number">1.0</span>, f32::NAN].is_sorted());</code></pre></div>
1928 </div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.82.0">1.82.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4181-4183">Source</a></span><h4 class="code-header">pub fn <a href="#method.is_sorted_by" class="fn">is_sorted_by</a>&lt;'a, F&gt;(&amp;'a self, compare: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
1929 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Checks if the elements of this slice are sorted using the given comparator function.</p>
1930 <p>Instead of using <code>PartialOrd::partial_cmp</code>, this function uses the given <code>compare</code>
1931 function to determine whether two elements are to be considered in sorted order.</p>
1932 <h5 id="examples-99"><a class="doc-anchor" href="#examples-99">§</a>Examples</h5>
1933 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert!</span>([<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>].is_sorted_by(|a, b| a &lt;= b));
1934 <span class="macro">assert!</span>(![<span class="number">1</span>, <span class="number">2</span>, <span class="number">2</span>, <span class="number">9</span>].is_sorted_by(|a, b| a &lt; b));
1935
1936 <span class="macro">assert!</span>([<span class="number">0</span>].is_sorted_by(|a, b| <span class="bool-val">true</span>));
1937 <span class="macro">assert!</span>([<span class="number">0</span>].is_sorted_by(|a, b| <span class="bool-val">false</span>));
1938
1939 <span class="kw">let </span>empty: [i32; <span class="number">0</span>] = [];
1940 <span class="macro">assert!</span>(empty.is_sorted_by(|a, b| <span class="bool-val">false</span>));
1941 <span class="macro">assert!</span>(empty.is_sorted_by(|a, b| <span class="bool-val">true</span>));</code></pre></div>
1942 </div></details><details class="toggle method-toggle" open><summary><section id="method.is_sorted_by_key" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.82.0">1.82.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4205-4208">Source</a></span><h4 class="code-header">pub fn <a href="#method.is_sorted_by_key" class="fn">is_sorted_by_key</a>&lt;'a, F, K&gt;(&amp;'a self, f: F) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a><div class="where">where
1943 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>) -&gt; K,
1944 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd">PartialOrd</a>,</div></h4></section></summary><div class="docblock"><p>Checks if the elements of this slice are sorted using the given key extraction function.</p>
1945 <p>Instead of comparing the slice’s elements directly, this function compares the keys of the
1946 elements, as determined by <code>f</code>. Apart from that, it’s equivalent to <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.is_sorted" title="method slice::is_sorted"><code>is_sorted</code></a>; see its
1947 documentation for more information.</p>
1948 <h5 id="examples-100"><a class="doc-anchor" href="#examples-100">§</a>Examples</h5>
1949 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert!</span>([<span class="string">"c"</span>, <span class="string">"bb"</span>, <span class="string">"aaa"</span>].is_sorted_by_key(|s| s.len()));
1950 <span class="macro">assert!</span>(![-<span class="number">2i32</span>, -<span class="number">1</span>, <span class="number">0</span>, <span class="number">3</span>].is_sorted_by_key(|n| n.abs()));</code></pre></div>
1951 </div></details><details class="toggle method-toggle" open><summary><section id="method.partition_point" 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/nightly/src/core/slice/mod.rs.html#4264-4266">Source</a></span><h4 class="code-header">pub fn <a href="#method.partition_point" class="fn">partition_point</a>&lt;P&gt;(&amp;self, pred: P) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a><div class="where">where
1952 P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,</div></h4></section></summary><div class="docblock"><p>Returns the index of the partition point according to the given predicate
1953 (the index of the first element of the second partition).</p>
1954 <p>The slice is assumed to be partitioned according to the given predicate.
1955 This means that all elements for which the predicate returns true are at the start of the slice
1956 and all elements for which the predicate returns false are at the end.
1957 For example, <code>[7, 15, 3, 5, 4, 12, 6]</code> is partitioned under the predicate <code>x % 2 != 0</code>
1958 (all odd numbers are at the start, all even at the end).</p>
1959 <p>If this slice is not partitioned, the returned result is unspecified and meaningless,
1960 as this method performs a kind of binary search.</p>
1961 <p>See also <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search" title="method slice::binary_search"><code>binary_search</code></a>, <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by" title="method slice::binary_search_by"><code>binary_search_by</code></a>, and <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.binary_search_by_key" title="method slice::binary_search_by_key"><code>binary_search_by_key</code></a>.</p>
1962 <h5 id="examples-101"><a class="doc-anchor" href="#examples-101">§</a>Examples</h5>
1963 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>v = [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">6</span>, <span class="number">7</span>];
1964 <span class="kw">let </span>i = v.partition_point(|<span class="kw-2">&amp;</span>x| x &lt; <span class="number">5</span>);
1965
1966 <span class="macro">assert_eq!</span>(i, <span class="number">4</span>);
1967 <span class="macro">assert!</span>(v[..i].iter().all(|<span class="kw-2">&amp;</span>x| x &lt; <span class="number">5</span>));
1968 <span class="macro">assert!</span>(v[i..].iter().all(|<span class="kw-2">&amp;</span>x| !(x &lt; <span class="number">5</span>)));</code></pre></div>
1969 <p>If all elements of the slice match the predicate, including if the slice
1970 is empty, then the length of the slice will be returned:</p>
1971
1972 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>a = [<span class="number">2</span>, <span class="number">4</span>, <span class="number">8</span>];
1973 <span class="macro">assert_eq!</span>(a.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">100</span>), a.len());
1974 <span class="kw">let </span>a: [i32; <span class="number">0</span>] = [];
1975 <span class="macro">assert_eq!</span>(a.partition_point(|x| x &lt; <span class="kw-2">&amp;</span><span class="number">100</span>), <span class="number">0</span>);</code></pre></div>
1976 <p>If you want to insert an item to a sorted vector, while maintaining
1977 sort order:</p>
1978
1979 <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="macro">vec!</span>[<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">55</span>];
1980 <span class="kw">let </span>num = <span class="number">42</span>;
1981 <span class="kw">let </span>idx = s.partition_point(|<span class="kw-2">&amp;</span>x| x &lt;= num);
1982 s.insert(idx, num);
1983 <span class="macro">assert_eq!</span>(s, [<span class="number">0</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">5</span>, <span class="number">8</span>, <span class="number">13</span>, <span class="number">21</span>, <span class="number">34</span>, <span class="number">42</span>, <span class="number">55</span>]);</code></pre></div>
1984 </div></details><details class="toggle method-toggle" open><summary><section id="method.take" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4322">Source</a><h4 class="code-header">pub fn <a href="#method.take" class="fn">take</a>&lt;'a, R&gt;(self: &amp;mut &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, range: R) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;<div class="where">where
1985 R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/range/trait.OneSidedRange.html" title="trait core::ops::range::OneSidedRange">OneSidedRange</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_take</code>)</span></div></span></summary><div class="docblock"><p>Removes the subslice corresponding to the given range
1986 and returns a reference to it.</p>
1987 <p>Returns <code>None</code> and does not modify the slice if the given
1988 range is out of bounds.</p>
1989 <p>Note that this method only accepts one-sided ranges such as
1990 <code>2..</code> or <code>..6</code>, but not <code>2..6</code>.</p>
1991 <h5 id="examples-102"><a class="doc-anchor" href="#examples-102">§</a>Examples</h5>
1992 <p>Taking the first three elements of a slice:</p>
1993
1994 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
1995
1996 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;</span>[<span class="kw">_</span>] = <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
1997 <span class="kw">let </span><span class="kw-2">mut </span>first_three = slice.take(..<span class="number">3</span>).unwrap();
1998
1999 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'d'</span>]);
2000 <span class="macro">assert_eq!</span>(first_three, <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]);</code></pre></div>
2001 <p>Taking the last two elements of a slice:</p>
2002
2003 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2004
2005 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;</span>[<span class="kw">_</span>] = <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2006 <span class="kw">let </span><span class="kw-2">mut </span>tail = slice.take(<span class="number">2</span>..).unwrap();
2007
2008 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>]);
2009 <span class="macro">assert_eq!</span>(tail, <span class="kw-2">&amp;</span>[<span class="string">'c'</span>, <span class="string">'d'</span>]);</code></pre></div>
2010 <p>Getting <code>None</code> when <code>range</code> is out of bounds:</p>
2011
2012 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2013
2014 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;</span>[<span class="kw">_</span>] = <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2015
2016 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, slice.take(<span class="number">5</span>..));
2017 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, slice.take(..<span class="number">5</span>));
2018 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, slice.take(..=<span class="number">4</span>));
2019 <span class="kw">let </span>expected: <span class="kw-2">&amp;</span>[char] = <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2020 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(expected), slice.take(..<span class="number">4</span>));</code></pre></div>
2021 </div></details><details class="toggle method-toggle" open><summary><section id="method.take_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4391-4394">Source</a><h4 class="code-header">pub fn <a href="#method.take_mut" class="fn">take_mut</a>&lt;'a, R&gt;(self: &amp;mut &amp;'a mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>, range: R) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'a mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;<div class="where">where
2022 R: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/range/trait.OneSidedRange.html" title="trait core::ops::range::OneSidedRange">OneSidedRange</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_take</code>)</span></div></span></summary><div class="docblock"><p>Removes the subslice corresponding to the given range
2023 and returns a mutable reference to it.</p>
2024 <p>Returns <code>None</code> and does not modify the slice if the given
2025 range is out of bounds.</p>
2026 <p>Note that this method only accepts one-sided ranges such as
2027 <code>2..</code> or <code>..6</code>, but not <code>2..6</code>.</p>
2028 <h5 id="examples-103"><a class="doc-anchor" href="#examples-103">§</a>Examples</h5>
2029 <p>Taking the first three elements of a slice:</p>
2030
2031 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2032
2033 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;mut </span>[<span class="kw">_</span>] = <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2034 <span class="kw">let </span><span class="kw-2">mut </span>first_three = slice.take_mut(..<span class="number">3</span>).unwrap();
2035
2036 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;mut </span>[<span class="string">'d'</span>]);
2037 <span class="macro">assert_eq!</span>(first_three, <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>]);</code></pre></div>
2038 <p>Taking the last two elements of a slice:</p>
2039
2040 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2041
2042 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;mut </span>[<span class="kw">_</span>] = <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2043 <span class="kw">let </span><span class="kw-2">mut </span>tail = slice.take_mut(<span class="number">2</span>..).unwrap();
2044
2045 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>]);
2046 <span class="macro">assert_eq!</span>(tail, <span class="kw-2">&amp;mut </span>[<span class="string">'c'</span>, <span class="string">'d'</span>]);</code></pre></div>
2047 <p>Getting <code>None</code> when <code>range</code> is out of bounds:</p>
2048
2049 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2050
2051 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;mut </span>[<span class="kw">_</span>] = <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2052
2053 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, slice.take_mut(<span class="number">5</span>..));
2054 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, slice.take_mut(..<span class="number">5</span>));
2055 <span class="macro">assert_eq!</span>(<span class="prelude-val">None</span>, slice.take_mut(..=<span class="number">4</span>));
2056 <span class="kw">let </span>expected: <span class="kw-2">&amp;mut </span>[<span class="kw">_</span>] = <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>, <span class="string">'d'</span>];
2057 <span class="macro">assert_eq!</span>(<span class="prelude-val">Some</span>(expected), slice.take_mut(..<span class="number">4</span>));</code></pre></div>
2058 </div></details><details class="toggle method-toggle" open><summary><section id="method.take_first" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4430">Source</a><h4 class="code-header">pub fn <a href="#method.take_first" class="fn">take_first</a>&lt;'a&gt;(self: &amp;mut &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_take</code>)</span></div></span></summary><div class="docblock"><p>Removes the first element of the slice and returns a reference
2059 to it.</p>
2060 <p>Returns <code>None</code> if the slice is empty.</p>
2061 <h5 id="examples-104"><a class="doc-anchor" href="#examples-104">§</a>Examples</h5>
2062 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2063
2064 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;</span>[<span class="kw">_</span>] = <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>];
2065 <span class="kw">let </span>first = slice.take_first().unwrap();
2066
2067 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'b'</span>, <span class="string">'c'</span>]);
2068 <span class="macro">assert_eq!</span>(first, <span class="kw-2">&amp;</span><span class="string">'a'</span>);</code></pre></div>
2069 </div></details><details class="toggle method-toggle" open><summary><section id="method.take_first_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4455">Source</a><h4 class="code-header">pub fn <a href="#method.take_first_mut" class="fn">take_first_mut</a>&lt;'a&gt;(self: &amp;mut &amp;'a mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a mut T</a>&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_take</code>)</span></div></span></summary><div class="docblock"><p>Removes the first element of the slice and returns a mutable
2070 reference to it.</p>
2071 <p>Returns <code>None</code> if the slice is empty.</p>
2072 <h5 id="examples-105"><a class="doc-anchor" href="#examples-105">§</a>Examples</h5>
2073 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2074
2075 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;mut </span>[<span class="kw">_</span>] = <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>];
2076 <span class="kw">let </span>first = slice.take_first_mut().unwrap();
2077 <span class="kw-2">*</span>first = <span class="string">'d'</span>;
2078
2079 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'b'</span>, <span class="string">'c'</span>]);
2080 <span class="macro">assert_eq!</span>(first, <span class="kw-2">&amp;</span><span class="string">'d'</span>);</code></pre></div>
2081 </div></details><details class="toggle method-toggle" open><summary><section id="method.take_last" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4479">Source</a><h4 class="code-header">pub fn <a href="#method.take_last" class="fn">take_last</a>&lt;'a&gt;(self: &amp;mut &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a T</a>&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_take</code>)</span></div></span></summary><div class="docblock"><p>Removes the last element of the slice and returns a reference
2082 to it.</p>
2083 <p>Returns <code>None</code> if the slice is empty.</p>
2084 <h5 id="examples-106"><a class="doc-anchor" href="#examples-106">§</a>Examples</h5>
2085 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2086
2087 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;</span>[<span class="kw">_</span>] = <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>];
2088 <span class="kw">let </span>last = slice.take_last().unwrap();
2089
2090 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>]);
2091 <span class="macro">assert_eq!</span>(last, <span class="kw-2">&amp;</span><span class="string">'c'</span>);</code></pre></div>
2092 </div></details><details class="toggle method-toggle" open><summary><section id="method.take_last_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4504">Source</a><h4 class="code-header">pub fn <a href="#method.take_last_mut" class="fn">take_last_mut</a>&lt;'a&gt;(self: &amp;mut &amp;'a mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a mut T</a>&gt;</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>slice_take</code>)</span></div></span></summary><div class="docblock"><p>Removes the last element of the slice and returns a mutable
2093 reference to it.</p>
2094 <p>Returns <code>None</code> if the slice is empty.</p>
2095 <h5 id="examples-107"><a class="doc-anchor" href="#examples-107">§</a>Examples</h5>
2096 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(slice_take)]
2097
2098 </span><span class="kw">let </span><span class="kw-2">mut </span>slice: <span class="kw-2">&amp;mut </span>[<span class="kw">_</span>] = <span class="kw-2">&amp;mut </span>[<span class="string">'a'</span>, <span class="string">'b'</span>, <span class="string">'c'</span>];
2099 <span class="kw">let </span>last = slice.take_last_mut().unwrap();
2100 <span class="kw-2">*</span>last = <span class="string">'d'</span>;
2101
2102 <span class="macro">assert_eq!</span>(slice, <span class="kw-2">&amp;</span>[<span class="string">'a'</span>, <span class="string">'b'</span>]);
2103 <span class="macro">assert_eq!</span>(last, <span class="kw-2">&amp;</span><span class="string">'d'</span>);</code></pre></div>
2104 </div></details><details class="toggle method-toggle" open><summary><section id="method.get_many_unchecked_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4560-4565">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.get_many_unchecked_mut" class="fn">get_many_unchecked_mut</a>&lt;I, const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
2105 &amp;mut self,
2106 indices: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[I; N]</a>,
2107 ) -&gt; [&amp;mut &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>]<div class="where">where
2108 I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/trait.GetManyMutIndex.html" title="trait core::slice::GetManyMutIndex">GetManyMutIndex</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>get_many_mut</code>)</span></div></span></summary><div class="docblock"><p>Returns mutable references to many indices at once, without doing any checks.</p>
2109 <p>An index can be either a <code>usize</code>, a <a href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range"><code>Range</code></a> or a <a href="https://doc.rust-lang.org/nightly/core/ops/range/struct.RangeInclusive.html" title="struct core::ops::range::RangeInclusive"><code>RangeInclusive</code></a>. Note
2110 that this method takes an array, so all indices must be of the same type.
2111 If passed an array of <code>usize</code>s this method gives back an array of mutable references
2112 to single elements, while if passed an array of ranges it gives back an array of
2113 mutable references to slices.</p>
2114 <p>For a safe alternative see <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.get_many_mut" title="method slice::get_many_mut"><code>get_many_mut</code></a>.</p>
2115 <h5 id="safety-10"><a class="doc-anchor" href="#safety-10">§</a>Safety</h5>
2116 <p>Calling this method with overlapping or out-of-bounds indices is <em><a href="https://doc.rust-lang.org/reference/behavior-considered-undefined.html">undefined behavior</a></em>
2117 even if the resulting references are not used.</p>
2118 <h5 id="examples-108"><a class="doc-anchor" href="#examples-108">§</a>Examples</h5>
2119 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(get_many_mut)]
2120
2121 </span><span class="kw">let </span>x = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>];
2122
2123 <span class="kw">unsafe </span>{
2124 <span class="kw">let </span>[a, b] = x.get_many_unchecked_mut([<span class="number">0</span>, <span class="number">2</span>]);
2125 <span class="kw-2">*</span>a <span class="kw-2">*</span>= <span class="number">10</span>;
2126 <span class="kw-2">*</span>b <span class="kw-2">*</span>= <span class="number">100</span>;
2127 }
2128 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">10</span>, <span class="number">2</span>, <span class="number">400</span>]);
2129
2130 <span class="kw">unsafe </span>{
2131 <span class="kw">let </span>[a, b] = x.get_many_unchecked_mut([<span class="number">0</span>..<span class="number">1</span>, <span class="number">1</span>..<span class="number">3</span>]);
2132 a[<span class="number">0</span>] = <span class="number">8</span>;
2133 b[<span class="number">0</span>] = <span class="number">88</span>;
2134 b[<span class="number">1</span>] = <span class="number">888</span>;
2135 }
2136 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">8</span>, <span class="number">88</span>, <span class="number">888</span>]);
2137
2138 <span class="kw">unsafe </span>{
2139 <span class="kw">let </span>[a, b] = x.get_many_unchecked_mut([<span class="number">1</span>..=<span class="number">2</span>, <span class="number">0</span>..=<span class="number">0</span>]);
2140 a[<span class="number">0</span>] = <span class="number">11</span>;
2141 a[<span class="number">1</span>] = <span class="number">111</span>;
2142 b[<span class="number">0</span>] = <span class="number">1</span>;
2143 }
2144 <span class="macro">assert_eq!</span>(x, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">11</span>, <span class="number">111</span>]);</code></pre></div>
2145 </div></details><details class="toggle method-toggle" open><summary><section id="method.get_many_mut" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4629-4634">Source</a><h4 class="code-header">pub fn <a href="#method.get_many_mut" class="fn">get_many_mut</a>&lt;I, const N: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;(
2146 &amp;mut self,
2147 indices: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">[I; N]</a>,
2148 ) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;[&amp;mut &lt;I as <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html#associatedtype.Output" title="type core::slice::index::SliceIndex::Output">Output</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">N</a>], <a class="enum" href="https://doc.rust-lang.org/nightly/core/slice/enum.GetManyMutError.html" title="enum core::slice::GetManyMutError">GetManyMutError</a>&gt;<div class="where">where
2149 I: <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/trait.GetManyMutIndex.html" title="trait core::slice::GetManyMutIndex">GetManyMutIndex</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/slice/index/trait.SliceIndex.html" title="trait core::slice::index::SliceIndex">SliceIndex</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>&gt;,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>get_many_mut</code>)</span></div></span></summary><div class="docblock"><p>Returns mutable references to many indices at once.</p>
2150 <p>An index can be either a <code>usize</code>, a <a href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range"><code>Range</code></a> or a <a href="https://doc.rust-lang.org/nightly/core/ops/range/struct.RangeInclusive.html" title="struct core::ops::range::RangeInclusive"><code>RangeInclusive</code></a>. Note
2151 that this method takes an array, so all indices must be of the same type.
2152 If passed an array of <code>usize</code>s this method gives back an array of mutable references
2153 to single elements, while if passed an array of ranges it gives back an array of
2154 mutable references to slices.</p>
2155 <p>Returns an error if any index is out-of-bounds, or if there are overlapping indices.
2156 An empty range is not considered to overlap if it is located at the beginning or at
2157 the end of another range, but is considered to overlap if it is located in the middle.</p>
2158 <p>This method does a O(n^2) check to check that there are no overlapping indices, so be careful
2159 when passing many indices.</p>
2160 <h5 id="examples-109"><a class="doc-anchor" href="#examples-109">§</a>Examples</h5>
2161 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(get_many_mut)]
2162
2163 </span><span class="kw">let </span>v = <span class="kw-2">&amp;mut </span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>];
2164 <span class="kw">if let </span><span class="prelude-val">Ok</span>([a, b]) = v.get_many_mut([<span class="number">0</span>, <span class="number">2</span>]) {
2165 <span class="kw-2">*</span>a = <span class="number">413</span>;
2166 <span class="kw-2">*</span>b = <span class="number">612</span>;
2167 }
2168 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">413</span>, <span class="number">2</span>, <span class="number">612</span>]);
2169
2170 <span class="kw">if let </span><span class="prelude-val">Ok</span>([a, b]) = v.get_many_mut([<span class="number">0</span>..<span class="number">1</span>, <span class="number">1</span>..<span class="number">3</span>]) {
2171 a[<span class="number">0</span>] = <span class="number">8</span>;
2172 b[<span class="number">0</span>] = <span class="number">88</span>;
2173 b[<span class="number">1</span>] = <span class="number">888</span>;
2174 }
2175 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">8</span>, <span class="number">88</span>, <span class="number">888</span>]);
2176
2177 <span class="kw">if let </span><span class="prelude-val">Ok</span>([a, b]) = v.get_many_mut([<span class="number">1</span>..=<span class="number">2</span>, <span class="number">0</span>..=<span class="number">0</span>]) {
2178 a[<span class="number">0</span>] = <span class="number">11</span>;
2179 a[<span class="number">1</span>] = <span class="number">111</span>;
2180 b[<span class="number">0</span>] = <span class="number">1</span>;
2181 }
2182 <span class="macro">assert_eq!</span>(v, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">11</span>, <span class="number">111</span>]);</code></pre></div>
2183 </div></details><details class="toggle method-toggle" open><summary><section id="method.element_offset" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4684">Source</a><h4 class="code-header">pub fn <a href="#method.element_offset" class="fn">element_offset</a>(&amp;self, element: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;</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 index that an element reference points to.</p>
2184 <p>Returns <code>None</code> if <code>element</code> does not point to the start of an element within the slice.</p>
2185 <p>This method is useful for extending slice iterators like <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split" title="method slice::split"><code>slice::split</code></a>.</p>
2186 <p>Note that this uses pointer arithmetic and <strong>does not compare elements</strong>.
2187 To find the index of an element via comparison, use
2188 <a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position" title="method core::iter::traits::iterator::Iterator::position"><code>.iter().position()</code></a> instead.</p>
2189 <h5 id="panics-33"><a class="doc-anchor" href="#panics-33">§</a>Panics</h5>
2190 <p>Panics if <code>T</code> is zero-sized.</p>
2191 <h5 id="examples-110"><a class="doc-anchor" href="#examples-110">§</a>Examples</h5>
2192 <p>Basic usage:</p>
2193
2194 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(substr_range)]
2195
2196 </span><span class="kw">let </span>nums: <span class="kw-2">&amp;</span>[u32] = <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">7</span>, <span class="number">1</span>, <span class="number">1</span>];
2197 <span class="kw">let </span>num = <span class="kw-2">&amp;</span>nums[<span class="number">2</span>];
2198
2199 <span class="macro">assert_eq!</span>(num, <span class="kw-2">&amp;</span><span class="number">1</span>);
2200 <span class="macro">assert_eq!</span>(nums.element_offset(num), <span class="prelude-val">Some</span>(<span class="number">2</span>));</code></pre></div>
2201 <p>Returning <code>None</code> with an unaligned element:</p>
2202
2203 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(substr_range)]
2204
2205 </span><span class="kw">let </span>arr: <span class="kw-2">&amp;</span>[[u32; <span class="number">2</span>]] = <span class="kw-2">&amp;</span>[[<span class="number">0</span>, <span class="number">1</span>], [<span class="number">2</span>, <span class="number">3</span>]];
2206 <span class="kw">let </span>flat_arr: <span class="kw-2">&amp;</span>[u32] = arr.as_flattened();
2207
2208 <span class="kw">let </span>ok_elm: <span class="kw-2">&amp;</span>[u32; <span class="number">2</span>] = flat_arr[<span class="number">0</span>..<span class="number">2</span>].try_into().unwrap();
2209 <span class="kw">let </span>weird_elm: <span class="kw-2">&amp;</span>[u32; <span class="number">2</span>] = flat_arr[<span class="number">1</span>..<span class="number">3</span>].try_into().unwrap();
2210
2211 <span class="macro">assert_eq!</span>(ok_elm, <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">1</span>]);
2212 <span class="macro">assert_eq!</span>(weird_elm, <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>]);
2213
2214 <span class="macro">assert_eq!</span>(arr.element_offset(ok_elm), <span class="prelude-val">Some</span>(<span class="number">0</span>)); <span class="comment">// Points to element 0
2215 </span><span class="macro">assert_eq!</span>(arr.element_offset(weird_elm), <span class="prelude-val">None</span>); <span class="comment">// Points between element 0 and 1</span></code></pre></div>
2216 </div></details><details class="toggle method-toggle" open><summary><section id="method.subslice_range" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4738">Source</a><h4 class="code-header">pub fn <a href="#method.subslice_range" class="fn">subslice_range</a>(&amp;self, subslice: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html" title="struct core::ops::range::Range">Range</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>&gt;&gt;</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 of indices that a subslice points to.</p>
2217 <p>Returns <code>None</code> if <code>subslice</code> does not point within the slice or if it is not aligned with the
2218 elements in the slice.</p>
2219 <p>This method <strong>does not compare elements</strong>. Instead, this method finds the location in the slice that
2220 <code>subslice</code> was obtained from. To find the index of a subslice via comparison, instead use
2221 <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.windows" title="method slice::windows"><code>.windows()</code></a><a href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#method.position" title="method core::iter::traits::iterator::Iterator::position"><code>.position()</code></a>.</p>
2222 <p>This method is useful for extending slice iterators like <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.split" title="method slice::split"><code>slice::split</code></a>.</p>
2223 <p>Note that this may return a false positive (either <code>Some(0..0)</code> or <code>Some(self.len()..self.len())</code>)
2224 if <code>subslice</code> has a length of zero and points to the beginning or end of another, separate, slice.</p>
2225 <h5 id="panics-34"><a class="doc-anchor" href="#panics-34">§</a>Panics</h5>
2226 <p>Panics if <code>T</code> is zero-sized.</p>
2227 <h5 id="examples-111"><a class="doc-anchor" href="#examples-111">§</a>Examples</h5>
2228 <p>Basic usage:</p>
2229
2230 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(substr_range)]
2231
2232 </span><span class="kw">let </span>nums = <span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">5</span>, <span class="number">10</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">5</span>];
2233
2234 <span class="kw">let </span><span class="kw-2">mut </span>iter = nums
2235 .split(|t| <span class="kw-2">*</span>t == <span class="number">0</span>)
2236 .map(|n| nums.subslice_range(n).unwrap());
2237
2238 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">0</span>..<span class="number">0</span>));
2239 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">1</span>..<span class="number">3</span>));
2240 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">4</span>..<span class="number">4</span>));
2241 <span class="macro">assert_eq!</span>(iter.next(), <span class="prelude-val">Some</span>(<span class="number">5</span>..<span class="number">6</span>));</code></pre></div>
2242 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_flattened" 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/nightly/src/core/slice/mod.rs.html#4788">Source</a></span><h4 class="code-header">pub fn <a href="#method.as_flattened" class="fn">as_flattened</a>(&amp;self) -&gt; &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a></h4></section></summary><div class="docblock"><p>Takes a <code>&amp;[[T; N]]</code>, and flattens it to a <code>&amp;[T]</code>.</p>
2243 <h5 id="panics-35"><a class="doc-anchor" href="#panics-35">§</a>Panics</h5>
2244 <p>This panics if the length of the resulting slice would overflow a <code>usize</code>.</p>
2245 <p>This is only possible when flattening a slice of arrays of zero-sized
2246 types, and thus tends to be irrelevant in practice. If
2247 <code>size_of::&lt;T&gt;() &gt; 0</code>, this will never panic.</p>
2248 <h5 id="examples-112"><a class="doc-anchor" href="#examples-112">§</a>Examples</h5>
2249 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>], [<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]].as_flattened(), <span class="kw-2">&amp;</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]);
2250
2251 <span class="macro">assert_eq!</span>(
2252 [[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>], [<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>]].as_flattened(),
2253 [[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>], [<span class="number">5</span>, <span class="number">6</span>]].as_flattened(),
2254 );
2255
2256 <span class="kw">let </span>slice_of_empty_arrays: <span class="kw-2">&amp;</span>[[i32; <span class="number">0</span>]] = <span class="kw-2">&amp;</span>[[], [], [], [], []];
2257 <span class="macro">assert!</span>(slice_of_empty_arrays.as_flattened().is_empty());
2258
2259 <span class="kw">let </span>empty_slice_of_arrays: <span class="kw-2">&amp;</span>[[u32; <span class="number">10</span>]] = <span class="kw-2">&amp;</span>[];
2260 <span class="macro">assert!</span>(empty_slice_of_arrays.as_flattened().is_empty());</code></pre></div>
2261 </div></details><details class="toggle method-toggle" open><summary><section id="method.as_flattened_mut" 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/nightly/src/core/slice/mod.rs.html#4825">Source</a></span><h4 class="code-header">pub fn <a href="#method.as_flattened_mut" class="fn">as_flattened_mut</a>(&amp;mut self) -&gt; &amp;mut <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a></h4></section></summary><div class="docblock"><p>Takes a <code>&amp;mut [[T; N]]</code>, and flattens it to a <code>&amp;mut [T]</code>.</p>
2262 <h5 id="panics-36"><a class="doc-anchor" href="#panics-36">§</a>Panics</h5>
2263 <p>This panics if the length of the resulting slice would overflow a <code>usize</code>.</p>
2264 <p>This is only possible when flattening a slice of arrays of zero-sized
2265 types, and thus tends to be irrelevant in practice. If
2266 <code>size_of::&lt;T&gt;() &gt; 0</code>, this will never panic.</p>
2267 <h5 id="examples-113"><a class="doc-anchor" href="#examples-113">§</a>Examples</h5>
2268 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">fn </span>add_5_to_all(slice: <span class="kw-2">&amp;mut </span>[i32]) {
2269 <span class="kw">for </span>i <span class="kw">in </span>slice {
2270 <span class="kw-2">*</span>i += <span class="number">5</span>;
2271 }
2272 }
2273
2274 <span class="kw">let </span><span class="kw-2">mut </span>array = [[<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>], [<span class="number">4</span>, <span class="number">5</span>, <span class="number">6</span>], [<span class="number">7</span>, <span class="number">8</span>, <span class="number">9</span>]];
2275 add_5_to_all(array.as_flattened_mut());
2276 <span class="macro">assert_eq!</span>(array, [[<span class="number">6</span>, <span class="number">7</span>, <span class="number">8</span>], [<span class="number">9</span>, <span class="number">10</span>, <span class="number">11</span>], [<span class="number">12</span>, <span class="number">13</span>, <span class="number">14</span>]]);</code></pre></div>
2277 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_floats" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4862">Source</a><h4 class="code-header">pub fn <a href="#method.sort_floats" class="fn">sort_floats</a>(&amp;mut self)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>sort_floats</code>)</span></div></span></summary><div class="docblock"><p>Sorts the slice of floats.</p>
2278 <p>This sort is in-place (i.e. does not allocate), <em>O</em>(<em>n</em> * log(<em>n</em>)) worst-case, and uses
2279 the ordering defined by <a href="https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.total_cmp" title="method f32::total_cmp"><code>f32::total_cmp</code></a>.</p>
2280 <h5 id="current-implementation-6"><a class="doc-anchor" href="#current-implementation-6">§</a>Current implementation</h5>
2281 <p>This uses the same sorting algorithm as <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable_by" title="method slice::sort_unstable_by"><code>sort_unstable_by</code></a>.</p>
2282 <h5 id="examples-114"><a class="doc-anchor" href="#examples-114">§</a>Examples</h5>
2283 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(sort_floats)]
2284 </span><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">2.6</span>, -<span class="number">5e-8</span>, f32::NAN, <span class="number">8.29</span>, f32::INFINITY, -<span class="number">1.0</span>, <span class="number">0.0</span>, -f32::INFINITY, -<span class="number">0.0</span>];
2285
2286 v.sort_floats();
2287 <span class="kw">let </span>sorted = [-f32::INFINITY, -<span class="number">1.0</span>, -<span class="number">5e-8</span>, -<span class="number">0.0</span>, <span class="number">0.0</span>, <span class="number">2.6</span>, <span class="number">8.29</span>, f32::INFINITY, f32::NAN];
2288 <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>v[..<span class="number">8</span>], <span class="kw-2">&amp;</span>sorted[..<span class="number">8</span>]);
2289 <span class="macro">assert!</span>(v[<span class="number">8</span>].is_nan());</code></pre></div>
2290 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_floats-1" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/slice/mod.rs.html#4891">Source</a><h4 class="code-header">pub fn <a href="#method.sort_floats-1" class="fn">sort_floats</a>(&amp;mut self)</h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>sort_floats</code>)</span></div></span></summary><div class="docblock"><p>Sorts the slice of floats.</p>
2291 <p>This sort is in-place (i.e. does not allocate), <em>O</em>(<em>n</em> * log(<em>n</em>)) worst-case, and uses
2292 the ordering defined by <a href="https://doc.rust-lang.org/nightly/std/primitive.f64.html#method.total_cmp" title="method f64::total_cmp"><code>f64::total_cmp</code></a>.</p>
2293 <h5 id="current-implementation-7"><a class="doc-anchor" href="#current-implementation-7">§</a>Current implementation</h5>
2294 <p>This uses the same sorting algorithm as <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable_by" title="method slice::sort_unstable_by"><code>sort_unstable_by</code></a>.</p>
2295 <h5 id="examples-115"><a class="doc-anchor" href="#examples-115">§</a>Examples</h5>
2296 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(sort_floats)]
2297 </span><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">2.6</span>, -<span class="number">5e-8</span>, f64::NAN, <span class="number">8.29</span>, f64::INFINITY, -<span class="number">1.0</span>, <span class="number">0.0</span>, -f64::INFINITY, -<span class="number">0.0</span>];
2298
2299 v.sort_floats();
2300 <span class="kw">let </span>sorted = [-f64::INFINITY, -<span class="number">1.0</span>, -<span class="number">5e-8</span>, -<span class="number">0.0</span>, <span class="number">0.0</span>, <span class="number">2.6</span>, <span class="number">8.29</span>, f64::INFINITY, f64::NAN];
2301 <span class="macro">assert_eq!</span>(<span class="kw-2">&amp;</span>v[..<span class="number">8</span>], <span class="kw-2">&amp;</span>sorted[..<span class="number">8</span>]);
2302 <span class="macro">assert!</span>(v[<span class="number">8</span>].is_nan());</code></pre></div>
2303 </div></details><details class="toggle method-toggle" open><summary><section id="method.utf8_chunks" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.79.0">1.79.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/str/lossy.rs.html#44">Source</a></span><h4 class="code-header">pub fn <a href="#method.utf8_chunks" class="fn">utf8_chunks</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunks.html" title="struct core::str::lossy::Utf8Chunks">Utf8Chunks</a>&lt;'_&gt; <a href="#" class="tooltip" data-notable-ty="Utf8Chunks&lt;&#39;_&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Creates an iterator over the contiguous valid UTF-8 ranges of this
2304 slice, and the non-UTF-8 fragments in between.</p>
2305 <p>See the <a href="https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunk.html" title="struct core::str::lossy::Utf8Chunk"><code>Utf8Chunk</code></a> type for documentation of the items yielded by this iterator.</p>
2306 <h5 id="examples-116"><a class="doc-anchor" href="#examples-116">§</a>Examples</h5>
2307 <p>This function formats arbitrary but mostly-UTF-8 bytes into Rust source
2308 code in the form of a C-string literal (<code>c"..."</code>).</p>
2309
2310 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>std::fmt::Write <span class="kw">as _</span>;
2311
2312 <span class="kw">pub fn </span>cstr_literal(bytes: <span class="kw-2">&amp;</span>[u8]) -&gt; String {
2313 <span class="kw">let </span><span class="kw-2">mut </span>repr = String::new();
2314 repr.push_str(<span class="string">"c\""</span>);
2315 <span class="kw">for </span>chunk <span class="kw">in </span>bytes.utf8_chunks() {
2316 <span class="kw">for </span>ch <span class="kw">in </span>chunk.valid().chars() {
2317 <span class="comment">// Escapes \0, \t, \r, \n, \\, \', \", and uses \u{...} for non-printable characters.
2318 </span><span class="macro">write!</span>(repr, <span class="string">"{}"</span>, ch.escape_debug()).unwrap();
2319 }
2320 <span class="kw">for </span>byte <span class="kw">in </span>chunk.invalid() {
2321 <span class="macro">write!</span>(repr, <span class="string">"\\x{:02X}"</span>, byte).unwrap();
2322 }
2323 }
2324 repr.push(<span class="string">'"'</span>);
2325 repr
2326 }
2327
2328 <span class="kw">fn </span>main() {
2329 <span class="kw">let </span>lit = cstr_literal(<span class="string">b"\xferris the \xf0\x9f\xa6\x80\x07"</span>);
2330 <span class="kw">let </span>expected = <span class="macro">stringify!</span>(<span class="string">c"\xFErris the 🦀\u{7}"</span>);
2331 <span class="macro">assert_eq!</span>(lit, expected);
2332 }</code></pre></div>
2333 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort" 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/nightly/src/alloc/slice.rs.html#237-239">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort" class="fn">sort</a>(&amp;mut self)<div class="where">where
2334 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice, preserving initial order of equal elements.</p>
2335 <p>This sort is stable (i.e., does not reorder equal elements) and <em>O</em>(<em>n</em> * log(<em>n</em>))
2336 worst-case.</p>
2337 <p>If the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>T</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, the function
2338 may panic; even if the function exits normally, the resulting order of elements in the slice
2339 is unspecified. See also the note on panicking below.</p>
2340 <p>When applicable, unstable sorting is preferred because it is generally faster than stable
2341 sorting and it doesn’t allocate auxiliary memory. See
2342 <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_unstable" title="method slice::sort_unstable"><code>sort_unstable</code></a>. The exception are partially sorted slices, which
2343 may be better served with <code>slice::sort</code>.</p>
2344 <p>Sorting types that only implement <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html" title="trait core::cmp::PartialOrd"><code>PartialOrd</code></a> such as <a href="https://doc.rust-lang.org/nightly/std/primitive.f32.html" title="primitive f32"><code>f32</code></a> and <a href="https://doc.rust-lang.org/nightly/std/primitive.f64.html" title="primitive f64"><code>f64</code></a> require
2345 additional precautions. For example, <code>f32::NAN != f32::NAN</code>, which doesn’t fulfill the
2346 reflexivity requirement of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a>. By using an alternative comparison function with
2347 <code>slice::sort_by</code> such as <a href="https://doc.rust-lang.org/nightly/std/primitive.f32.html#method.total_cmp" title="method f32::total_cmp"><code>f32::total_cmp</code></a> or <a href="https://doc.rust-lang.org/nightly/std/primitive.f64.html#method.total_cmp" title="method f64::total_cmp"><code>f64::total_cmp</code></a> that defines a <a href="https://en.wikipedia.org/wiki/Total_order">total
2348 order</a> users can sort slices containing floating-point values. Alternatively, if all values
2349 in the slice are guaranteed to be in a subset for which <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialOrd.html#tymethod.partial_cmp" title="method core::cmp::PartialOrd::partial_cmp"><code>PartialOrd::partial_cmp</code></a> forms a
2350 <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, it’s possible to sort the slice with <code>sort_by(|a, b| a.partial_cmp(b).unwrap())</code>.</p>
2351 <h5 id="current-implementation-8"><a class="doc-anchor" href="#current-implementation-8">§</a>Current implementation</h5>
2352 <p>The current implementation is based on <a href="https://github.com/Voultapher/driftsort">driftsort</a> by Orson Peters and Lukas Bergdoll, which
2353 combines the fast average case of quicksort with the fast worst case and partial run
2354 detection of mergesort, achieving linear time on fully sorted and reversed inputs. On inputs
2355 with k distinct elements, the expected time to sort the data is <em>O</em>(<em>n</em> * log(<em>k</em>)).</p>
2356 <p>The auxiliary memory allocation behavior depends on the input length. Short slices are
2357 handled without allocation, medium sized slices allocate <code>self.len()</code> and beyond that it
2358 clamps at <code>self.len() / 2</code>.</p>
2359 <h5 id="panics-37"><a class="doc-anchor" href="#panics-37">§</a>Panics</h5>
2360 <p>May panic if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>T</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, or if
2361 the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> implementation itself panics.</p>
2362 <p>All safe functions on slices preserve the invariant that even if the function panics, all
2363 original elements will remain in the slice and any possible modifications via interior
2364 mutability are observed in the input. This ensures that recovery code (for instance inside
2365 of a <code>Drop</code> or following a <code>catch_unwind</code>) will still have access to all the original
2366 elements. For instance, if the slice belongs to a <code>Vec</code>, the <code>Vec::drop</code> method will be able
2367 to dispose of all contained elements.</p>
2368 <h5 id="examples-117"><a class="doc-anchor" href="#examples-117">§</a>Examples</h5>
2369 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
2370
2371 v.sort();
2372 <span class="macro">assert_eq!</span>(v, [-<span class="number">5</span>, -<span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>]);</code></pre></div>
2373 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_by" 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/nightly/src/alloc/slice.rs.html#297-299">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort_by" class="fn">sort_by</a>&lt;F&gt;(&amp;mut self, compare: F)<div class="where">where
2374 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/cmp/enum.Ordering.html" title="enum core::cmp::Ordering">Ordering</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice with a comparison function, preserving initial order of equal elements.</p>
2375 <p>This sort is stable (i.e., does not reorder equal elements) and <em>O</em>(<em>n</em> * log(<em>n</em>))
2376 worst-case.</p>
2377 <p>If the comparison function <code>compare</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, the function may
2378 panic; even if the function exits normally, the resulting order of elements in the slice is
2379 unspecified. See also the note on panicking below.</p>
2380 <p>For example <code>|a, b| (a - b).cmp(a)</code> is a comparison function that is neither transitive nor
2381 reflexive nor total, <code>a &lt; b &lt; c &lt; a</code> with <code>a = 1, b = 2, c = 3</code>. For more information and
2382 examples see the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> documentation.</p>
2383 <h5 id="current-implementation-9"><a class="doc-anchor" href="#current-implementation-9">§</a>Current implementation</h5>
2384 <p>The current implementation is based on <a href="https://github.com/Voultapher/driftsort">driftsort</a> by Orson Peters and Lukas Bergdoll, which
2385 combines the fast average case of quicksort with the fast worst case and partial run
2386 detection of mergesort, achieving linear time on fully sorted and reversed inputs. On inputs
2387 with k distinct elements, the expected time to sort the data is <em>O</em>(<em>n</em> * log(<em>k</em>)).</p>
2388 <p>The auxiliary memory allocation behavior depends on the input length. Short slices are
2389 handled without allocation, medium sized slices allocate <code>self.len()</code> and beyond that it
2390 clamps at <code>self.len() / 2</code>.</p>
2391 <h5 id="panics-38"><a class="doc-anchor" href="#panics-38">§</a>Panics</h5>
2392 <p>May panic if <code>compare</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, or if <code>compare</code> itself panics.</p>
2393 <p>All safe functions on slices preserve the invariant that even if the function panics, all
2394 original elements will remain in the slice and any possible modifications via interior
2395 mutability are observed in the input. This ensures that recovery code (for instance inside
2396 of a <code>Drop</code> or following a <code>catch_unwind</code>) will still have access to all the original
2397 elements. For instance, if the slice belongs to a <code>Vec</code>, the <code>Vec::drop</code> method will be able
2398 to dispose of all contained elements.</p>
2399 <h5 id="examples-118"><a class="doc-anchor" href="#examples-118">§</a>Examples</h5>
2400 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
2401 v.sort_by(|a, b| a.cmp(b));
2402 <span class="macro">assert_eq!</span>(v, [-<span class="number">5</span>, -<span class="number">3</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">4</span>]);
2403
2404 <span class="comment">// reverse sorting
2405 </span>v.sort_by(|a, b| b.cmp(a));
2406 <span class="macro">assert_eq!</span>(v, [<span class="number">4</span>, <span class="number">2</span>, <span class="number">1</span>, -<span class="number">3</span>, -<span class="number">5</span>]);</code></pre></div>
2407 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_by_key" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.7.0">1.7.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#351-354">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort_by_key" class="fn">sort_by_key</a>&lt;K, F&gt;(&amp;mut self, f: F)<div class="where">where
2408 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; K,
2409 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice with a key extraction function, preserving initial order of equal elements.</p>
2410 <p>This sort is stable (i.e., does not reorder equal elements) and <em>O</em>(<em>m</em> * <em>n</em> * log(<em>n</em>))
2411 worst-case, where the key function is <em>O</em>(<em>m</em>).</p>
2412 <p>If the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, the function
2413 may panic; even if the function exits normally, the resulting order of elements in the slice
2414 is unspecified. See also the note on panicking below.</p>
2415 <h5 id="current-implementation-10"><a class="doc-anchor" href="#current-implementation-10">§</a>Current implementation</h5>
2416 <p>The current implementation is based on <a href="https://github.com/Voultapher/driftsort">driftsort</a> by Orson Peters and Lukas Bergdoll, which
2417 combines the fast average case of quicksort with the fast worst case and partial run
2418 detection of mergesort, achieving linear time on fully sorted and reversed inputs. On inputs
2419 with k distinct elements, the expected time to sort the data is <em>O</em>(<em>n</em> * log(<em>k</em>)).</p>
2420 <p>The auxiliary memory allocation behavior depends on the input length. Short slices are
2421 handled without allocation, medium sized slices allocate <code>self.len()</code> and beyond that it
2422 clamps at <code>self.len() / 2</code>.</p>
2423 <h5 id="panics-39"><a class="doc-anchor" href="#panics-39">§</a>Panics</h5>
2424 <p>May panic if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, or if
2425 the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> implementation or the key-function <code>f</code> panics.</p>
2426 <p>All safe functions on slices preserve the invariant that even if the function panics, all
2427 original elements will remain in the slice and any possible modifications via interior
2428 mutability are observed in the input. This ensures that recovery code (for instance inside
2429 of a <code>Drop</code> or following a <code>catch_unwind</code>) will still have access to all the original
2430 elements. For instance, if the slice belongs to a <code>Vec</code>, the <code>Vec::drop</code> method will be able
2431 to dispose of all contained elements.</p>
2432 <h5 id="examples-119"><a class="doc-anchor" href="#examples-119">§</a>Examples</h5>
2433 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4i32</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>];
2434
2435 v.sort_by_key(|k| k.abs());
2436 <span class="macro">assert_eq!</span>(v, [<span class="number">1</span>, <span class="number">2</span>, -<span class="number">3</span>, <span class="number">4</span>, -<span class="number">5</span>]);</code></pre></div>
2437 </div></details><details class="toggle method-toggle" open><summary><section id="method.sort_by_cached_key" 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/nightly/src/alloc/slice.rs.html#415-418">Source</a></span><h4 class="code-header">pub fn <a href="#method.sort_by_cached_key" class="fn">sort_by_cached_key</a>&lt;K, F&gt;(&amp;mut self, f: F)<div class="where">where
2438 F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html" title="trait core::ops::function::FnMut">FnMut</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a>) -&gt; K,
2439 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord">Ord</a>,</div></h4></section></summary><div class="docblock"><p>Sorts the slice with a key extraction function, preserving initial order of equal elements.</p>
2440 <p>This sort is stable (i.e., does not reorder equal elements) and <em>O</em>(<em>m</em> * <em>n</em> + <em>n</em> *
2441 log(<em>n</em>)) worst-case, where the key function is <em>O</em>(<em>m</em>).</p>
2442 <p>During sorting, the key function is called at most once per element, by using temporary
2443 storage to remember the results of key evaluation. The order of calls to the key function is
2444 unspecified and may change in future versions of the standard library.</p>
2445 <p>If the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, the function
2446 may panic; even if the function exits normally, the resulting order of elements in the slice
2447 is unspecified. See also the note on panicking below.</p>
2448 <p>For simple key functions (e.g., functions that are property accesses or basic operations),
2449 <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.sort_by_key" title="method slice::sort_by_key"><code>sort_by_key</code></a> is likely to be faster.</p>
2450 <h5 id="current-implementation-11"><a class="doc-anchor" href="#current-implementation-11">§</a>Current implementation</h5>
2451 <p>The current implementation is based on <a href="https://github.com/Voultapher/sort-research-rs/tree/main/ipnsort">instruction-parallel-network sort</a> by Lukas
2452 Bergdoll, which combines the fast average case of randomized quicksort with the fast worst
2453 case of heapsort, while achieving linear time on fully sorted and reversed inputs. And
2454 <em>O</em>(<em>k</em> * log(<em>n</em>)) where <em>k</em> is the number of distinct elements in the input. It leverages
2455 superscalar out-of-order execution capabilities commonly found in CPUs, to efficiently
2456 perform the operation.</p>
2457 <p>In the worst case, the algorithm allocates temporary storage in a <code>Vec&lt;(K, usize)&gt;</code> the
2458 length of the slice.</p>
2459 <h5 id="panics-40"><a class="doc-anchor" href="#panics-40">§</a>Panics</h5>
2460 <p>May panic if the implementation of <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> for <code>K</code> does not implement a <a href="https://en.wikipedia.org/wiki/Total_order">total order</a>, or if
2461 the <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.Ord.html" title="trait core::cmp::Ord"><code>Ord</code></a> implementation panics.</p>
2462 <p>All safe functions on slices preserve the invariant that even if the function panics, all
2463 original elements will remain in the slice and any possible modifications via interior
2464 mutability are observed in the input. This ensures that recovery code (for instance inside
2465 of a <code>Drop</code> or following a <code>catch_unwind</code>) will still have access to all the original
2466 elements. For instance, if the slice belongs to a <code>Vec</code>, the <code>Vec::drop</code> method will be able
2467 to dispose of all contained elements.</p>
2468 <h5 id="examples-120"><a class="doc-anchor" href="#examples-120">§</a>Examples</h5>
2469 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span><span class="kw-2">mut </span>v = [<span class="number">4i32</span>, -<span class="number">5</span>, <span class="number">1</span>, -<span class="number">3</span>, <span class="number">2</span>, <span class="number">10</span>];
2470
2471 <span class="comment">// Strings are sorted by lexicographical order.
2472 </span>v.sort_by_cached_key(|k| k.to_string());
2473 <span class="macro">assert_eq!</span>(v, [-<span class="number">3</span>, -<span class="number">5</span>, <span class="number">1</span>, <span class="number">10</span>, <span class="number">2</span>, <span class="number">4</span>]);</code></pre></div>
2474 </div></details><details class="toggle method-toggle" open><summary><section id="method.to_vec" 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/nightly/src/alloc/slice.rs.html#475-477">Source</a></span><h4 class="code-header">pub fn <a href="#method.to_vec" class="fn">to_vec</a>(&amp;self) -&gt; <a class="struct" href="../base58/struct.Vec.html" title="struct bdk_chain::bitcoin::base58::Vec">Vec</a>&lt;T&gt;<div class="where">where
2475 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section></summary><div class="docblock"><p>Copies <code>self</code> into a new <code>Vec</code>.</p>
2476 <h5 id="examples-121"><a class="doc-anchor" href="#examples-121">§</a>Examples</h5>
2477 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">let </span>s = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
2478 <span class="kw">let </span>x = s.to_vec();
2479 <span class="comment">// Here, `s` and `x` can be modified independently.</span></code></pre></div>
2480 </div></details><details class="toggle method-toggle" open><summary><section id="method.to_vec_in" class="method"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#499-501">Source</a><h4 class="code-header">pub fn <a href="#method.to_vec_in" class="fn">to_vec_in</a>&lt;A&gt;(&amp;self, alloc: A) -&gt; <a class="struct" href="../base58/struct.Vec.html" title="struct bdk_chain::bitcoin::base58::Vec">Vec</a>&lt;T, A&gt;<div class="where">where
2481 A: <a class="trait" href="https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html" title="trait core::alloc::Allocator">Allocator</a>,
2482 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h4></section><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>allocator_api</code>)</span></div></span></summary><div class="docblock"><p>Copies <code>self</code> into a new <code>Vec</code> with an allocator.</p>
2483 <h5 id="examples-122"><a class="doc-anchor" href="#examples-122">§</a>Examples</h5>
2484 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#![feature(allocator_api)]
2485
2486 </span><span class="kw">use </span>std::alloc::System;
2487
2488 <span class="kw">let </span>s = [<span class="number">10</span>, <span class="number">40</span>, <span class="number">30</span>];
2489 <span class="kw">let </span>x = s.to_vec_in(System);
2490 <span class="comment">// Here, `s` and `x` can be modified independently.</span></code></pre></div>
2491 </div></details><details class="toggle method-toggle" open><summary><section id="method.repeat" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.40.0">1.40.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#553-555">Source</a></span><h4 class="code-header">pub fn <a href="#method.repeat" class="fn">repeat</a>(&amp;self, n: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="struct" href="../base58/struct.Vec.html" title="struct bdk_chain::bitcoin::base58::Vec">Vec</a>&lt;T&gt;<div class="where">where
2492 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a>,</div></h4></section></summary><div class="docblock"><p>Creates a vector by copying a slice <code>n</code> times.</p>
2493 <h5 id="panics-41"><a class="doc-anchor" href="#panics-41">§</a>Panics</h5>
2494 <p>This function will panic if the capacity would overflow.</p>
2495 <h5 id="examples-123"><a class="doc-anchor" href="#examples-123">§</a>Examples</h5>
2496 <p>Basic usage:</p>
2497
2498 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="number">1</span>, <span class="number">2</span>].repeat(<span class="number">3</span>), <span class="macro">vec!</span>[<span class="number">1</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">2</span>, <span class="number">1</span>, <span class="number">2</span>]);</code></pre></div>
2499 <p>A panic upon overflow:</p>
2500
2501 <div class="example-wrap should_panic"><a href="#" class="tooltip" title="This example panics">ⓘ</a><pre class="rust rust-example-rendered"><code><span class="comment">// this will panic at runtime
2502 </span><span class="string">b"0123456789abcdef"</span>.repeat(usize::MAX);</code></pre></div>
2503 </div></details><details class="toggle method-toggle" open><summary><section id="method.concat" 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/nightly/src/alloc/slice.rs.html#621-623">Source</a></span><h4 class="code-header">pub fn <a href="#method.concat" class="fn">concat</a>&lt;Item&gt;(&amp;self) -&gt; &lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html" title="trait alloc::slice::Concat">Concat</a>&lt;Item&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html#associatedtype.Output" title="type alloc::slice::Concat::Output">Output</a> <a href="#" class="tooltip" data-notable-ty="&lt;[T] as Concat&lt;Item&gt;&gt;::Output">ⓘ</a><div class="where">where
2504 <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Concat.html" title="trait alloc::slice::Concat">Concat</a>&lt;Item&gt;,
2505 Item: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h4></section></summary><div class="docblock"><p>Flattens a slice of <code>T</code> into a single value <code>Self::Output</code>.</p>
2506 <h5 id="examples-124"><a class="doc-anchor" href="#examples-124">§</a>Examples</h5>
2507 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="string">"hello"</span>, <span class="string">"world"</span>].concat(), <span class="string">"helloworld"</span>);
2508 <span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].concat(), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
2509 </div></details><details class="toggle method-toggle" open><summary><section id="method.join" class="method"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/alloc/slice.rs.html#640-642">Source</a></span><h4 class="code-header">pub fn <a href="#method.join" class="fn">join</a>&lt;Separator&gt;(
2510 &amp;self,
2511 sep: Separator,
2512 ) -&gt; &lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output" title="type alloc::slice::Join::Output">Output</a> <a href="#" class="tooltip" data-notable-ty="&lt;[T] as Join&lt;Separator&gt;&gt;::Output">ⓘ</a><div class="where">where
2513 <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;,</div></h4></section></summary><div class="docblock"><p>Flattens a slice of <code>T</code> into a single value <code>Self::Output</code>, placing a
2514 given separator between each.</p>
2515 <h5 id="examples-125"><a class="doc-anchor" href="#examples-125">§</a>Examples</h5>
2516 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="string">"hello"</span>, <span class="string">"world"</span>].join(<span class="string">" "</span>), <span class="string">"hello world"</span>);
2517 <span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].join(<span class="kw-2">&amp;</span><span class="number">0</span>), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]);
2518 <span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].join(<span class="kw-2">&amp;</span>[<span class="number">0</span>, <span class="number">0</span>][..]), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
2519 </div></details><details class="toggle method-toggle" open><summary><section id="method.connect" 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/nightly/src/alloc/slice.rs.html#660-662">Source</a></span><h4 class="code-header">pub fn <a href="#method.connect" class="fn">connect</a>&lt;Separator&gt;(
2520 &amp;self,
2521 sep: Separator,
2522 ) -&gt; &lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html#associatedtype.Output" title="type alloc::slice::Join::Output">Output</a> <a href="#" class="tooltip" data-notable-ty="&lt;[T] as Join&lt;Separator&gt;&gt;::Output">ⓘ</a><div class="where">where
2523 <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">[T]</a>: <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/slice/trait.Join.html" title="trait alloc::slice::Join">Join</a>&lt;Separator&gt;,</div></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 1.3.0: renamed to join</span></div></span></summary><div class="docblock"><p>Flattens a slice of <code>T</code> into a single value <code>Self::Output</code>, placing a
2524 given separator between each.</p>
2525 <h5 id="examples-126"><a class="doc-anchor" href="#examples-126">§</a>Examples</h5>
2526 <div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="macro">assert_eq!</span>([<span class="string">"hello"</span>, <span class="string">"world"</span>].connect(<span class="string">" "</span>), <span class="string">"hello world"</span>);
2527 <span class="macro">assert_eq!</span>([[<span class="number">1</span>, <span class="number">2</span>], [<span class="number">3</span>, <span class="number">4</span>]].connect(<span class="kw-2">&amp;</span><span class="number">0</span>), [<span class="number">1</span>, <span class="number">2</span>, <span class="number">0</span>, <span class="number">3</span>, <span class="number">4</span>]);</code></pre></div>
2528 </div></details><details class="toggle method-toggle" open><summary><section id="method.to_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/nightly/src/alloc/slice.rs.html#685">Source</a></span><h4 class="code-header">pub fn <a href="#method.to_ascii_uppercase" class="fn">to_ascii_uppercase</a>(&amp;self) -&gt; <a class="struct" href="../base58/struct.Vec.html" title="struct bdk_chain::bitcoin::base58::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt; <a href="#" class="tooltip" data-notable-ty="Vec&lt;u8&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a vector containing a copy of this slice where each byte
2529 is mapped to its ASCII upper case equivalent.</p>
2530 <p>ASCII letters ‘a’ to ‘z’ are mapped to ‘A’ to ‘Z’,
2531 but non-ASCII letters are unchanged.</p>
2532 <p>To uppercase the value in-place, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_uppercase" title="method slice::make_ascii_uppercase"><code>make_ascii_uppercase</code></a>.</p>
2533 </div></details><details class="toggle method-toggle" open><summary><section id="method.to_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/nightly/src/alloc/slice.rs.html#706">Source</a></span><h4 class="code-header">pub fn <a href="#method.to_ascii_lowercase" class="fn">to_ascii_lowercase</a>(&amp;self) -&gt; <a class="struct" href="../base58/struct.Vec.html" title="struct bdk_chain::bitcoin::base58::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt; <a href="#" class="tooltip" data-notable-ty="Vec&lt;u8&gt;">ⓘ</a></h4></section></summary><div class="docblock"><p>Returns a vector containing a copy of this slice where each byte
2534 is mapped to its ASCII lower case equivalent.</p>
2535 <p>ASCII letters ‘A’ to ‘Z’ are mapped to ‘a’ to ‘z’,
2536 but non-ASCII letters are unchanged.</p>
2537 <p>To lowercase the value in-place, use <a href="https://doc.rust-lang.org/nightly/std/primitive.slice.html#method.make_ascii_lowercase" title="method slice::make_ascii_lowercase"><code>make_ascii_lowercase</code></a>.</p>
2538 </div></details></div></details><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-AsMut%3C%5Bu8%5D%3E-for-SerializedSignature" class="impl"><a href="#impl-AsMut%3C%5Bu8%5D%3E-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html" title="trait core::convert::AsMut">AsMut</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_mut" class="method trait-impl"><a href="#method.as_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsMut.html#tymethod.as_mut" class="fn">as_mut</a>(&amp;mut self) -&gt; &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;mut [u8]">ⓘ</a></h4></section></summary><div class='docblock'>Converts this type into a mutable reference of the (usually inferred) input type.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-AsRef%3C%5Bu8%5D%3E-for-SerializedSignature" class="impl"><a href="#impl-AsRef%3C%5Bu8%5D%3E-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl"><a href="#method.as_ref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[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%3CPushBytes%3E-for-SerializedSignature" class="impl"><a href="#impl-AsRef%3CPushBytes%3E-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="../blockdata/script/struct.PushBytes.html" title="struct bdk_chain::bitcoin::blockdata::script::PushBytes">PushBytes</a>&gt; for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></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 href="#method.as_ref-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fn">as_ref</a>(&amp;self) -&gt; &amp;<a class="struct" href="../blockdata/script/struct.PushBytes.html" title="struct bdk_chain::bitcoin::blockdata::script::PushBytes">PushBytes</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-Borrow%3C%5Bu8%5D%3E-for-SerializedSignature" class="impl"><a href="#impl-Borrow%3C%5Bu8%5D%3E-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]">ⓘ</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-BorrowMut%3C%5Bu8%5D%3E-for-SerializedSignature" class="impl"><a href="#impl-BorrowMut%3C%5Bu8%5D%3E-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;mut [u8]">ⓘ</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-SerializedSignature" class="impl"><a href="#impl-Clone-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">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="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" 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/nightly/src/core/clone.rs.html#174">Source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>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></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-SerializedSignature" class="impl"><a href="#impl-Debug-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Deref-for-SerializedSignature" class="impl"><a href="#impl-Deref-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl"><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl"><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&amp;self) -&gt; &amp;&lt;<a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-DerefMut-for-SerializedSignature" class="impl"><a href="#impl-DerefMut-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html" title="trait core::ops::deref::DerefMut">DerefMut</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.deref_mut" class="method trait-impl"><a href="#method.deref_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.DerefMut.html#tymethod.deref_mut" class="fn">deref_mut</a>(&amp;mut self) -&gt; &amp;mut &lt;<a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Mutably dereferences the value.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Display-for-SerializedSignature" class="impl"><a href="#impl-Display-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-1" class="method trait-impl"><a href="#method.fmt-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Hash-for-SerializedSignature" class="impl"><a href="#impl-Hash-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html" title="trait core::hash::Hash">Hash</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.hash" class="method trait-impl"><a href="#method.hash" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash" class="fn">hash</a>&lt;H&gt;(&amp;self, state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut H</a>)<div class="where">where
2539 H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,</div></h4></section></summary><div class='docblock'>Feeds this value into the given <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#tymethod.hash">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.hash_slice" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.3.0">1.3.0</span> · <a class="src" href="https://doc.rust-lang.org/nightly/src/core/hash/mod.rs.html#235-237">Source</a></span><a href="#method.hash_slice" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/hash/trait.Hash.html#method.hash_slice" class="fn">hash_slice</a>&lt;H&gt;(data: &amp;[Self], state: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut H</a>)<div class="where">where
2540 H: <a class="trait" href="https://doc.rust-lang.org/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher">Hasher</a>,
2541 Self: <a class="trait" href="https://doc.rust-lang.org/nightly/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/nightly/core/hash/trait.Hasher.html" title="trait core::hash::Hasher"><code>Hasher</code></a>. <a href="https://doc.rust-lang.org/nightly/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-IntoIterator-for-%26SerializedSignature" class="impl"><a href="#impl-IntoIterator-for-%26SerializedSignature" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a> for &amp;'a <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.IntoIter" class="associatedtype trait-impl"><a href="#associatedtype.IntoIter" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" class="associatedtype">IntoIter</a> = <a class="struct" href="https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html" title="struct core::slice::iter::Iter">Iter</a>&lt;'a, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;</h4></section></summary><div class='docblock'>Which kind of iterator are we turning this into?</div></details><details class="toggle" open><summary><section id="associatedtype.Item" class="associatedtype trait-impl"><a href="#associatedtype.Item" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.Item" class="associatedtype">Item</a> = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a></h4></section></summary><div class='docblock'>The type of the elements being iterated over.</div></details><details class="toggle method-toggle" open><summary><section id="method.into_iter" class="method trait-impl"><a href="#method.into_iter" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter" class="fn">into_iter</a>(self) -&gt; &lt;&amp;'a <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a> as <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html" title="trait core::iter::traits::collect::IntoIterator">IntoIterator</a>&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#associatedtype.IntoIter" title="type core::iter::traits::collect::IntoIterator::IntoIter">IntoIter</a></h4></section></summary><div class='docblock'>Creates an iterator from a value. <a href="https://doc.rust-lang.org/nightly/core/iter/traits/collect/trait.IntoIterator.html#tymethod.into_iter">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-LowerHex-for-SerializedSignature" class="impl"><a href="#impl-LowerHex-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html" title="trait core::fmt::LowerHex">LowerHex</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-2" class="method trait-impl"><a href="#method.fmt-2" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.LowerHex.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-SerializedSignature" class="impl"><a href="#impl-PartialEq-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;<a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/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"><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/nightly/src/core/cmp.rs.html#261">Source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
2542 and should not be overridden without very good reason.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-UpperHex-for-SerializedSignature" class="impl"><a href="#impl-UpperHex-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html" title="trait core::fmt::UpperHex">UpperHex</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt-3" class="method trait-impl"><a href="#method.fmt-3" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="https://doc.rust-lang.org/nightly/core/fmt/struct.Error.html" title="struct core::fmt::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/nightly/core/fmt/trait.UpperHex.html#tymethod.fmt">Read more</a></div></details></div></details><section id="impl-Copy-for-SerializedSignature" class="impl"><a href="#impl-Copy-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Copy.html" title="trait core::marker::Copy">Copy</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section><section id="impl-Eq-for-SerializedSignature" class="impl"><a href="#impl-Eq-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></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-SerializedSignature" class="impl"><a href="#impl-Freeze-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section><section id="impl-RefUnwindSafe-for-SerializedSignature" class="impl"><a href="#impl-RefUnwindSafe-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section><section id="impl-Send-for-SerializedSignature" class="impl"><a href="#impl-Send-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section><section id="impl-Sync-for-SerializedSignature" class="impl"><a href="#impl-Sync-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section><section id="impl-Unpin-for-SerializedSignature" class="impl"><a href="#impl-Unpin-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section><section id="impl-UnwindSafe-for-SerializedSignature" class="impl"><a href="#impl-UnwindSafe-for-SerializedSignature" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SerializedSignature.html" title="struct bdk_chain::bitcoin::ecdsa::SerializedSignature">SerializedSignature</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
2543 T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/src/core/borrow.rs.html#209">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
2544 T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/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-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">Source</a><a href="#method.borrow-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/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/nightly/src/core/borrow.rs.html#217">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
2545 T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/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-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#218">Source</a><a href="#method.borrow_mut-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/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/nightly/src/core/clone.rs.html#273">Source</a><a href="#impl-CloneToUninit-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
2546 T: <a class="trait" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&amp;self, dst: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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/nightly/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-Equivalent%3CK%3E-for-Q" class="impl"><a href="#impl-Equivalent%3CK%3E-for-Q" class="anchor">§</a><h3 class="code-header">impl&lt;Q, K&gt; Equivalent&lt;K&gt; for Q<div class="where">where
2547 Q: <a class="trait" href="https://doc.rust-lang.org/nightly/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
2548 K: <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;Q&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/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.equivalent" class="method trait-impl"><a href="#method.equivalent" class="anchor">§</a><h4 class="code-header">fn <a class="fn">equivalent</a>(&amp;self, key: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;K</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Checks if this value is equivalent to the given key. <a>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/nightly/src/core/convert/mod.rs.html#767">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#770">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
2549 </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/nightly/src/core/convert/mod.rs.html#750-752">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
2550 U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</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/nightly/src/core/convert/mod.rs.html#760">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
2551 <p>That is, this conversion is whatever the implementation of
2552 <code><a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
2553 </div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Receiver-for-P" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#418-420">Source</a><a href="#impl-Receiver-for-P" class="anchor">§</a><h3 class="code-header">impl&lt;P, T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html" title="trait core::ops::deref::Receiver">Receiver</a> for P<div class="where">where
2554 P: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = T&gt; + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
2555 T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/ops/deref.rs.html#422">Source</a><a href="#associatedtype.Target-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/ops/deref/trait.Receiver.html#associatedtype.Target" class="associatedtype">Target</a> = T</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>arbitrary_self_types</code>)</span></div></span><div class='docblock'>The target type on which the method may be called.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#82-84">Source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
2556 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#86">Source</a><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#87">Source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/borrow.rs.html#91">Source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/nightly/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToString-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2677">Source</a><a href="#impl-ToString-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<div class="where">where
2557 T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/nightly/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.to_string" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/alloc/string.rs.html#2679">Source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string" class="fn">to_string</a>(&amp;self) -&gt; <a class="struct" href="../base58/struct.String.html" title="struct bdk_chain::bitcoin::base58::String">String</a></h4></section></summary><div class='docblock'>Converts the given value to a <code>String</code>. <a href="https://doc.rust-lang.org/nightly/alloc/string/trait.ToString.html#tymethod.to_string">Read more</a></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/nightly/src/core/convert/mod.rs.html#807-809">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
2558 U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</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/nightly/src/core/convert/mod.rs.html#811">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/src/core/convert/mod.rs.html#814">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</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/nightly/src/core/convert/mod.rs.html#792-794">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
2559 U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</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/nightly/src/core/convert/mod.rs.html#796">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/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/nightly/src/core/convert/mod.rs.html#799">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-VZip%3CV%3E-for-T" class="impl"><a href="#impl-VZip%3CV%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;V, T&gt; VZip&lt;V&gt; for T<div class="where">where
2560 V: MultiLane&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><section id="method.vzip" class="method trait-impl"><a href="#method.vzip" class="anchor">§</a><h4 class="code-header">fn <a class="fn">vzip</a>(self) -&gt; V</h4></section></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","&mut [u8]":"<h3>Notable traits for <code>&amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","<[T] as Concat<Item>>::Output":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","<[T] as Join<Separator>>::Output":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for &amp;mut [<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>]</div>","ArrayChunks<'_, T, N>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunks.html\" title=\"struct core::slice::iter::ArrayChunks\">ArrayChunks</a>&lt;'a, T, N&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunks.html\" title=\"struct core::slice::iter::ArrayChunks\">ArrayChunks</a>&lt;'a, T, N&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">[T; N]</a>;</div>","ArrayChunksMut<'_, T, N>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunksMut.html\" title=\"struct core::slice::iter::ArrayChunksMut\">ArrayChunksMut</a>&lt;'a, T, N&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayChunksMut.html\" title=\"struct core::slice::iter::ArrayChunksMut\">ArrayChunksMut</a>&lt;'a, T, N&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">[T; N]</a>;</div>","ArrayWindows<'_, T, N>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html\" title=\"struct core::slice::iter::ArrayWindows\">ArrayWindows</a>&lt;'a, T, N&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, const N: <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.usize.html\">usize</a>&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ArrayWindows.html\" title=\"struct core::slice::iter::ArrayWindows\">ArrayWindows</a>&lt;'a, T, N&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.array.html\">[T; N]</a>;</div>","ChunkBy<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html\" title=\"struct core::slice::iter::ChunkBy\">ChunkBy</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkBy.html\" title=\"struct core::slice::iter::ChunkBy\">ChunkBy</a>&lt;'a, T, P&gt;<div class=\"where\">where\n T: 'a,\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","ChunkByMut<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkByMut.html\" title=\"struct core::slice::iter::ChunkByMut\">ChunkByMut</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunkByMut.html\" title=\"struct core::slice::iter::ChunkByMut\">ChunkByMut</a>&lt;'a, T, P&gt;<div class=\"where\">where\n T: 'a,\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>, <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","Chunks<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html\" title=\"struct core::slice::iter::Chunks\">Chunks</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Chunks.html\" title=\"struct core::slice::iter::Chunks\">Chunks</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","ChunksExact<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html\" title=\"struct core::slice::iter::ChunksExact\">ChunksExact</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExact.html\" title=\"struct core::slice::iter::ChunksExact\">ChunksExact</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","ChunksExactMut<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExactMut.html\" title=\"struct core::slice::iter::ChunksExactMut\">ChunksExactMut</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksExactMut.html\" title=\"struct core::slice::iter::ChunksExactMut\">ChunksExactMut</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","ChunksMut<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksMut.html\" title=\"struct core::slice::iter::ChunksMut\">ChunksMut</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.ChunksMut.html\" title=\"struct core::slice::iter::ChunksMut\">ChunksMut</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","EscapeAscii<'_>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html\" title=\"struct core::slice::ascii::EscapeAscii\">EscapeAscii</a>&lt;'a&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/ascii/struct.EscapeAscii.html\" title=\"struct core::slice::ascii::EscapeAscii\">EscapeAscii</a>&lt;'a&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>;</div>","Iter<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html\" title=\"struct core::slice::iter::Iter\">Iter</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html\" title=\"struct core::slice::iter::Iter\">Iter</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a T</a>;</div>","Iter<'_, u8>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html\" title=\"struct core::slice::iter::Iter\">Iter</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Iter.html\" title=\"struct core::slice::iter::Iter\">Iter</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a T</a>;</div>","IterMut<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.IterMut.html\" title=\"struct core::slice::iter::IterMut\">IterMut</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.IterMut.html\" title=\"struct core::slice::iter::IterMut\">IterMut</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;'a mut T</a>;</div>","RChunks<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html\" title=\"struct core::slice::iter::RChunks\">RChunks</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunks.html\" title=\"struct core::slice::iter::RChunks\">RChunks</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RChunksExact<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html\" title=\"struct core::slice::iter::RChunksExact\">RChunksExact</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExact.html\" title=\"struct core::slice::iter::RChunksExact\">RChunksExact</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RChunksExactMut<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExactMut.html\" title=\"struct core::slice::iter::RChunksExactMut\">RChunksExactMut</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksExactMut.html\" title=\"struct core::slice::iter::RChunksExactMut\">RChunksExactMut</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RChunksMut<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksMut.html\" title=\"struct core::slice::iter::RChunksMut\">RChunksMut</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RChunksMut.html\" title=\"struct core::slice::iter::RChunksMut\">RChunksMut</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RSplit<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html\" title=\"struct core::slice::iter::RSplit\">RSplit</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplit.html\" title=\"struct core::slice::iter::RSplit\">RSplit</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RSplitMut<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitMut.html\" title=\"struct core::slice::iter::RSplitMut\">RSplitMut</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitMut.html\" title=\"struct core::slice::iter::RSplitMut\">RSplitMut</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RSplitN<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html\" title=\"struct core::slice::iter::RSplitN\">RSplitN</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitN.html\" title=\"struct core::slice::iter::RSplitN\">RSplitN</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","RSplitNMut<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitNMut.html\" title=\"struct core::slice::iter::RSplitNMut\">RSplitNMut</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.RSplitNMut.html\" title=\"struct core::slice::iter::RSplitNMut\">RSplitNMut</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","Range<*const T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html\" title=\"struct core::ops::range::Range\">Range</a>&lt;A&gt;</code></h3><pre><code><div class=\"where\">impl&lt;A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html\" title=\"struct core::ops::range::Range\">Range</a>&lt;A&gt;<div class=\"where\">where\n A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/range/trait.Step.html\" title=\"trait core::iter::range::Step\">Step</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = A;</div>","Range<*mut T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html\" title=\"struct core::ops::range::Range\">Range</a>&lt;A&gt;</code></h3><pre><code><div class=\"where\">impl&lt;A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/ops/range/struct.Range.html\" title=\"struct core::ops::range::Range\">Range</a>&lt;A&gt;<div class=\"where\">where\n A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/range/trait.Step.html\" title=\"trait core::iter::range::Step\">Step</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = A;</div>","Split<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html\" title=\"struct core::slice::iter::Split\">Split</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Split.html\" title=\"struct core::slice::iter::Split\">Split</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","SplitInclusive<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html\" title=\"struct core::slice::iter::SplitInclusive\">SplitInclusive</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusive.html\" title=\"struct core::slice::iter::SplitInclusive\">SplitInclusive</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","SplitInclusiveMut<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusiveMut.html\" title=\"struct core::slice::iter::SplitInclusiveMut\">SplitInclusiveMut</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitInclusiveMut.html\" title=\"struct core::slice::iter::SplitInclusiveMut\">SplitInclusiveMut</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","SplitMut<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitMut.html\" title=\"struct core::slice::iter::SplitMut\">SplitMut</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitMut.html\" title=\"struct core::slice::iter::SplitMut\">SplitMut</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","SplitN<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html\" title=\"struct core::slice::iter::SplitN\">SplitN</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitN.html\" title=\"struct core::slice::iter::SplitN\">SplitN</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","SplitNMut<'_, T, F>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitNMut.html\" title=\"struct core::slice::iter::SplitNMut\">SplitNMut</a>&lt;'a, T, P&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T, P&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.SplitNMut.html\" title=\"struct core::slice::iter::SplitNMut\">SplitNMut</a>&lt;'a, T, P&gt;<div class=\"where\">where\n P: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/ops/function/trait.FnMut.html\" title=\"trait core::ops::function::FnMut\">FnMut</a>(<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.reference.html\">&amp;T</a>) -&gt; <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.bool.html\">bool</a>,</div></div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a mut <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>","Utf8Chunks<'_>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunks.html\" title=\"struct core::str::lossy::Utf8Chunks\">Utf8Chunks</a>&lt;'a&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunks.html\" title=\"struct core::str::lossy::Utf8Chunks\">Utf8Chunks</a>&lt;'a&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/str/lossy/struct.Utf8Chunk.html\" title=\"struct core::str::lossy::Utf8Chunk\">Utf8Chunk</a>&lt;'a&gt;;</div>","Vec<u8>":"<h3>Notable traits for <code><a class=\"struct\" href=\"../base58/struct.Vec.html\" title=\"struct bdk_chain::bitcoin::base58::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A&gt;</code></h3><pre><code><div class=\"where\">impl&lt;A&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/std/io/trait.Write.html\" title=\"trait std::io::Write\">Write</a> for <a class=\"struct\" href=\"../base58/struct.Vec.html\" title=\"struct bdk_chain::bitcoin::base58::Vec\">Vec</a>&lt;<a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.u8.html\">u8</a>, A&gt;<div class=\"where\">where\n A: <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/alloc/trait.Allocator.html\" title=\"trait core::alloc::Allocator\">Allocator</a>,</div></div>","Windows<'_, T>":"<h3>Notable traits for <code><a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html\" title=\"struct core::slice::iter::Windows\">Windows</a>&lt;'a, T&gt;</code></h3><pre><code><div class=\"where\">impl&lt;'a, T&gt; <a class=\"trait\" href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html\" title=\"trait core::iter::traits::iterator::Iterator\">Iterator</a> for <a class=\"struct\" href=\"https://doc.rust-lang.org/nightly/core/slice/iter/struct.Windows.html\" title=\"struct core::slice::iter::Windows\">Windows</a>&lt;'a, T&gt;</div><div class=\"where\"> type <a href=\"https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html#associatedtype.Item\" class=\"associatedtype\">Item</a> = &amp;'a <a class=\"primitive\" href=\"https://doc.rust-lang.org/nightly/std/primitive.slice.html\">[T]</a>;</div>"}</script></section></div></main></body></html>