difftastic/rustdoc/serde_core/de/trait.Error.html

80 lines
17 KiB
HTML

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!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_core::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-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="serde_core" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.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">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../serde_core/index.html">serde_core</a><span class="version">1.0.228</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_core::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_core/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_core</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_core/de/mod.rs.html#304">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.76.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a> + <a class="trait" href="https://doc.rust-lang.org/1.76.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.76.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_core::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde_core::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_core::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde_core::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.76.0/std/primitive.usize.html">usize</a>, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde_core::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.76.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.76.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.76.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.76.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.76.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.76.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 href="#example-implementation">Example implementation</a></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_core/de/mod.rs.html#304">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.76.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_core/de/mod.rs.html#304">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_core::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde_core::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_core/de/mod.rs.html#304">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_core::de::Unexpected">Unexpected</a>&lt;'_&gt;, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde_core::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_core/de/mod.rs.html#304">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.76.0/std/primitive.usize.html">usize</a>, exp: &amp;dyn <a class="trait" href="trait.Expected.html" title="trait serde_core::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_core/de/mod.rs.html#304">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.76.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.76.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_core/de/mod.rs.html#304">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.76.0/std/primitive.str.html">str</a>, expected: &amp;'static [&amp;'static <a class="primitive" href="https://doc.rust-lang.org/1.76.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_core/de/mod.rs.html#304">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.76.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_core/de/mod.rs.html#304">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.76.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.76.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_core/de/value.rs.html#61-82">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_core::de::Error">Error</a> for <a class="struct" href="value/struct.Error.html" title="struct serde_core::de::value::Error">Error</a></h3></section></div><script src="../../trait.impl/serde_core/de/trait.Error.js" async></script></section></div></main></body></html>