rust_keylock 0.3.0

A password manager with goals to be Secure, Simple to use, Portable and Extensible
Documentation
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
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
<!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 to the Rust file `/home/dimitris/.cargo/registry/src/github.com-1ecc6299db9ec823/serde-0.9.12/src/lib.rs`.">
    <meta name="keywords" content="rust, rustlang, rust-lang">

    <title>lib.rs.html -- source</title>

    <link rel="stylesheet" type="text/css" href="../../normalize.css">
    <link rel="stylesheet" type="text/css" href="../../rustdoc.css">
    <link rel="stylesheet" type="text/css" href="../../main.css">
    

    
    
</head>
<body class="rustdoc">
    <!--[if lte IE 8]>
    <div class="warning">
        This old browser is unsupported and will most likely display funky
        things.
    </div>
    <![endif]-->

    

    <nav class="sidebar">
        
        
    </nav>

    <nav class="sub">
        <form class="search-form js-only">
            <div class="search-container">
                <input class="search-input" name="search"
                       autocomplete="off"
                       placeholder="Click or press ‘S’ to search, ‘?’ for more options…"
                       type="search">
            </div>
        </form>
    </nav>

    <section id='main' class="content source"><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>
<span id="108">108</span>
<span id="109">109</span>
<span id="110">110</span>
<span id="111">111</span>
<span id="112">112</span>
<span id="113">113</span>
<span id="114">114</span>
<span id="115">115</span>
<span id="116">116</span>
<span id="117">117</span>
<span id="118">118</span>
<span id="119">119</span>
<span id="120">120</span>
<span id="121">121</span>
<span id="122">122</span>
<span id="123">123</span>
<span id="124">124</span>
<span id="125">125</span>
<span id="126">126</span>
<span id="127">127</span>
<span id="128">128</span>
<span id="129">129</span>
<span id="130">130</span>
<span id="131">131</span>
<span id="132">132</span>
<span id="133">133</span>
<span id="134">134</span>
<span id="135">135</span>
<span id="136">136</span>
<span id="137">137</span>
<span id="138">138</span>
<span id="139">139</span>
<span id="140">140</span>
<span id="141">141</span>
<span id="142">142</span>
<span id="143">143</span>
<span id="144">144</span>
<span id="145">145</span>
<span id="146">146</span>
<span id="147">147</span>
<span id="148">148</span>
<span id="149">149</span>
<span id="150">150</span>
<span id="151">151</span>
<span id="152">152</span>
<span id="153">153</span>
<span id="154">154</span>
<span id="155">155</span>
</pre><pre class='rust '>
<span class='doccomment'>//! # Serde</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! Serde is a framework for ***ser***ializing and ***de***serializing Rust data</span>
<span class='doccomment'>//! structures efficiently and generically.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! The Serde ecosystem consists of data structures that know how to serialize</span>
<span class='doccomment'>//! and deserialize themselves along with data formats that know how to</span>
<span class='doccomment'>//! serialize and deserialize other things. Serde provides the layer by which</span>
<span class='doccomment'>//! these two groups interact with each other, allowing any supported data</span>
<span class='doccomment'>//! structure to be serialized and deserialized using any supported data format.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! See the Serde website https://serde.rs/ for additional documentation and</span>
<span class='doccomment'>//! usage examples.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! ### Design</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! Where many other languages rely on runtime reflection for serializing data,</span>
<span class='doccomment'>//! Serde is instead built on Rust&#39;s powerful trait system. A data structure</span>
<span class='doccomment'>//! that knows how to serialize and deserialize itself is one that implements</span>
<span class='doccomment'>//! Serde&#39;s `Serialize` and `Deserialize` traits (or uses Serde&#39;s code</span>
<span class='doccomment'>//! generation to automatically derive implementations at compile time). This</span>
<span class='doccomment'>//! avoids any overhead of reflection or runtime type information. In fact in</span>
<span class='doccomment'>//! many situations the interaction between data structure and data format can</span>
<span class='doccomment'>//! be completely optimized away by the Rust compiler, leaving Serde</span>
<span class='doccomment'>//! serialization to perform roughly the same speed as a handwritten serializer</span>
<span class='doccomment'>//! for the specific selection of data structure and data format.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! ### Data formats</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! The following is a partial list of data formats that have been implemented</span>
<span class='doccomment'>//! for Serde by the community.</span>
<span class='doccomment'>//!</span>
<span class='doccomment'>//! - [JSON](https://github.com/serde-rs/json), the ubiquitous JavaScript Object</span>
<span class='doccomment'>//!   Notation used by many HTTP APIs.</span>
<span class='doccomment'>//! - [Bincode](https://github.com/TyOverby/bincode), a compact binary format</span>
<span class='doccomment'>//!   used for IPC within the Servo rendering engine.</span>
<span class='doccomment'>//! - [CBOR](https://github.com/pyfisch/cbor), a Concise Binary Object</span>
<span class='doccomment'>//!   Representation designed for small message size without the need for</span>
<span class='doccomment'>//!   version negotiation.</span>
<span class='doccomment'>//! - [YAML](https://github.com/dtolnay/serde-yaml), a popular human-friendly</span>
<span class='doccomment'>//!   configuration language that ain&#39;t markup language.</span>
<span class='doccomment'>//! - [MessagePack](https://github.com/3Hren/msgpack-rust), an efficient binary</span>
<span class='doccomment'>//!   format that resembles a compact JSON.</span>
<span class='doccomment'>//! - [TOML](https://github.com/alexcrichton/toml-rs), a minimal configuration</span>
<span class='doccomment'>//!   format used by [Cargo](http://doc.crates.io/manifest.html).</span>
<span class='doccomment'>//! - [Pickle](https://github.com/birkenfeld/serde-pickle), a format common in</span>
<span class='doccomment'>//!   the Python world.</span>
<span class='doccomment'>//! - [Hjson](https://github.com/laktak/hjson-rust), a variant of JSON designed</span>
<span class='doccomment'>//!   to be readable and writable by humans.</span>
<span class='doccomment'>//! - [BSON](https://github.com/zonyitoo/bson-rs), the data storage and network</span>
<span class='doccomment'>//!   transfer format used by MongoDB.</span>
<span class='doccomment'>//! - [URL](https://github.com/nox/serde_urlencoded), the x-www-form-urlencoded</span>
<span class='doccomment'>//!   format.</span>
<span class='doccomment'>//! - [XML](https://github.com/serde-rs/xml), the flexible machine-friendly W3C</span>
<span class='doccomment'>//!   standard. *(deserialization only)*</span>
<span class='doccomment'>//! - [Envy](https://github.com/softprops/envy), a way to deserialize</span>
<span class='doccomment'>//!   environment variables into Rust structs. *(deserialization only)*</span>
<span class='doccomment'>//! - [Redis](https://github.com/OneSignal/serde-redis), deserialize values from</span>
<span class='doccomment'>//!   Redis when using [redis-rs](https://crates.io/crates/redis).</span>
<span class='doccomment'>//!   *(deserialization only)*</span>

