Files
flexiber/syn/struct.Error.html

102 lines
58 KiB
HTML
Raw Normal View History

<!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="Error returned when a Syn parser cannot parse the input tokens."><meta name="keywords" content="rust, rustlang, rust-lang, Error"><title>Error in syn - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-1f7d512b176f0f72.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/SourceSerif4-Bold-124a1ca42af929b6.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-6827029ac823cab7.css" id="mainThemeStyle"><link rel="stylesheet" id="themeStyle" href="../static.files/light-ebce58d0a40c3431.css"><link rel="stylesheet" disabled href="../static.files/dark-f23faae4a2daf9a6.css"><link rel="stylesheet" disabled href="../static.files/ayu-8af5e100b21cd173.css"><script id="default-settings" ></script><script src="../static.files/storage-d43fa987303ecbbb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-c55e1eb52e1886b4.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-13285aec31fa243e.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 struct"><!--[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="../syn/index.html"><div class="logo-container"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../syn/index.html"><div class="logo-container"><img class="rust-logo" src="../static.files/rust-logo-151179464ae7ed46.svg" alt="logo"></div></a><h2 class="location"><a href="#">Error</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.combine">combine</a></li><li><a href="#method.into_compile_error">into_compile_error</a></li><li><a href="#method.new">new</a></li><li><a href="#method.new_spanned">new_spanned</a></li><li><a href="#method.span">span</a></li><li><a href="#method.to_compile_error">to_compile_error</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-Clone-for-Error">Clone</a></li><li><a href="#impl-Debug-for-Error">Debug</a></li><li><a href="#impl-Display-for-Error">Display</a></li><li><a href="#impl-Error-for-Error">Error</a></li><li><a href="#impl-Extend%3CError%3E-for-Error">Extend&lt;Error&gt;</a></li><li><a href="#impl-From%3CLexError%3E-for-Error">From&lt;LexError&gt;</a></li><li><a href="#impl-IntoIterator-for-%26%27a%20Error">IntoIterator</a></li><li><a href="#impl-IntoIterator-for-Error">IntoIterator</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-Error">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Error">Send</a></li><li><a href="#impl-Sync-for-Error"
<h2 id="error-reporting-in-proc-macros"><a href="#error-reporting-in-proc-macros">Error reporting in proc macros</a></h2>
<p>The correct way to report errors back to the compiler from a procedural
macro is by emitting an appropriately spanned invocation of
<a href="https://doc.rust-lang.org/1.67.0/core/macro.compile_error.html"><code>compile_error!</code></a> in the generated code. This produces a better diagnostic
message than simply panicking the macro.</p>
<p>When parsing macro input, the <a href="macro.parse_macro_input.html"><code>parse_macro_input!</code></a> macro handles the
conversion to <code>compile_error!</code> automatically.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>proc_macro::TokenStream;
<span class="kw">use </span>syn::{parse_macro_input, AttributeArgs, ItemFn};
<span class="attr">#[proc_macro_attribute]
</span><span class="kw">pub fn </span>my_attr(args: TokenStream, input: TokenStream) -&gt; TokenStream {
<span class="kw">let </span>args = <span class="macro">parse_macro_input!</span>(args <span class="kw">as </span>AttributeArgs);
<span class="kw">let </span>input = <span class="macro">parse_macro_input!</span>(input <span class="kw">as </span>ItemFn);
<span class="comment">/* ... */
</span>}</code></pre></div>
<p>For errors that arise later than the initial parsing stage, the
<a href="parse/struct.Error.html#method.to_compile_error"><code>.to_compile_error()</code></a> or <a href="parse/struct.Error.html#method.into_compile_error"><code>.into_compile_error()</code></a> methods can be used to
perform an explicit conversion to <code>compile_error!</code>.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="attr">#[proc_macro_derive(MyDerive)]
</span><span class="kw">pub fn </span>my_derive(input: TokenStream) -&gt; TokenStream {
<span class="kw">let </span>input = <span class="macro">parse_macro_input!</span>(input <span class="kw">as </span>DeriveInput);
<span class="comment">// fn(DeriveInput) -&gt; syn::Result&lt;proc_macro2::TokenStream&gt;
</span>expand::my_derive(input)
.unwrap_or_else(syn::Error::into_compile_error)
.into()
}</code></pre></div>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#105-253">source</a><a href="#impl-Error" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="parse/struct.Error.html" title="struct syn::parse::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#136-148">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>&lt;T:&nbsp;<a class="trait" href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>&gt;(span: <a class="struct" href="../proc_macro2/struct.Span.html" title="struct proc_macro2::Span">Span</a>, message: T) -&gt; Self</h4></section></summary><div class="docblock"><p>Usually the <a href="parse/struct.ParseBuffer.html#method.error"><code>ParseStream::error</code></a> method will be used instead, which
automatically uses the correct span from the current position of the
parse stream.</p>
<p>Use <code>Error::new</code> when the error needs to be triggered on some span other
than where the parse stream is currently positioned.</p>
<h5 id="example"><a href="#example">Example</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>syn::{Error, Ident, LitStr, <span class="prelude-ty">Result</span>, Token};
<span class="kw">use </span>syn::parse::ParseStream;
<span class="comment">// Parses input that looks like `name = &quot;string&quot;` where the key must be
// the identifier `name` and the value may be any string literal.
// Returns the string literal.
</span><span class="kw">fn </span>parse_name(input: ParseStream) -&gt; <span class="prelude-ty">Result</span>&lt;LitStr&gt; {
<span class="kw">let </span>name_token: Ident = input.parse()<span class="question-mark">?</span>;
<span class="kw">if </span>name_token != <span class="string">&quot;name&quot; </span>{
<span class="comment">// Trigger an error not on the current position of the stream,
// but on the position of the unexpected identifier.
</span><span class="kw">return </span><span class="prelude-val">Err</span>(Error::new(name_token.span(), <span class="string">&quot;expected `name`&quot;</span>));
}
input.parse::&lt;<span class="macro">Token!</span>[=]&gt;()<span class="question-mark">?</span>;
<span class="kw">let </span>s: LitStr = input.parse()<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(s)
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new_spanned" class="method has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#164-179">source</a><h4 class="code-header">pub fn <a href="#method.new_spanned" class="fn">new_spanned</a>&lt;T:&nbsp;<a class="trait" href="../quote/to_tokens/trait.ToTokens.html" title="trait quote::to_tokens::ToTokens">ToTokens</a>, U:&nbsp;<a class="trait" href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a>&gt;(tokens: T, message: U) -&gt; Self</h4></section></summary><div class="docblock"><p>Creates an error with the specified message spanning the given syntax
tree node.</p>
<p>Unlike the <code>Error::new</code> constructor, this constructor takes an argument
<code>tokens</code> which is a syntax tree node. This allows the resulting <code>Error</code>
to attempt to span all tokens inside of <code>tokens</code>. While you would
typically be able to use the <code>Spanned</code> trait with the above <code>Error::new</code>
constructor, implementation limitations today mean that
<code>Error::new_spanned</code> may provide a higher-quality error message on
stable Rust.</p>
<p>When in doubt its recommended to stick to <code>Error::new</code> (or
<code>ParseStream::error</code>)!</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.span" class="method has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#186-196">source</a><h4 class="code-header">pub fn <a href="#method.span" class="fn">span</a>(&amp;self) -&gt; <a class="struct" href="../proc_macro2/struct.Span.html" title="struct proc_macro2::Span">Span</a></h4></section></summary><div class="docblock"><p>The source location of the error.</p>
<p>Spans are not thread-safe so this function returns <code>Span::call_site()</code>
if called from a different thread than the one on which the <code>Error</code> was
originally created.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_compile_error" class="method has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#205-210">source</a><h4 class="code-header">pub fn <a href="#method.to_compile_error" class="fn">to_compile_error</a>(&amp;self) -&gt; <a class="struct" href="../proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section></summary><div class="docblock"><p>Render the error as an invocation of <a href="https://doc.rust-lang.org/1.67.0/core/macro.compile_error.html"><code>compile_error!</code></a>.</p>
<p>The <a href="macro.parse_macro_input.html"><code>parse_macro_input!</code></a> macro provides a convenient way to invoke
this method correctly in a procedural macro.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into_compile_error" class="method has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#244-246">source</a><h4 class="code-header">pub fn <a href="#method.into_compile_error" class="fn">into_compile_error</a>(self) -&gt; <a class="struct" href="../proc_macro2/struct.TokenStream.html" title="struct proc_macro2::TokenStream">TokenStream</a></h4></section></summary><div class="docblock"><p>Render the error as an invocation of <a href="https://doc.rust-lang.org/1.67.0/core/macro.compile_error.html"><code>compile_error!</code></a>.</p>
<h5 id="example-1"><a href="#example-1">Example</a></h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>proc_macro::TokenStream;
<span class="kw">use </span>syn::{parse_macro_input, DeriveInput, Error};
<span class="attr">#[proc_macro_derive(MyTrait)]
</span><span class="kw">pub fn </span>derive_my_trait(input: TokenStream) -&gt; TokenStream {
<span class="kw">let </span>input = <span class="macro">parse_macro_input!</span>(input <span class="kw">as </span>DeriveInput);
my_trait::expand(input)
.unwrap_or_else(Error::into_compile_error)
.into()
}
<span class="kw">mod </span>my_trait {
<span class="kw">use </span>proc_macro2::TokenStream;
<span class="kw">use </span>syn::{DeriveInput, <span class="prelude-ty">Result</span>};
<span class="kw">pub</span>(<span class="kw">crate</span>) <span class="kw">fn </span>expand(input: DeriveInput) -&gt; <span class="prelude-ty">Result</span>&lt;TokenStream&gt; {
<span class="comment">/* ... */
</span>}
}</code></pre></div>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.combine" class="method has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#250-252">source</a><h4 class="code-header">pub fn <a href="#method.combine" class="fn">combine</a>(&amp;mut self, another: <a class="struct" href="parse/struct.Error.html" title="struct syn::parse::Error">Error</a>)</h4></section></summary><div class="docblock"><p>Add another error message to self such that when <code>to_compile_error()</code> is
called, both errors will be emitted together.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Clone-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#340-346">source</a><a href="#impl-Clone-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="parse/struct.Error.html" title="struct syn::parse::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#341-345">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; Self</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/1.67.0/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="srclink" href="https://doc.rust-lang.org/1.67.0/src/core/clone.rs.html#132-134">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/1.67.0/std/primitive.reference.html">&amp;</a>Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.67.0/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Debug-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#312-326">source</a><a href="#impl-Debug-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="parse/struct.Error.html" title="struct syn::parse::Error">Error</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#313-325">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, formatter: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.67.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.67.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Display-for-Error" class="impl has-srclink"><a class="srclink rightside" href="../src/syn/error.rs.html#334-338">source</a><a href="#impl-Display-for-Error" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Display.html" title
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-Error" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/1.67.0/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.67.0/core/convert/trait.From.html" title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Provider-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/core/error.rs.html#197">source</a><a href="#impl-Provider-for-Error" class="anchor">§</a><h3 class="code-header">impl&lt;E&gt; <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/any/trait.Provider.html" title="trait core::any::Provider">Provider</a> for E<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;E: <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/error/trait.Error.html" title="trait core::error::Error">Error</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.67.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.provide-1" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/core/error.rs.html#201">source</a><a href="#method.provide-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/core/any/trait.Provider.html#tymethod.provide" class="fn">provide</a>&lt;'a&gt;(&amp;'a self, demand: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.67.0/core/any/struct.Demand.html" title="struct core::any::Demand">Demand</a>&lt;'a&gt;)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>provide_any</code>)</span></div></span><div class='docblock'>Data providers should implement this method to provide <em>all</em> values they are able to
provide by using <code>demand</code>. <a href="https://doc.rust-lang.org/1.67.0/core/any/trait.Provider.html#tymethod.provide">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToOwned-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/alloc/borrow.rs.html#82">source</a><a href="#impl-ToOwned-for-Error" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.67.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.67.0/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/alloc/borrow.rs.html#87">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/1.67.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/alloc/borrow.rs.html#91">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.67.0/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/1.67.0/std/primitive.reference.html">&amp;mut </a>T)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/1.67.0/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-ToString-for-Error" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/alloc/string.rs.html#2526">source</a><a href="#impl-ToString-for-Error" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.67.0/alloc/string/trait.ToString.html" title="trait alloc::string::ToString">ToString</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/1.67.0/core/fmt/trait.Display.html" title="trait core::fmt::Display">Display</a> + ?<a class="trait" href="https://doc.rust-lang.org/1.67.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.to_string" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/1.67.0/src/alloc/string.rs.html#2532">source</a><a href="#method.to_string" class="anchor">§</a><h4 class="code-header">default fn <a href="https://doc.rust-lang.org/1.67.0/alloc/string/trait.ToString.html#tymethod.to_string" cl