forked from diesel-rs/diesel
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlib.rs.html
More file actions
223 lines (214 loc) · 15.6 KB
/
Copy pathlib.rs.html
File metadata and controls
223 lines (214 loc) · 15.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
<!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="Source of the Rust file `/home/runner/.cargo/registry/src/github.com-1ecc6299db9ec823/tinyvec-1.6.0/src/lib.rs`."><meta name="keywords" content="rust, rustlang, rust-lang"><title>lib.rs - source</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" type="text/css" href="../../normalize.css"><link rel="stylesheet" type="text/css" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../../ayu.css" disabled><link rel="stylesheet" type="text/css" href="../../dark.css" disabled><link rel="stylesheet" type="text/css" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="../../source-script.js"></script><script defer src="../../source-files.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.svg"></head><body class="rustdoc source"><!--[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">☰</button><a class="sidebar-logo" href="../../tinyvec/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div>
</a><h2 class="location"></h2>
</nav>
<nav class="sidebar"><a class="sidebar-logo" href="../../tinyvec/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div>
</a></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../tinyvec/index.html"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></a><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><button type="button">?</button></div><div id="settings-menu" tabindex="-1">
<a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div>
</div></form></nav></div><section id="main-content" class="content"><div class="example-wrap"><pre class="line-numbers"><span id="1">1</span>
<span id="2">2</span>
<span id="3">3</span>
<span id="4">4</span>
<span id="5">5</span>
<span id="6">6</span>
<span id="7">7</span>
<span id="8">8</span>
<span id="9">9</span>
<span id="10">10</span>
<span id="11">11</span>
<span id="12">12</span>
<span id="13">13</span>
<span id="14">14</span>
<span id="15">15</span>
<span id="16">16</span>
<span id="17">17</span>
<span id="18">18</span>
<span id="19">19</span>
<span id="20">20</span>
<span id="21">21</span>
<span id="22">22</span>
<span id="23">23</span>
<span id="24">24</span>
<span id="25">25</span>
<span id="26">26</span>
<span id="27">27</span>
<span id="28">28</span>
<span id="29">29</span>
<span id="30">30</span>
<span id="31">31</span>
<span id="32">32</span>
<span id="33">33</span>
<span id="34">34</span>
<span id="35">35</span>
<span id="36">36</span>
<span id="37">37</span>
<span id="38">38</span>
<span id="39">39</span>
<span id="40">40</span>
<span id="41">41</span>
<span id="42">42</span>
<span id="43">43</span>
<span id="44">44</span>
<span id="45">45</span>
<span id="46">46</span>
<span id="47">47</span>
<span id="48">48</span>
<span id="49">49</span>
<span id="50">50</span>
<span id="51">51</span>
<span id="52">52</span>
<span id="53">53</span>
<span id="54">54</span>
<span id="55">55</span>
<span id="56">56</span>
<span id="57">57</span>
<span id="58">58</span>
<span id="59">59</span>
<span id="60">60</span>
<span id="61">61</span>
<span id="62">62</span>
<span id="63">63</span>
<span id="64">64</span>
<span id="65">65</span>
<span id="66">66</span>
<span id="67">67</span>
<span id="68">68</span>
<span id="69">69</span>
<span id="70">70</span>
<span id="71">71</span>
<span id="72">72</span>
<span id="73">73</span>
<span id="74">74</span>
<span id="75">75</span>
<span id="76">76</span>
<span id="77">77</span>
<span id="78">78</span>
<span id="79">79</span>
<span id="80">80</span>
<span id="81">81</span>
<span id="82">82</span>
<span id="83">83</span>
<span id="84">84</span>
<span id="85">85</span>
<span id="86">86</span>
<span id="87">87</span>
<span id="88">88</span>
<span id="89">89</span>
<span id="90">90</span>
<span id="91">91</span>
<span id="92">92</span>
<span id="93">93</span>
<span id="94">94</span>
<span id="95">95</span>
<span id="96">96</span>
<span id="97">97</span>
<span id="98">98</span>
<span id="99">99</span>
<span id="100">100</span>
<span id="101">101</span>
<span id="102">102</span>
<span id="103">103</span>
<span id="104">104</span>
<span id="105">105</span>
<span id="106">106</span>
<span id="107">107</span>
</pre><pre class="rust"><code><span class="attribute">#![<span class="ident">cfg_attr</span>(<span class="ident">not</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"std"</span>), <span class="ident">no_std</span>)]</span>
<span class="attribute">#![<span class="ident">forbid</span>(<span class="ident">unsafe_code</span>)]</span>
<span class="attribute">#![<span class="ident">cfg_attr</span>(
<span class="ident">feature</span> <span class="op">=</span> <span class="string">"nightly_slice_partition_dedup"</span>,
<span class="ident">feature</span>(<span class="ident">slice_partition_dedup</span>)
)]</span>
<span class="attribute">#![<span class="ident">cfg_attr</span>(<span class="ident">docs_rs</span>, <span class="ident">feature</span>(<span class="ident">doc_cfg</span>))]</span>
<span class="attribute">#![<span class="ident">warn</span>(<span class="ident">clippy::missing_inline_in_public_items</span>)]</span>
<span class="attribute">#![<span class="ident">warn</span>(<span class="ident">clippy::must_use_candidate</span>)]</span>
<span class="attribute">#![<span class="ident">warn</span>(<span class="ident">missing_docs</span>)]</span>
<span class="doccomment">//! `tinyvec` provides 100% safe vec-like data structures.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! ## Provided Types</span>
<span class="doccomment">//! With no features enabled, this crate provides the [`ArrayVec`] type, which</span>
<span class="doccomment">//! is an array-backed storage. You can push values into the array and pop them</span>
<span class="doccomment">//! out of the array and so on. If the array is made to overflow it will panic.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! Similarly, there is also a [`SliceVec`] type available, which is a vec-like</span>
<span class="doccomment">//! that's backed by a slice you provide. You can add and remove elements, but</span>
<span class="doccomment">//! if you overflow the slice it will panic.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! With the `alloc` feature enabled, the crate also has a [`TinyVec`] type.</span>
<span class="doccomment">//! This is an enum type which is either an `Inline(ArrayVec)` or a `Heap(Vec)`.</span>
<span class="doccomment">//! If a `TinyVec` is `Inline` and would overflow it automatically transitions</span>
<span class="doccomment">//! itself into being `Heap` mode instead of a panic.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! All of this is done with no `unsafe` code within the crate. Technically the</span>
<span class="doccomment">//! `Vec` type from the standard library uses `unsafe` internally, but *this</span>
<span class="doccomment">//! crate* introduces no new `unsafe` code into your project.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! The limitation is that the element type of a vec from this crate must</span>
<span class="doccomment">//! support the [`Default`] trait. This means that this crate isn't suitable for</span>
<span class="doccomment">//! all situations, but a very surprising number of types do support `Default`.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! ## Other Features</span>
<span class="doccomment">//! * `grab_spare_slice` lets you get access to the "inactive" portions of an</span>
<span class="doccomment">//! ArrayVec.</span>
<span class="doccomment">//! * `rustc_1_40` makes the crate assume a minimum rust version of `1.40.0`,</span>
<span class="doccomment">//! which allows some better internal optimizations.</span>
<span class="doccomment">//! * `serde` provides a `Serialize` and `Deserialize` implementation for</span>
<span class="doccomment">//! [`TinyVec`] and [`ArrayVec`] types, provided the inner item also has an</span>
<span class="doccomment">//! implementation.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! ## API</span>
<span class="doccomment">//! The general goal of the crate is that, as much as possible, the vecs here</span>
<span class="doccomment">//! should be a "drop in" replacement for the standard library `Vec` type. We</span>
<span class="doccomment">//! strive to provide all of the `Vec` methods with the same names and</span>
<span class="doccomment">//! signatures. The exception is that the element type of some methods will have</span>
<span class="doccomment">//! a `Default` bound that's not part of the normal `Vec` type.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! The vecs here also have a few additional methods that aren't on the `Vec`</span>
<span class="doccomment">//! type. In this case, the names tend to be fairly long so that they are</span>
<span class="doccomment">//! unlikely to clash with any future methods added to `Vec`.</span>
<span class="doccomment">//!</span>
<span class="doccomment">//! ## Stability</span>
<span class="doccomment">//! * The `1.0` series of the crate works with Rustc `1.34.0` or later, though</span>
<span class="doccomment">//! you still need to have Rustc `1.36.0` to use the `alloc` feature.</span>
<span class="doccomment">//! * The `2.0` version of the crate is planned for some time after the</span>
<span class="doccomment">//! `min_const_generics` stuff becomes stable. This would greatly raise the</span>
<span class="doccomment">//! minimum rust version and also allow us to totally eliminate the need for</span>
<span class="doccomment">//! the `Array` trait. The actual usage of the crate is not expected to break</span>
<span class="doccomment">//! significantly in this transition.</span>
<span class="attribute">#[<span class="ident">allow</span>(<span class="ident">unused_imports</span>)]</span>
<span class="kw">use</span> <span class="ident">core</span>::{
<span class="ident">borrow</span>::{<span class="ident">Borrow</span>, <span class="ident">BorrowMut</span>},
<span class="ident">cmp::PartialEq</span>,
<span class="ident">convert::AsMut</span>,
<span class="ident">default::Default</span>,
<span class="ident">fmt</span>::{
<span class="ident">Binary</span>, <span class="ident">Debug</span>, <span class="ident">Display</span>, <span class="ident">Formatter</span>, <span class="ident">LowerExp</span>, <span class="ident">LowerHex</span>, <span class="ident">Octal</span>, <span class="ident">Pointer</span>,
<span class="ident">UpperExp</span>, <span class="ident">UpperHex</span>,
},
<span class="ident">hash</span>::{<span class="ident">Hash</span>, <span class="ident">Hasher</span>},
<span class="ident">iter</span>::{<span class="ident">Extend</span>, <span class="ident">FromIterator</span>, <span class="ident">FusedIterator</span>, <span class="ident">IntoIterator</span>, <span class="ident">Iterator</span>},
<span class="ident">mem</span>::{<span class="ident">needs_drop</span>, <span class="ident">replace</span>},
<span class="ident">ops</span>::{<span class="ident">Deref</span>, <span class="ident">DerefMut</span>, <span class="ident">Index</span>, <span class="ident">IndexMut</span>, <span class="ident">RangeBounds</span>},
<span class="ident">slice::SliceIndex</span>,
};
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"alloc"</span>)]</span>
<span class="attribute">#[<span class="ident">doc</span>(<span class="ident">hidden</span>)]</span> <span class="comment">// re-export for macros</span>
<span class="kw">pub</span> <span class="kw">extern</span> <span class="kw">crate</span> <span class="ident">alloc</span>;
<span class="kw">mod</span> <span class="ident">array</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">array</span>::<span class="kw-2">*</span>;
<span class="kw">mod</span> <span class="ident">arrayvec</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">arrayvec</span>::<span class="kw-2">*</span>;
<span class="kw">mod</span> <span class="ident">arrayvec_drain</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">arrayvec_drain</span>::<span class="kw-2">*</span>;
<span class="kw">mod</span> <span class="ident">slicevec</span>;
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident">slicevec</span>::<span class="kw-2">*</span>;
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"alloc"</span>)]</span>
<span class="kw">mod</span> <span class="ident">tinyvec</span>;
<span class="attribute">#[<span class="ident">cfg</span>(<span class="ident">feature</span> <span class="op">=</span> <span class="string">"alloc"</span>)]</span>
<span class="kw">pub</span> <span class="kw">use</span> <span class="ident"><span class="kw">crate</span>::tinyvec</span>::<span class="kw-2">*</span>;
<span class="comment">// TODO MSRV(1.40.0): Just call the normal `core::mem::take`</span>
<span class="attribute">#[<span class="ident">inline</span>(<span class="ident">always</span>)]</span>
<span class="kw">fn</span> <span class="ident">take</span><span class="op"><</span><span class="ident">T</span>: <span class="ident">Default</span><span class="op">></span>(<span class="ident">from</span>: <span class="kw-2">&mut</span> <span class="ident">T</span>) -> <span class="ident">T</span> {
<span class="ident">replace</span>(<span class="ident">from</span>, <span class="ident">T::default</span>())
}
</code></pre></div>
</section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="tinyvec" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0-nightly (495b21669 2022-07-03)" ></div>
</body></html>