<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>doc</span>(<span class='ident'>html_root_url</span><span class='op'>=</span><span class='string'>&quot;https://docs.serde.rs&quot;</span>)]</span>
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>not</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;std&quot;</span>), <span class='ident'>no_std</span>)]</span>
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;unstable&quot;</span>, <span class='ident'>feature</span>(<span class='ident'>nonzero</span>, <span class='ident'>specialization</span>, <span class='ident'>zero_one</span>, <span class='ident'>into_boxed_c_str</span>))]</span>
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;alloc&quot;</span>, <span class='ident'>feature</span>(<span class='ident'>alloc</span>))]</span>
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;collections&quot;</span>, <span class='ident'>feature</span>(<span class='ident'>collections</span>))]</span>
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;cargo-clippy&quot;</span>, <span class='ident'>allow</span>(<span class='ident'>linkedlist</span>, <span class='ident'>type_complexity</span>, <span class='ident'>doc_markdown</span>))]</span>
<span class='attribute'>#<span class='op'>!</span>[<span class='ident'>deny</span>(<span class='ident'>missing_docs</span>)]</span>

<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;collections&quot;</span>)]</span>
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>collections</span>;

<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;alloc&quot;</span>)]</span>
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>alloc</span>;

<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;unstable&quot;</span>)]</span>
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>core</span> <span class='kw'>as</span> <span class='ident'>actual_core</span>;

