edlang/serde/de/trait.Error.html
2024-03-27 11:12:16 +00:00

80 lines
17 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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="The `Error` trait allows `Deserialize` implementations to create descriptive error messages belonging to the `Deserializer` against which they are currently running."><title>Error in serde::de - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-5bc39a1768837dd0.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="serde" data-themes="" data-resource-suffix="" data-rustdoc-version="1.77.0 (aedd173a2 2024-03-17)" data-channel="1.77.0" data-search-js="search-dd67cee4cfa65049.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-4c98445ec4002617.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-48f368f3872407c8.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-04d5337699b92874.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.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" title="show sidebar"></button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../serde/index.html">serde</a><span class="version">1.0.197</span></h2></div><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.custom">custom</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.duplicate_field">duplicate_field</a></li><li><a href="#method.invalid_length">invalid_length</a></li><li><a href="#method.invalid_type">invalid_type</a></li><li><a href="#method.invalid_value">invalid_value</a></li><li><a href="#method.missing_field">missing_field</a></li><li><a href="#method.unknown_field">unknown_field</a></li><li><a href="#method.unknown_variant">unknown_variant</a></li></ul><h3><a href="#object-safety">Object Safety</a></h3><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In serde::de</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../serde/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">serde</a>::<wbr><a href="index.html">de</a>::<wbr><a class="trait" href="#">Error</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/serde/de/mod.rs.html#301">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait Error: <a class="trait" href="https://doc.rust-lang.org/1.77.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/1.77.0/core/error/trait.Error.html" title="trait core::error::Error">StdError</a> {
// Required method
fn <a href="#tymethod.custom" class="fn">custom</a>&lt;T&gt;(msg: T) -&gt; Self
<span class="where">where T: <a class="trait" href="https://doc.rust-lang.org/1.77.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a></span>;
// Provided methods
fn <a href="#method.invalid_type" class="fn">invalid_type</a>(unexp: <a class="enum" href="enum.Unexpected.html" title="enum serde::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde::de::Expected">Expected</a>) -&gt; Self { ... }
<span class="item-spacer"></span> fn <a href="#method.invalid_value" class="fn">invalid_value</a>(unexp: <a class="enum" href="enum.Unexpected.html" title="enum serde::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde::de::Expected">Expected</a>) -&gt; Self { ... }
<span class="item-spacer"></span> fn <a href="#method.invalid_length" class="fn">invalid_length</a>(len: <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.usize.html">usize</a>, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde::de::Expected">Expected</a>) -&gt; Self { ... }
<span class="item-spacer"></span> fn <a href="#method.unknown_variant" class="fn">unknown_variant</a>(variant: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>]) -&gt; Self { ... }
<span class="item-spacer"></span> fn <a href="#method.unknown_field" class="fn">unknown_field</a>(field: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>]) -&gt; Self { ... }
<span class="item-spacer"></span> fn <a href="#method.missing_field" class="fn">missing_field</a>(field: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>) -&gt; Self { ... }
<span class="item-spacer"></span> fn <a href="#method.duplicate_field" class="fn">duplicate_field</a>(field: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>) -&gt; Self { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>The <code>Error</code> trait allows <code>Deserialize</code> implementations to create descriptive
error messages belonging to the <code>Deserializer</code> against which they are
currently running.</p>
<p>Every <code>Deserializer</code> declares an <code>Error</code> type that encompasses both
general-purpose deserialization errors as well as errors specific to the
particular deserialization format. For example the <code>Error</code> type of
<code>serde_json</code> can represent errors like an invalid JSON escape sequence or an
unterminated string literal, in addition to the error cases that are part of
this trait.</p>
<p>Most deserializers should only need to provide the <code>Error::custom</code> method
and inherit the default behavior for the other methods.</p>
<h2 id="example-implementation"><a class="doc-anchor" href="#example-implementation">§</a>Example implementation</h2>
<p>The <a href="https://serde.rs/data-format.html">example data format</a> presented on the website shows an error
type appropriate for a basic JSON data format.</p>
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.custom" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#tymethod.custom" class="fn">custom</a>&lt;T&gt;(msg: T) -&gt; Self<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.77.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>,</div></h4></section></summary><div class="docblock"><p>Raised when there is general error when deserializing a type.</p>
<p>The message should not be capitalized and should not end with a period.</p>
<div class="example-wrap edition"><a href="#" class="tooltip" title="This example runs with edition 2021"></a><pre class="rust rust-example-rendered"><code><span class="kw">use </span>serde::de::{<span class="self">self</span>, Deserialize, Deserializer};
<span class="kw">impl</span>&lt;<span class="lifetime">'de</span>&gt; Deserialize&lt;<span class="lifetime">'de</span>&gt; <span class="kw">for </span>IpAddr {
<span class="kw">fn </span>deserialize&lt;D&gt;(deserializer: D) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>, D::Error&gt;
<span class="kw">where
</span>D: Deserializer&lt;<span class="lifetime">'de</span>&gt;,
{
<span class="kw">let </span>s = String::deserialize(deserializer)<span class="question-mark">?</span>;
s.parse().map_err(de::Error::custom)
}
}</code></pre></div>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.invalid_type" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.invalid_type" class="fn">invalid_type</a>(unexp: <a class="enum" href="enum.Unexpected.html" title="enum serde::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde::de::Expected">Expected</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when a <code>Deserialize</code> receives a type different from what it was
expecting.</p>
<p>The <code>unexp</code> argument provides information about what type was received.
This is the type that was present in the input file or other source data
of the Deserializer.</p>
<p>The <code>exp</code> argument provides information about what type was being
expected. This is the type that is written in the program.</p>
<p>For example if we try to deserialize a String out of a JSON file
containing an integer, the unexpected type is the integer and the
expected type is the string.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.invalid_value" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.invalid_value" class="fn">invalid_value</a>(unexp: <a class="enum" href="enum.Unexpected.html" title="enum serde::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde::de::Expected">Expected</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when a <code>Deserialize</code> receives a value of the right type but that
is wrong for some other reason.</p>
<p>The <code>unexp</code> argument provides information about what value was received.
This is the value that was present in the input file or other source
data of the Deserializer.</p>
<p>The <code>exp</code> argument provides information about what value was being
expected. This is the type that is written in the program.</p>
<p>For example if we try to deserialize a String out of some binary data
that is not valid UTF-8, the unexpected value is the bytes and the
expected value is a string.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.invalid_length" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.invalid_length" class="fn">invalid_length</a>(len: <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.usize.html">usize</a>, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde::de::Expected">Expected</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when deserializing a sequence or map and the input data contains
too many or too few elements.</p>
<p>The <code>len</code> argument is the number of elements encountered. The sequence
or map may have expected more arguments or fewer arguments.</p>
<p>The <code>exp</code> argument provides information about what data was being
expected. For example <code>exp</code> might say that a tuple of size 6 was
expected.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.unknown_variant" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.unknown_variant" class="fn">unknown_variant</a>(variant: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when a <code>Deserialize</code> enum type received a variant with an
unrecognized name.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.unknown_field" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.unknown_field" class="fn">unknown_field</a>(field: &amp;<a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when a <code>Deserialize</code> struct type received a field with an
unrecognized name.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.missing_field" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.missing_field" class="fn">missing_field</a>(field: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when a <code>Deserialize</code> struct type expected to receive a required
field with a particular name but that field was not present in the
input.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.duplicate_field" class="method"><a class="src rightside" href="../../src/serde/de/mod.rs.html#301">source</a><h4 class="code-header">fn <a href="#method.duplicate_field" class="fn">duplicate_field</a>(field: &amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.77.0/std/primitive.str.html">str</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Raised when a <code>Deserialize</code> struct type received more than one of the
same field.</p>
</div></details></div><h2 id="object-safety" class="section-header">Object Safety<a href="#object-safety" class="anchor">§</a></h2><div class="object-safety-info">This trait is <b>not</b> <a href="https://doc.rust-lang.org/1.77.0/reference/items/traits.html#object-safety">object safe</a>.</div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Error-for-Error" class="impl"><a class="src rightside" href="../../src/serde/de/value.rs.html#60-81">source</a><a href="#impl-Error-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Error.html" title="trait serde::de::Error">Error</a> for <a class="struct" href="value/struct.Error.html" title="struct serde::de::value::Error">Error</a></h3></section></div><script src="../../trait.impl/serde/de/trait.Error.js" async></script></section></div></main></body></html>