Now a REAL lib

This commit is contained in:
Justine
2023-01-09 19:23:20 +01:00
parent ef46613c71
commit fe9e6f04f5
19014 changed files with 715877 additions and 264 deletions

View File

@ -0,0 +1,81 @@
<!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="Deserialize an instance of type `T` from an IO stream of JSON."><meta name="keywords" content="rust, rustlang, rust-lang, from_reader"><title>from_reader in serde_json::de - Rust</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="sidebar-items.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 fn"><!--[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">&#9776;</button><a class="sidebar-logo" href="../../serde_json/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="../../serde_json/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In serde_json::de</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../serde_json/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="main-heading"><h1 class="fqn"><span class="in-band">Function <a href="../index.html">serde_json</a>::<wbr><a href="index.html">de</a>::<wbr><a class="fn" href="#">from_reader</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/serde_json/de.rs.html#2516-2522">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn from_reader&lt;R, T&gt;(rdr: R) -&gt; <a class="type" href="../type.Result.html" title="type serde_json::Result">Result</a>&lt;T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/1.64.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../serde/de/trait.DeserializeOwned.html" title="trait serde::de::DeserializeOwned">DeserializeOwned</a>,&nbsp;</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deserialize an instance of type <code>T</code> from an IO stream of JSON.</p>
<p>The content of the IO stream is deserialized directly from the stream
without being buffered in memory by serde_json.</p>
<p>When reading from a source against which short reads are not efficient, such
as a <a href="https://doc.rust-lang.org/std/fs/struct.File.html"><code>File</code></a>, you will want to apply your own buffering because serde_json
will not buffer the input. See <a href="https://doc.rust-lang.org/std/io/struct.BufReader.html"><code>std::io::BufReader</code></a>.</p>
<p>It is expected that the input stream ends after the deserialized object.
If the stream does not end, such as in the case of a persistent socket connection,
this function will not return. It is possible instead to deserialize from a prefix of an input
stream without looking for EOF by managing your own <a href="../struct.Deserializer.html" title="Deserializer"><code>Deserializer</code></a>.</p>
<p>Note that counter to intuition, this function is usually slower than
reading a file completely into memory and then applying <a href="./fn.from_str.html"><code>from_str</code></a>
or <a href="./fn.from_slice.html"><code>from_slice</code></a> on it. See <a href="https://github.com/serde-rs/json/issues/160">issue #160</a>.</p>
<h2 id="example"><a href="#example">Example</a></h2>
<p>Reading the contents of a file.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">serde::Deserialize</span>;
<span class="kw">use</span> <span class="ident">std::error::Error</span>;
<span class="kw">use</span> <span class="ident">std::fs::File</span>;
<span class="kw">use</span> <span class="ident">std::io::BufReader</span>;
<span class="kw">use</span> <span class="ident">std::path::Path</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>, <span class="ident">Debug</span>)]</span>
<span class="kw">struct</span> <span class="ident">User</span> {
<span class="ident">fingerprint</span>: <span class="ident">String</span>,
<span class="ident">location</span>: <span class="ident">String</span>,
}
<span class="kw">fn</span> <span class="ident">read_user_from_file</span><span class="op">&lt;</span><span class="ident">P</span>: <span class="ident">AsRef</span><span class="op">&lt;</span><span class="ident">Path</span><span class="op">&gt;</span><span class="op">&gt;</span>(<span class="ident">path</span>: <span class="ident">P</span>) -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">User</span>, <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">Error</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="comment">// Open the file in read-only mode with buffer.</span>
<span class="kw">let</span> <span class="ident">file</span> <span class="op">=</span> <span class="ident">File::open</span>(<span class="ident">path</span>)<span class="question-mark">?</span>;
<span class="kw">let</span> <span class="ident">reader</span> <span class="op">=</span> <span class="ident">BufReader::new</span>(<span class="ident">file</span>);
<span class="comment">// Read the JSON contents of the file as an instance of `User`.</span>
<span class="kw">let</span> <span class="ident">u</span> <span class="op">=</span> <span class="ident">serde_json::from_reader</span>(<span class="ident">reader</span>)<span class="question-mark">?</span>;
<span class="comment">// Return the `User`.</span>
<span class="prelude-val">Ok</span>(<span class="ident">u</span>)
}
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">u</span> <span class="op">=</span> <span class="ident">read_user_from_file</span>(<span class="string">&quot;test.json&quot;</span>).<span class="ident">unwrap</span>();
<span class="macro">println!</span>(<span class="string">&quot;{:#?}&quot;</span>, <span class="ident">u</span>);
}</code></pre></div>
<p>Reading from a persistent socket connection.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">serde::Deserialize</span>;
<span class="kw">use</span> <span class="ident">std::error::Error</span>;
<span class="kw">use</span> <span class="ident">std::net</span>::{<span class="ident">TcpListener</span>, <span class="ident">TcpStream</span>};
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>, <span class="ident">Debug</span>)]</span>
<span class="kw">struct</span> <span class="ident">User</span> {
<span class="ident">fingerprint</span>: <span class="ident">String</span>,
<span class="ident">location</span>: <span class="ident">String</span>,
}
<span class="kw">fn</span> <span class="ident">read_user_from_stream</span>(<span class="ident">tcp_stream</span>: <span class="ident">TcpStream</span>) -&gt; <span class="prelude-ty">Result</span><span class="op">&lt;</span><span class="ident">User</span>, <span class="ident">Box</span><span class="op">&lt;</span><span class="kw">dyn</span> <span class="ident">Error</span><span class="op">&gt;</span><span class="op">&gt;</span> {
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">de</span> <span class="op">=</span> <span class="ident">serde_json::Deserializer::from_reader</span>(<span class="ident">tcp_stream</span>);
<span class="kw">let</span> <span class="ident">u</span> <span class="op">=</span> <span class="ident">User::deserialize</span>(<span class="kw-2">&amp;mut</span> <span class="ident">de</span>)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(<span class="ident">u</span>)
}
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="kw">let</span> <span class="ident">listener</span> <span class="op">=</span> <span class="ident">TcpListener::bind</span>(<span class="string">&quot;127.0.0.1:4000&quot;</span>).<span class="ident">unwrap</span>();
<span class="kw">for</span> <span class="ident">stream</span> <span class="kw">in</span> <span class="ident">listener</span>.<span class="ident">incoming</span>() {
<span class="macro">println!</span>(<span class="string">&quot;{:#?}&quot;</span>, <span class="ident">read_user_from_stream</span>(<span class="ident">stream</span>.<span class="ident">unwrap</span>()));
}
}</code></pre></div>
<h2 id="errors"><a href="#errors">Errors</a></h2>
<p>This conversion can fail if the structure of the input does not match the
structure expected by <code>T</code>, for example if <code>T</code> is a struct type but the input
contains something other than a JSON map. It can also fail if the structure
is correct but <code>T</code>s implementation of <code>Deserialize</code> decides that something
is wrong with the data, for example required struct fields are missing from
the JSON map or some number is too big to fit in the expected primitive
type.</p>
</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="serde_json" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>

View File

@ -0,0 +1,30 @@
<!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="Deserialize an instance of type `T` from bytes of JSON text."><meta name="keywords" content="rust, rustlang, rust-lang, from_slice"><title>from_slice in serde_json::de - Rust</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="sidebar-items.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 fn"><!--[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">&#9776;</button><a class="sidebar-logo" href="../../serde_json/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="../../serde_json/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In serde_json::de</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../serde_json/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="main-heading"><h1 class="fqn"><span class="in-band">Function <a href="../index.html">serde_json</a>::<wbr><a href="index.html">de</a>::<wbr><a class="fn" href="#">from_slice</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/serde_json/de.rs.html#2559-2564">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn from_slice&lt;'a, T&gt;(v: &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.u8.html">u8</a>]) -&gt; <a class="type" href="../type.Result.html" title="type serde_json::Result">Result</a>&lt;T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'a&gt;,&nbsp;</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deserialize an instance of type <code>T</code> from bytes of JSON text.</p>
<h2 id="example"><a href="#example">Example</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">serde::Deserialize</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>, <span class="ident">Debug</span>)]</span>
<span class="kw">struct</span> <span class="ident">User</span> {
<span class="ident">fingerprint</span>: <span class="ident">String</span>,
<span class="ident">location</span>: <span class="ident">String</span>,
}
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="comment">// The type of `j` is `&amp;[u8]`</span>
<span class="kw">let</span> <span class="ident">j</span> <span class="op">=</span> <span class="string">b&quot;
{
\&quot;fingerprint\&quot;: \&quot;0xF9BA143B95FF6D82\&quot;,
\&quot;location\&quot;: \&quot;Menlo Park, CA\&quot;
}&quot;</span>;
<span class="kw">let</span> <span class="ident">u</span>: <span class="ident">User</span> <span class="op">=</span> <span class="ident">serde_json::from_slice</span>(<span class="ident">j</span>).<span class="ident">unwrap</span>();
<span class="macro">println!</span>(<span class="string">&quot;{:#?}&quot;</span>, <span class="ident">u</span>);
}</code></pre></div>
<h2 id="errors"><a href="#errors">Errors</a></h2>
<p>This conversion can fail if the structure of the input does not match the
structure expected by <code>T</code>, for example if <code>T</code> is a struct type but the input
contains something other than a JSON map. It can also fail if the structure
is correct but <code>T</code>s implementation of <code>Deserialize</code> decides that something
is wrong with the data, for example required struct fields are missing from
the JSON map or some number is too big to fit in the expected primitive
type.</p>
</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="serde_json" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>

View File

@ -0,0 +1,30 @@
<!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="Deserialize an instance of type `T` from a string of JSON text."><meta name="keywords" content="rust, rustlang, rust-lang, from_str"><title>from_str in serde_json::de - Rust</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="sidebar-items.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 fn"><!--[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">&#9776;</button><a class="sidebar-logo" href="../../serde_json/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="../../serde_json/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><div class="sidebar-elems"><h2 class="location"><a href="index.html">In serde_json::de</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../serde_json/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="main-heading"><h1 class="fqn"><span class="in-band">Function <a href="../index.html">serde_json</a>::<wbr><a href="index.html">de</a>::<wbr><a class="fn" href="#">from_str</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/serde_json/de.rs.html#2601-2606">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust fn"><code>pub fn from_str&lt;'a, T&gt;(s: &amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.str.html">str</a>) -&gt; <a class="type" href="../type.Result.html" title="type serde_json::Result">Result</a>&lt;T&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../../serde/de/trait.Deserialize.html" title="trait serde::de::Deserialize">Deserialize</a>&lt;'a&gt;,&nbsp;</span></code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deserialize an instance of type <code>T</code> from a string of JSON text.</p>
<h2 id="example"><a href="#example">Example</a></h2>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use</span> <span class="ident">serde::Deserialize</span>;
<span class="attribute">#[<span class="ident">derive</span>(<span class="ident">Deserialize</span>, <span class="ident">Debug</span>)]</span>
<span class="kw">struct</span> <span class="ident">User</span> {
<span class="ident">fingerprint</span>: <span class="ident">String</span>,
<span class="ident">location</span>: <span class="ident">String</span>,
}
<span class="kw">fn</span> <span class="ident">main</span>() {
<span class="comment">// The type of `j` is `&amp;str`</span>
<span class="kw">let</span> <span class="ident">j</span> <span class="op">=</span> <span class="string">&quot;
{
\&quot;fingerprint\&quot;: \&quot;0xF9BA143B95FF6D82\&quot;,
\&quot;location\&quot;: \&quot;Menlo Park, CA\&quot;
}&quot;</span>;
<span class="kw">let</span> <span class="ident">u</span>: <span class="ident">User</span> <span class="op">=</span> <span class="ident">serde_json::from_str</span>(<span class="ident">j</span>).<span class="ident">unwrap</span>();
<span class="macro">println!</span>(<span class="string">&quot;{:#?}&quot;</span>, <span class="ident">u</span>);
}</code></pre></div>
<h2 id="errors"><a href="#errors">Errors</a></h2>
<p>This conversion can fail if the structure of the input does not match the
structure expected by <code>T</code>, for example if <code>T</code> is a struct type but the input
contains something other than a JSON map. It can also fail if the structure
is correct but <code>T</code>s implementation of <code>Deserialize</code> decides that something
is wrong with the data, for example required struct fields are missing from
the JSON map or some number is too big to fit in the expected primitive
type.</p>
</div></details></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="serde_json" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>

View File

@ -0,0 +1,13 @@
<!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="Deserialize JSON data to a Rust data structure."><meta name="keywords" content="rust, rustlang, rust-lang, de"><title>serde_json::de - Rust</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="../../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 mod"><!--[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">&#9776;</button><a class="sidebar-logo" href="../../serde_json/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="../../serde_json/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Module de</a></h2><div class="sidebar-elems"><section><div class="block"><ul><li><a href="#structs">Structs</a></li><li><a href="#traits">Traits</a></li><li><a href="#functions">Functions</a></li></ul></div></section></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../serde_json/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="main-heading"><h1 class="fqn"><span class="in-band">Module <a href="../index.html">serde_json</a>::<wbr><a class="mod" href="#">de</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/serde_json/de.rs.html#1-2606">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Deserialize JSON data to a Rust data structure.</p>
</div></details><h2 id="structs" class="small-section-header"><a href="#structs">Structs</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.Deserializer.html" title="serde_json::de::Deserializer struct">Deserializer</a></div><div class="item-right docblock-short"><p>A structure that deserializes JSON into Rust values.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.IoRead.html" title="serde_json::de::IoRead struct">IoRead</a></div><div class="item-right docblock-short"><p>JSON input source that reads from a std::io input stream.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.SliceRead.html" title="serde_json::de::SliceRead struct">SliceRead</a></div><div class="item-right docblock-short"><p>JSON input source that reads from a slice of bytes.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.StrRead.html" title="serde_json::de::StrRead struct">StrRead</a></div><div class="item-right docblock-short"><p>JSON input source that reads from a UTF-8 string.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="struct" href="struct.StreamDeserializer.html" title="serde_json::de::StreamDeserializer struct">StreamDeserializer</a></div><div class="item-right docblock-short"><p>Iterator that deserializes a stream into multiple JSON values.</p>
</div></div></div><h2 id="traits" class="small-section-header"><a href="#traits">Traits</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="trait" href="trait.Read.html" title="serde_json::de::Read trait">Read</a></div><div class="item-right docblock-short"><p>Trait used by the deserializer for iterating over input. This is manually
“specialized” for iterating over &amp;<a href="https://doc.rust-lang.org/1.64.0/std/primitive.u8.html" title="u8">u8</a>. Once feature(specialization) is
stable we can use actual specialization.</p>
</div></div></div><h2 id="functions" class="small-section-header"><a href="#functions">Functions</a></h2><div class="item-table"><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.from_reader.html" title="serde_json::de::from_reader fn">from_reader</a></div><div class="item-right docblock-short"><p>Deserialize an instance of type <code>T</code> from an IO stream of JSON.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.from_slice.html" title="serde_json::de::from_slice fn">from_slice</a></div><div class="item-right docblock-short"><p>Deserialize an instance of type <code>T</code> from bytes of JSON text.</p>
</div></div><div class="item-row"><div class="item-left module-item"><a class="fn" href="fn.from_str.html" title="serde_json::de::from_str fn">from_str</a></div><div class="item-right docblock-short"><p>Deserialize an instance of type <code>T</code> from a string of JSON text.</p>
</div></div></div></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="serde_json" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>

View File

@ -0,0 +1 @@
window.SIDEBAR_ITEMS = {"fn":[["from_reader","Deserialize an instance of type `T` from an IO stream of JSON."],["from_slice","Deserialize an instance of type `T` from bytes of JSON text."],["from_str","Deserialize an instance of type `T` from a string of JSON text."]],"struct":[["Deserializer","A structure that deserializes JSON into Rust values."],["IoRead","JSON input source that reads from a std::io input stream."],["SliceRead","JSON input source that reads from a slice of bytes."],["StrRead","JSON input source that reads from a UTF-8 string."],["StreamDeserializer","Iterator that deserializes a stream into multiple JSON values."]],"trait":[["Read","Trait used by the deserializer for iterating over input. This is manually “specialized” for iterating over &[u8]. Once feature(specialization) is stable we can use actual specialization."]]};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
<!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="Trait used by the deserializer for iterating over input. This is manually “specialized” for iterating over &amp;[u8]. Once feature(specialization) is stable we can use actual specialization."><meta name="keywords" content="rust, rustlang, rust-lang, Read"><title>Read in serde_json::de - Rust</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="sidebar-items.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 trait"><!--[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">&#9776;</button><a class="sidebar-logo" href="../../serde_json/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="../../serde_json/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">Read</a></h2><div class="sidebar-elems"><section><div class="block"><h3 class="sidebar-title"><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul><li><a href="#impl-Read%3C%27de%3E-for-%26%27a%20mut%20R">&amp;&#39;a mut R</a></li></ul></div><div class="block"><h3 class="sidebar-title"><a href="#implementors">Implementors</a></h3></div></section><h2 class="location"><a href="index.html">In serde_json::de</a></h2></div></nav><main><div class="width-limiter"><div class="sub-container"><a class="sub-logo-container" href="../../serde_json/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="main-heading"><h1 class="fqn"><span class="in-band">Trait <a href="../index.html">serde_json</a>::<wbr><a href="index.html">de</a>::<wbr><a class="trait" href="#">Read</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></span></h1><span class="out-of-band"><a class="srclink" href="../../src/serde_json/read.rs.html#26-115">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="docblock item-decl"><pre class="rust trait"><code>pub trait Read&lt;'de&gt;: Sealed { }</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Trait used by the deserializer for iterating over input. This is manually
“specialized” for iterating over &amp;<a href="https://doc.rust-lang.org/1.64.0/std/primitive.u8.html" title="u8">u8</a>. Once feature(specialization) is
stable we can use actual specialization.</p>
<p>This trait is sealed and cannot be implemented for types outside of
<code>serde_json</code>.</p>
</div></details><h2 id="foreign-impls" class="small-section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor"></a></h2><section id="impl-Read%3C%27de%3E-for-%26%27a%20mut%20R" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/serde_json/read.rs.html#711-776">source</a></span><a href="#impl-Read%3C%27de%3E-for-%26%27a%20mut%20R" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a, 'de, R&gt; <a class="trait" href="trait.Read.html" title="trait serde_json::de::Read">Read</a>&lt;'de&gt; for <a class="primitive" href="https://doc.rust-lang.org/1.64.0/std/primitive.reference.html">&amp;'a mut </a>R <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="trait.Read.html" title="trait serde_json::de::Read">Read</a>&lt;'de&gt;,&nbsp;</span></h3></section><h2 id="implementors" class="small-section-header">Implementors<a href="#implementors" class="anchor"></a></h2><div class="item-list" id="implementors-list"><section id="impl-Read%3C%27a%3E-for-SliceRead%3C%27a%3E" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/serde_json/read.rs.html#487-613">source</a></span><a href="#impl-Read%3C%27a%3E-for-SliceRead%3C%27a%3E" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a&gt; <a class="trait" href="trait.Read.html" title="trait serde_json::de::Read">Read</a>&lt;'a&gt; for <a class="struct" href="struct.SliceRead.html" title="struct serde_json::de::SliceRead">SliceRead</a>&lt;'a&gt;</h3></section><section id="impl-Read%3C%27a%3E-for-StrRead%3C%27a%3E" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/serde_json/read.rs.html#630-705">source</a></span><a href="#impl-Read%3C%27a%3E-for-StrRead%3C%27a%3E" class="anchor"></a><h3 class="code-header in-band">impl&lt;'a&gt; <a class="trait" href="trait.Read.html" title="trait serde_json::de::Read">Read</a>&lt;'a&gt; for <a class="struct" href="struct.StrRead.html" title="struct serde_json::de::StrRead">StrRead</a>&lt;'a&gt;</h3></section><section id="impl-Read%3C%27de%3E-for-IoRead%3CR%3E" class="impl has-srclink"><span class="rightside"><a class="srclink" href="../../src/serde_json/read.rs.html#245-400">source</a></span><a href="#impl-Read%3C%27de%3E-for-IoRead%3CR%3E" class="anchor"></a><h3 class="code-header in-band">impl&lt;'de, R&gt; <a class="trait" href="trait.Read.html" title="trait serde_json::de::Read">Read</a>&lt;'de&gt; for <a class="struct" href="struct.IoRead.html" title="struct serde_json::de::IoRead">IoRead</a>&lt;R&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;R: <a class="trait" href="https://doc.rust-lang.org/1.64.0/std/io/trait.Read.html" title="trait std::io::Read">Read</a>,&nbsp;</span></h3></section></div><script type="text/javascript" src="../../implementors/serde_json/read/trait.Read.js" data-ignore-extern-crates="" async></script></section></div></main><div id="rustdoc-vars" data-root-path="../../" data-current-crate="serde_json" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.64.0 (a55dd71d5 2022-09-19)" ></div></body></html>