<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;std&quot;</span>)]</span>
<span class='kw'>mod</span> <span class='ident'>core</span> {
    <span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>std</span>::{<span class='ident'>ops</span>, <span class='ident'>hash</span>, <span class='ident'>fmt</span>, <span class='ident'>cmp</span>, <span class='ident'>marker</span>, <span class='ident'>mem</span>, <span class='ident'>i8</span>, <span class='ident'>i16</span>, <span class='ident'>i32</span>, <span class='ident'>i64</span>, <span class='ident'>u8</span>, <span class='ident'>u16</span>, <span class='ident'>u32</span>, <span class='ident'>u64</span>, <span class='ident'>isize</span>,
                  <span class='ident'>usize</span>, <span class='ident'>f32</span>, <span class='ident'>f64</span>, <span class='ident'>char</span>, <span class='ident'>str</span>, <span class='ident'>num</span>, <span class='ident'>slice</span>, <span class='ident'>iter</span>, <span class='ident'>cell</span>, <span class='ident'>default</span>, <span class='ident'>result</span>, <span class='ident'>option</span>,
                  <span class='ident'>clone</span>, <span class='ident'>convert</span>};
    <span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;unstable&quot;</span>)]</span>
    <span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>actual_core</span>::<span class='ident'>nonzero</span>;
}

<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>inline</span>)]</span>
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>ser</span>::{<span class='ident'>Serialize</span>, <span class='ident'>Serializer</span>};
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>inline</span>)]</span>
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>de</span>::{<span class='ident'>Deserialize</span>, <span class='ident'>Deserializer</span>};

<span class='attribute'>#[<span class='ident'>macro_use</span>]</span>
<span class='kw'>mod</span> <span class='ident'>macros</span>;

<span class='kw'>pub</span> <span class='kw'>mod</span> <span class='ident'>bytes</span>;
<span class='kw'>pub</span> <span class='kw'>mod</span> <span class='ident'>de</span>;
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;std&quot;</span>)]</span>
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
<span class='kw'>pub</span> <span class='kw'>mod</span> <span class='ident'>iter</span>;
<span class='kw'>pub</span> <span class='kw'>mod</span> <span class='ident'>ser</span>;
<span class='attribute'>#[<span class='ident'>cfg_attr</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;std&quot;</span>, <span class='ident'>doc</span>(<span class='ident'>hidden</span>))]</span>
<span class='kw'>pub</span> <span class='kw'>mod</span> <span class='ident'>error</span>;
<span class='kw'>mod</span> <span class='ident'>utils</span>;

<span class='comment'>// Generated code uses these to support no_std. Not public API.</span>
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
<span class='kw'>pub</span> <span class='kw'>mod</span> <span class='ident'>export</span>;

<span class='comment'>// Re-export #[derive(Serialize, Deserialize)].</span>
<span class='comment'>//</span>
<span class='comment'>// This is a workaround for https://github.com/rust-lang/cargo/issues/1286.</span>
<span class='comment'>// Without this re-export, crates that put Serde derives behind a cfg_attr would</span>
<span class='comment'>// need to use some silly feature name that depends on both serde and</span>
<span class='comment'>// serde_derive.</span>
<span class='comment'>//</span>
<span class='comment'>//     [features]</span>
<span class='comment'>//     serde-impls = [&quot;serde&quot;, &quot;serde_derive&quot;]</span>
<span class='comment'>//</span>
<span class='comment'>//     [dependencies]</span>
<span class='comment'>//     serde = { version = &quot;1.0&quot;, optional = true }</span>
<span class='comment'>//     serde_derive = { version = &quot;1.0&quot;, optional = true }</span>
<span class='comment'>//</span>
<span class='comment'>//     # Used like this:</span>
<span class='comment'>//     # #[cfg(feature = &quot;serde-impls&quot;)]</span>
<span class='comment'>//     # #[macro_use]</span>
<span class='comment'>//     # extern crate serde_derive;</span>
<span class='comment'>//     #</span>
<span class='comment'>//     # #[cfg_attr(feature = &quot;serde-impls&quot;, derive(Serialize, Deserialize))]</span>
<span class='comment'>//     # struct S { /* ... */ }</span>
<span class='comment'>//</span>
<span class='comment'>// The re-exported derives allow crates to use &quot;serde&quot; as the name of their</span>
<span class='comment'>// Serde feature which is more intuitive.</span>
<span class='comment'>//</span>
<span class='comment'>//     [dependencies]</span>
<span class='comment'>//     serde = { version = &quot;1.0&quot;, optional = true, features = [&quot;derive&quot;] }</span>
<span class='comment'>//</span>
<span class='comment'>//     # Used like this:</span>
<span class='comment'>//     # #[cfg(feature = &quot;serde&quot;)]</span>
<span class='comment'>//     # #[macro_use]</span>
<span class='comment'>//     # extern crate serde;</span>
<span class='comment'>//     #</span>
<span class='comment'>//     # #[cfg_attr(feature = &quot;serde&quot;, derive(Serialize, Deserialize))]</span>
<span class='comment'>//     # struct S { /* ... */ }</span>
<span class='comment'>//</span>
<span class='comment'>// The reason re-exporting is not enabled by default is that disabling it would</span>
<span class='comment'>// be annoying for crates that provide handwritten impls or data formats. They</span>
<span class='comment'>// would need to disable default features and then explicitly re-enable std.</span>
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;serde_derive&quot;</span>)]</span>
<span class='attribute'>#[<span class='ident'>allow</span>(<span class='ident'>unused_imports</span>)]</span>
<span class='attribute'>#[<span class='ident'>macro_use</span>]</span>
<span class='kw'>extern</span> <span class='kw'>crate</span> <span class='ident'>serde_derive</span>;
<span class='attribute'>#[<span class='ident'>cfg</span>(<span class='ident'>feature</span> <span class='op'>=</span> <span class='string'>&quot;serde_derive&quot;</span>)]</span>
<span class='attribute'>#[<span class='ident'>doc</span>(<span class='ident'>hidden</span>)]</span>
<span class='kw'>pub</span> <span class='kw'>use</span> <span class='ident'>serde_derive</span>::<span class='kw-2'>*</span>;
</pre>
</section>
    <section id='search' class="content hidden"></section>

    <section class="footer"></section>

    <aside id="help" class="hidden">
        <div>
            <h1 class="hidden">Help</h1>

            <div class="shortcuts">
                <h2>Keyboard Shortcuts</h2>

                <dl>
                    <dt>?</dt>
                    <dd>Show this help dialog</dd>
                    <dt>S</dt>
                    <dd>Focus the search field</dd>
                    <dt>&larrb;</dt>
                    <dd>Move up in search results</dd>
                    <dt>&rarrb;</dt>
                    <dd>Move down in search results</dd>
                    <dt>&#9166;</dt>
                    <dd>Go to active search result</dd>
                    <dt>+</dt>
                    <dd>Collapse/expand all sections</dd>
                </dl>
            </div>

            <div class="infos">
                <h2>Search Tricks</h2>

                <p>
                    Prefix searches with a type followed by a colon (e.g.
                    <code>fn:</code>) to restrict the search to a given type.
                </p>

                <p>
                    Accepted types are: <code>fn</code>, <code>mod</code>,
                    <code>struct</code>, <code>enum</code>,
                    <code>trait</code>, <code>type</code>, <code>macro</code>,
                    and <code>const</code>.
                </p>

                <p>
                    Search functions by type signature (e.g.
                    <code>vec -> usize</code> or <code>* -> vec</code>)
                </p>
            </div>
        </div>
    </aside>

    

    <script>
        window.rootPath = "../../";
        window.currentCrate = "serde";
    </script>
    <script src="../../jquery.js"></script>
    <script src="../../main.js"></script>
    <script defer src="../../search-index.js"></script>
</body>
</html>