Files
GopherGate/target/doc/icu_provider/struct.DataPayload.html
2026-02-26 12:00:21 -05:00

356 lines
80 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="A container for data payloads returned from a data provider."><title>DataPayload in icu_provider - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="icu_provider" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-a410ff4d.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">DataPayload</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../icu_provider/index.html">icu_<wbr>provider</a><span class="version">2.1.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Data<wbr>Payload</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#accessing-the-data" title="Accessing the data">Accessing the data</a></li><li><a href="#mutating-the-data" title="Mutating the data">Mutating the data</a></li><li><a href="#transforming-the-data-to-a-different-type" title="Transforming the data to a different type">Transforming the data to a different type</a></li><li><a href="#cargo-feature-sync" title="Cargo feature: `sync`">Cargo feature: <code>sync</code></a></li><li><a href="#examples" title="Examples">Examples</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.cast" title="cast">cast</a></li><li><a href="#method.cast_ref" title="cast_ref">cast_ref</a></li><li><a href="#method.dynamic_cast" title="dynamic_cast">dynamic_cast</a></li><li><a href="#method.dynamic_cast_mut" title="dynamic_cast_mut">dynamic_cast_mut</a></li><li><a href="#method.from_owned" title="from_owned">from_owned</a></li><li><a href="#method.from_static_buffer" title="from_static_buffer">from_static_buffer</a></li><li><a href="#method.from_static_ref" title="from_static_ref">from_static_ref</a></li><li><a href="#method.from_yoked_buffer" title="from_yoked_buffer">from_yoked_buffer</a></li><li><a href="#method.get" title="get">get</a></li><li><a href="#method.get_static" title="get_static">get_static</a></li><li><a href="#method.map_project" title="map_project">map_project</a></li><li><a href="#method.map_project_cloned" title="map_project_cloned">map_project_cloned</a></li><li><a href="#method.try_map_project" title="try_map_project">try_map_project</a></li><li><a href="#method.try_map_project_cloned" title="try_map_project_cloned">try_map_project_cloned</a></li><li><a href="#method.with_mut" title="with_mut">with_mut</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-DataPayload%3CM%3E" title="Clone">Clone</a></li><li><a href="#impl-Debug-for-DataPayload%3CM%3E" title="Debug">Debug</a></li><li><a href="#impl-Default-for-DataPayload%3CM%3E" title="Default">Default</a></li><li><a href="#impl-Eq-for-DataPayload%3CM%3E" title="Eq">Eq</a></li><li><a href="#impl-PartialEq-for-DataPayload%3CM%3E" title="PartialEq">PartialEq</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-DataPayload%3CM%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-DataPayload%3CM%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-DataPayload%3CM%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-DataPayload%3CM%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-DataPayload%3CM%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-DataPayload%3CM%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-CloneToUninit-for-T" title="CloneToUninit">CloneToUninit</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate icu_<wbr>provider</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">icu_provider</a></div><h1>Struct <span class="struct">Data<wbr>Payload</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/icu_provider/response.rs.html#89">Source</a> </span></div><pre class="rust item-decl"><code>pub struct DataPayload&lt;M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;(<span class="comment">/* private fields */</span>);</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A container for data payloads returned from a data provider.</p>
<p><a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> is built on top of the <a href="../yoke/index.html" title="mod yoke"><code>yoke</code></a> framework, which allows for cheap, zero-copy
operations on data via the use of self-references.</p>
<p>The type of the data stored in <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> is determined by the <a href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker"><code>DynamicDataMarker</code></a> type parameter.</p>
<h3 id="accessing-the-data"><a class="doc-anchor" href="#accessing-the-data">§</a>Accessing the data</h3>
<p>To get a reference to the data inside <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a>, use <a href="struct.DataPayload.html#method.get" title="method icu_provider::DataPayload::get"><code>DataPayload::get()</code></a>. If you need
to store the data for later use, you need to store the <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> itself, since <code>get</code> only
returns a reference with an ephemeral lifetime.</p>
<h3 id="mutating-the-data"><a class="doc-anchor" href="#mutating-the-data">§</a>Mutating the data</h3>
<p>To modify the data stored in a <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a>, use <a href="struct.DataPayload.html#method.with_mut" title="method icu_provider::DataPayload::with_mut"><code>DataPayload::with_mut()</code></a>.</p>
<h3 id="transforming-the-data-to-a-different-type"><a class="doc-anchor" href="#transforming-the-data-to-a-different-type">§</a>Transforming the data to a different type</h3>
<p>To transform a <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> to a different type backed by the same data store (cart), use
<a href="struct.DataPayload.html#method.map_project" title="method icu_provider::DataPayload::map_project"><code>DataPayload::map_project()</code></a> or one of its sister methods.</p>
<h2 id="cargo-feature-sync"><a class="doc-anchor" href="#cargo-feature-sync">§</a>Cargo feature: <code>sync</code></h2>
<p>By default, the payload uses non-concurrent reference counting internally, and hence is neither
<a href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync"><code>Sync</code></a> nor <a href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send"><code>Send</code></a>; if these traits are required, the <code>sync</code> Cargo feature can be enabled.</p>
<h2 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h2>
<p>Basic usage, using the <code>HelloWorldV1</code> marker:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">use </span>std::borrow::Cow;
<span class="kw">let </span>payload = DataPayload::&lt;HelloWorldV1&gt;::from_owned(HelloWorld {
message: Cow::Borrowed(<span class="string">"Demo"</span>),
});
<span class="macro">assert_eq!</span>(<span class="string">"Demo"</span>, payload.get().message);</code></pre></div></div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-DataPayload%3CM%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#359-897">Source</a><a href="#impl-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_owned" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#383-387">Source</a><h4 class="code-header">pub fn <a href="#method.from_owned" class="fn">from_owned</a>(data: M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Convert a fully owned (<code>'static</code>) data struct into a DataPayload.</p>
<p>This constructor creates <code>'static</code> payloads.</p>
<h5 id="examples-1"><a class="doc-anchor" href="#examples-1">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">use </span>std::borrow::Cow;
<span class="kw">let </span>local_struct = HelloWorld {
message: Cow::Owned(<span class="string">"example"</span>.to_owned()),
};
<span class="kw">let </span>payload = DataPayload::&lt;HelloWorldV1&gt;::from_owned(local_struct.clone());
<span class="macro">assert_eq!</span>(payload.get(), <span class="kw-2">&amp;</span>local_struct);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.from_static_ref" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#393-395">Source</a><h4 class="code-header">pub const fn <a href="#method.from_static_ref" class="fn">from_static_ref</a>(data: &amp;'static M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>) -&gt; Self</h4></section></summary><div class="docblock"><p>Construct a <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> from a static reference.</p>
<p>This is mainly used by databake.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_mut" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#430-445">Source</a><h4 class="code-header">pub fn <a href="#method.with_mut" class="fn">with_mut</a>&lt;'a, F&gt;(&amp;'a mut self, f: F)<div class="where">where
F: 'static + for&lt;'b&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;'b mut &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>),
M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="../zerofrom/zero_from/trait.ZeroFrom.html" title="trait zerofrom::zero_from::ZeroFrom">ZeroFrom</a>&lt;'static, M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Mutate the data contained in this DataPayload.</p>
<p>For safety, all mutation operations must take place within a helper function that cannot
borrow data from the surrounding context.</p>
<h5 id="examples-2"><a class="doc-anchor" href="#examples-2">§</a>Examples</h5>
<p>Basic usage:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::HelloWorldV1;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">let </span><span class="kw-2">mut </span>payload = DataPayload::&lt;HelloWorldV1&gt;::from_static_str(<span class="string">"Hello"</span>);
payload.with_mut(|s| s.message.to_mut().push_str(<span class="string">" World"</span>));
<span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, payload.get().message);</code></pre></div>
<p>To transfer data from the context into the data struct, use the <code>move</code> keyword:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::HelloWorldV1;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">let </span><span class="kw-2">mut </span>payload = DataPayload::&lt;HelloWorldV1&gt;::from_static_str(<span class="string">"Hello"</span>);
<span class="kw">let </span>suffix = <span class="string">" World"</span>;
payload.with_mut(<span class="kw">move </span>|s| s.message.to_mut().push_str(suffix));
<span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, payload.get().message);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.get" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#463-468">Source</a><h4 class="code-header">pub fn <a href="#method.get" class="fn">get</a>&lt;'a&gt;(&amp;'a self) -&gt; &amp;'a &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a></h4></section></summary><div class="docblock"><p>Borrows the underlying data.</p>
<p>This function should be used like <code>Deref</code> would normally be used. For more information on
why DataPayload cannot implement <code>Deref</code>, see the <code>yoke</code> crate.</p>
<h5 id="examples-3"><a class="doc-anchor" href="#examples-3">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::HelloWorldV1;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">let </span>payload = DataPayload::&lt;HelloWorldV1&gt;::from_static_str(<span class="string">"Demo"</span>);
<span class="macro">assert_eq!</span>(<span class="string">"Demo"</span>, payload.get().message);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.get_static" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#475-480">Source</a><h4 class="code-header">pub fn <a href="#method.get_static" class="fn">get_static</a>(
&amp;self,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;'static &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'static&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>&gt;</h4></section></summary><div class="docblock"><p>Borrows the underlying data statically if possible.</p>
<p>This will succeed if <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> is constructed with <a href="struct.DataPayload.html#method.from_static_ref" title="associated function icu_provider::DataPayload::from_static_ref"><code>DataPayload::from_static_ref</code></a>, which is used by
baked providers.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.map_project" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#523-540">Source</a><h4 class="code-header">pub fn <a href="#method.map_project" class="fn">map_project</a>&lt;M2, F&gt;(self, f: F) -&gt; <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
F: for&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>, <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a>&lt;&amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.unit.html">()</a>&gt;) -&gt; &lt;M2::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>,
M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="../zerofrom/zero_from/trait.ZeroFrom.html" title="trait zerofrom::zero_from::ZeroFrom">ZeroFrom</a>&lt;'static, M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Maps <code>DataPayload&lt;M&gt;</code> to <code>DataPayload&lt;M2&gt;</code> by projecting it with <a href="../yoke/yoke/struct.Yoke.html#method.map_project" title="method yoke::yoke::Yoke::map_project"><code>Yoke::map_project</code></a>.</p>
<p>This is accomplished by a function that takes <code>M</code>s data type and returns <code>M2</code>s data
type. The function takes a second argument which should be ignored. For more details,
see <a href="../yoke/yoke/struct.Yoke.html#method.map_project" title="method yoke::yoke::Yoke::map_project"><code>Yoke::map_project()</code></a>.</p>
<p>The standard <a href="struct.DataPayload.html#method.map_project" title="method icu_provider::DataPayload::map_project"><code>DataPayload::map_project()</code></a> function moves <code>self</code> and cannot capture any
data from its context. Use one of the sister methods if you need these capabilities:</p>
<ul>
<li><a href="struct.DataPayload.html#method.map_project_cloned" title="method icu_provider::DataPayload::map_project_cloned"><code>DataPayload::map_project_cloned()</code></a> if you dont have ownership of <code>self</code></li>
<li><a href="struct.DataPayload.html#method.try_map_project" title="method icu_provider::DataPayload::try_map_project"><code>DataPayload::try_map_project()</code></a> to bubble up an error</li>
<li><a href="struct.DataPayload.html#method.try_map_project_cloned" title="method icu_provider::DataPayload::try_map_project_cloned"><code>DataPayload::try_map_project_cloned()</code></a> to do both of the above</li>
</ul>
<h5 id="examples-4"><a class="doc-anchor" href="#examples-4">§</a>Examples</h5>
<p>Map from <code>HelloWorld</code> to a <code>Cow&lt;str&gt;</code> containing just the message:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">use </span>std::borrow::Cow;
<span class="comment">// A custom marker type is required when using `map_project`. The DataStruct should be the
// target type, and the Cart should correspond to the type being transformed.
</span><span class="kw">struct </span>HelloWorldV1MessageMarker;
<span class="kw">impl </span>DynamicDataMarker <span class="kw">for </span>HelloWorldV1MessageMarker {
<span class="kw">type </span>DataStruct = Cow&lt;<span class="lifetime">'static</span>, str&gt;;
}
<span class="kw">let </span>p1: DataPayload&lt;HelloWorldV1&gt; = DataPayload::from_owned(HelloWorld {
message: Cow::Borrowed(<span class="string">"Hello World"</span>),
});
<span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, p1.get().message);
<span class="kw">let </span>p2: DataPayload&lt;HelloWorldV1MessageMarker&gt; = p1.map_project(|obj, <span class="kw">_</span>| obj.message);
<span class="comment">// Note: at this point, p1 has been moved.
</span><span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, p2.get());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.map_project_cloned" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#570-590">Source</a><h4 class="code-header">pub fn <a href="#method.map_project_cloned" class="fn">map_project_cloned</a>&lt;'this, M2, F&gt;(&amp;'this self, f: F) -&gt; <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
F: for&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;'this &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>, <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a>&lt;&amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.unit.html">()</a>&gt;) -&gt; &lt;M2::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>,</div></h4></section></summary><div class="docblock"><p>Version of <a href="struct.DataPayload.html#method.map_project" title="method icu_provider::DataPayload::map_project"><code>DataPayload::map_project()</code></a> that borrows <code>self</code> instead of moving <code>self</code>.</p>
<h5 id="examples-5"><a class="doc-anchor" href="#examples-5">§</a>Examples</h5>
<p>Same example as above, but this time, do not move out of <code>p1</code>:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Same imports and definitions as above
</span><span class="kw">let </span>p1: DataPayload&lt;HelloWorldV1&gt; = DataPayload::from_owned(HelloWorld {
message: Cow::Borrowed(<span class="string">"Hello World"</span>),
});
<span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, p1.get().message);
<span class="kw">let </span>p2: DataPayload&lt;HelloWorldV1MessageMarker&gt; =
p1.map_project_cloned(|obj, <span class="kw">_</span>| obj.message.clone());
<span class="comment">// Note: p1 is still valid.
</span><span class="macro">assert_eq!</span>(p1.get().message, <span class="kw-2">*</span>p2.get());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.try_map_project" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#627-644">Source</a><h4 class="code-header">pub fn <a href="#method.try_map_project" class="fn">try_map_project</a>&lt;M2, F, E&gt;(self, f: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;, E&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
F: for&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>, <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a>&lt;&amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.unit.html">()</a>&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&lt;M2::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>, E&gt;,
M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="../zerofrom/zero_from/trait.ZeroFrom.html" title="trait zerofrom::zero_from::ZeroFrom">ZeroFrom</a>&lt;'static, M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Version of <a href="struct.DataPayload.html#method.map_project" title="method icu_provider::DataPayload::map_project"><code>DataPayload::map_project()</code></a> that bubbles up an error from <code>f</code>.</p>
<h5 id="examples-6"><a class="doc-anchor" href="#examples-6">§</a>Examples</h5>
<p>Same example as above, but bubble up an error:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Same imports and definitions as above
</span><span class="kw">let </span>p1: DataPayload&lt;HelloWorldV1&gt; = DataPayload::from_owned(HelloWorld {
message: Cow::Borrowed(<span class="string">"Hello World"</span>),
});
<span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, p1.get().message);
<span class="kw">let </span>string_to_append = <span class="string">"Extra"</span>;
<span class="kw">let </span>p2: DataPayload&lt;HelloWorldV1MessageMarker&gt; =
p1.try_map_project(|<span class="kw-2">mut </span>obj, <span class="kw">_</span>| {
<span class="kw">if </span>obj.message.is_empty() {
<span class="kw">return </span><span class="prelude-val">Err</span>(<span class="string">"Example error"</span>);
}
obj.message.to_mut().push_str(string_to_append);
<span class="prelude-val">Ok</span>(obj.message)
})<span class="question-mark">?</span>;
<span class="macro">assert_eq!</span>(<span class="string">"Hello WorldExtra"</span>, p2.get());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.try_map_project_cloned" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#684-703">Source</a><h4 class="code-header">pub fn <a href="#method.try_map_project_cloned" class="fn">try_map_project_cloned</a>&lt;'this, M2, F, E&gt;(
&amp;'this self,
f: F,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;, E&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
F: for&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.FnOnce.html" title="trait core::ops::function::FnOnce">FnOnce</a>(&amp;'this &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>, <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/marker/struct.PhantomData.html" title="struct core::marker::PhantomData">PhantomData</a>&lt;&amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.unit.html">()</a>&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&lt;M2::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>, E&gt;,</div></h4></section></summary><div class="docblock"><p>Version of <a href="struct.DataPayload.html#method.map_project_cloned" title="method icu_provider::DataPayload::map_project_cloned"><code>DataPayload::map_project_cloned()</code></a> that bubbles up an error from <code>f</code>.</p>
<h5 id="examples-7"><a class="doc-anchor" href="#examples-7">§</a>Examples</h5>
<p>Same example as above, but bubble up an error:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="comment">// Same imports and definitions as above
</span><span class="kw">let </span>p1: DataPayload&lt;HelloWorldV1&gt; = DataPayload::from_owned(HelloWorld {
message: Cow::Borrowed(<span class="string">"Hello World"</span>),
});
<span class="macro">assert_eq!</span>(<span class="string">"Hello World"</span>, p1.get().message);
<span class="kw">let </span>string_to_append = <span class="string">"Extra"</span>;
<span class="kw">let </span>p2: DataPayload&lt;HelloWorldV1MessageMarker&gt; = p1
.try_map_project_cloned(|obj, <span class="kw">_</span>| {
<span class="kw">if </span>obj.message.is_empty() {
<span class="kw">return </span><span class="prelude-val">Err</span>(<span class="string">"Example error"</span>);
}
<span class="kw">let </span><span class="kw-2">mut </span>message = obj.message.clone();
message.to_mut().push_str(string_to_append);
<span class="prelude-val">Ok</span>(message)
})<span class="question-mark">?</span>;
<span class="comment">// Note: p1 is still valid, but the values no longer equal.
</span><span class="macro">assert_ne!</span>(p1.get().message, <span class="kw-2">*</span>p2.get());
<span class="macro">assert_eq!</span>(<span class="string">"Hello WorldExtra"</span>, p2.get());</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.cast" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#730-738">Source</a><h4 class="code-header">pub fn <a href="#method.cast" class="fn">cast</a>&lt;M2&gt;(self) -&gt; <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&lt;DataStruct = M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Convert between two <a href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker"><code>DynamicDataMarker</code></a> types that are compatible with each other
with compile-time type checking.</p>
<p>This happens if they both have the same <a href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="associated type icu_provider::DynamicDataMarker::DataStruct"><code>DynamicDataMarker::DataStruct</code></a> type.</p>
<p>Can be used to erase the marker of a data payload in cases where multiple markers correspond
to the same data struct.</p>
<p>For runtime dynamic casting, use <a href="struct.DataPayload.html#method.dynamic_cast_mut" title="method icu_provider::DataPayload::dynamic_cast_mut"><code>DataPayload::dynamic_cast_mut()</code></a>.</p>
<h5 id="examples-8"><a class="doc-anchor" href="#examples-8">§</a>Examples</h5>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">struct </span>CustomHelloWorldV1;
<span class="kw">impl </span>DynamicDataMarker <span class="kw">for </span>CustomHelloWorldV1 {
<span class="kw">type </span>DataStruct = HelloWorld&lt;<span class="lifetime">'static</span>&gt;;
}
<span class="kw">let </span>hello_world: DataPayload&lt;HelloWorldV1&gt; = <span class="macro">todo!</span>();
<span class="kw">let </span>custom: DataPayload&lt;CustomHelloWorldV1&gt; = hello_world.cast();</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.cast_ref" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#748-754">Source</a><h4 class="code-header">pub fn <a href="#method.cast_ref" class="fn">cast_ref</a>&lt;M2&gt;(&amp;self) -&gt; &amp;<a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&lt;DataStruct = M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>&gt;,</div></h4></section></summary><div class="docblock"><p>Convert between two <a href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker"><code>DynamicDataMarker</code></a> types that are compatible with each other
with compile-time type checking.</p>
<p>This happens if they both have the same <a href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="associated type icu_provider::DynamicDataMarker::DataStruct"><code>DynamicDataMarker::DataStruct</code></a> type.</p>
<p>Can be used to erase the marker of a data payload in cases where multiple markers correspond
to the same data struct.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.dynamic_cast" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#818-832">Source</a><h4 class="code-header">pub fn <a href="#method.dynamic_cast" class="fn">dynamic_cast</a>&lt;M2&gt;(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;, <a class="struct" href="struct.DataError.html" title="struct icu_provider::DataError">DataError</a>&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,</div></h4></section></summary><div class="docblock"><p>Convert a <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> to one of the same type with runtime type checking.</p>
<p>Primarily useful to convert from a generic to a concrete marker type.</p>
<p>If the <code>M2</code> type argument does not match the true marker type, a <code>DataError</code> is returned.</p>
<p>For compile-time static casting, use <a href="struct.DataPayload.html#method.cast" title="method icu_provider::DataPayload::cast"><code>DataPayload::cast()</code></a>.</p>
<h5 id="examples-9"><a class="doc-anchor" href="#examples-9">§</a>Examples</h5>
<p>Short-circuit a data request request based on the marker, returning
a result from a different data provider:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>core::any::TypeId;
<span class="kw">use </span>icu_locale_core::locale;
<span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider_adapters::empty::EmptyDataProvider;
<span class="kw">use </span>std::borrow::Cow;
<span class="kw">struct </span>MyForkingProvider&lt;P0, P1&gt; {
fallback_provider: P0,
hello_world_provider: P1,
}
<span class="kw">impl</span>&lt;M, P0, P1&gt; DataProvider&lt;M&gt; <span class="kw">for </span>MyForkingProvider&lt;P0, P1&gt;
<span class="kw">where
</span>M: DataMarker,
P0: DataProvider&lt;M&gt;,
P1: DataProvider&lt;HelloWorldV1&gt;,
{
<span class="attr">#[inline]
</span><span class="kw">fn </span>load(<span class="kw-2">&amp;</span><span class="self">self</span>, req: DataRequest) -&gt; <span class="prelude-ty">Result</span>&lt;DataResponse&lt;M&gt;, DataError&gt; {
<span class="kw">if </span>TypeId::of::&lt;HelloWorldV1&gt;() == TypeId::of::&lt;M&gt;() {
<span class="kw">let </span>response = DataProvider::&lt;HelloWorldV1&gt;::load(
<span class="kw-2">&amp;</span><span class="self">self</span>.hello_world_provider,
req,
)<span class="question-mark">?</span>;
<span class="prelude-val">Ok</span>(DataResponse {
metadata: response.metadata,
payload: response.payload.dynamic_cast()<span class="question-mark">?</span>,
})
} <span class="kw">else </span>{
<span class="self">self</span>.fallback_provider.load(req)
}
}
}
<span class="kw">let </span>provider = MyForkingProvider {
fallback_provider: EmptyDataProvider::new(),
hello_world_provider: HelloWorldProvider,
};
<span class="kw">let </span>formatter =
HelloWorldFormatter::try_new_unstable(<span class="kw-2">&amp;</span>provider, <span class="macro">locale!</span>(<span class="string">"de"</span>).into())
.unwrap();
<span class="comment">// This succeeds because the data was loaded from HelloWorldProvider
// rather than the empty fallback provider.
</span><span class="macro">assert_eq!</span>(formatter.format_to_string(), <span class="string">"Hallo Welt"</span>);</code></pre></div></div></details><details class="toggle method-toggle" open><summary><section id="method.dynamic_cast_mut" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#886-896">Source</a><h4 class="code-header">pub fn <a href="#method.dynamic_cast_mut" class="fn">dynamic_cast_mut</a>&lt;M2&gt;(
&amp;mut self,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;mut <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M2&gt;, <a class="struct" href="struct.DataError.html" title="struct icu_provider::DataError">DataError</a>&gt;<div class="where">where
M2: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,</div></h4></section></summary><div class="docblock"><p>Convert a mutable reference of a <a href="struct.DataPayload.html" title="struct icu_provider::DataPayload"><code>DataPayload</code></a> to another mutable reference
of the same type with runtime type checking.</p>
<p>Primarily useful to convert from a generic to a concrete marker type.</p>
<p>If the <code>M2</code> type argument does not match the true marker type, a <code>DataError</code> is returned.</p>
<p>For compile-time static casting, use <a href="struct.DataPayload.html#method.cast" title="method icu_provider::DataPayload::cast"><code>DataPayload::cast()</code></a>.</p>
<h5 id="examples-10"><a class="doc-anchor" href="#examples-10">§</a>Examples</h5>
<p>Change the results of a particular request based on marker:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_locale_core::locale;
<span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">struct </span>MyWrapper&lt;P&gt; {
inner: P,
}
<span class="kw">impl</span>&lt;M, P&gt; DataProvider&lt;M&gt; <span class="kw">for </span>MyWrapper&lt;P&gt;
<span class="kw">where
</span>M: DataMarker,
P: DataProvider&lt;M&gt;,
{
<span class="attr">#[inline]
</span><span class="kw">fn </span>load(<span class="kw-2">&amp;</span><span class="self">self</span>, req: DataRequest) -&gt; <span class="prelude-ty">Result</span>&lt;DataResponse&lt;M&gt;, DataError&gt; {
<span class="kw">let </span><span class="kw-2">mut </span>res = <span class="self">self</span>.inner.load(req)<span class="question-mark">?</span>;
<span class="kw">let </span><span class="kw-2">mut </span>cast_result =
res.payload.dynamic_cast_mut::&lt;HelloWorldV1&gt;();
<span class="kw">if let </span><span class="prelude-val">Ok</span>(<span class="kw-2">ref mut </span>concrete_payload) = cast_result {
<span class="comment">// Add an emoji to the hello world message
</span>concrete_payload.with_mut(|data| {
data.message.to_mut().insert_str(<span class="number">0</span>, <span class="string">"✨ "</span>);
});
}
<span class="prelude-val">Ok</span>(res)
}
}
<span class="kw">let </span>provider = MyWrapper {
inner: HelloWorldProvider,
};
<span class="kw">let </span>formatter =
HelloWorldFormatter::try_new_unstable(<span class="kw-2">&amp;</span>provider, <span class="macro">locale!</span>(<span class="string">"de"</span>).into())
.unwrap();
<span class="macro">assert_eq!</span>(formatter.format_to_string(), <span class="string">"✨ Hallo Welt"</span>);</code></pre></div></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-DataPayload%3CBufferMarker%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#899-925">Source</a><a href="#impl-DataPayload%3CBufferMarker%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;<a class="struct" href="buf/struct.BufferMarker.html" title="struct icu_provider::buf::BufferMarker">BufferMarker</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from_yoked_buffer" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#912-917">Source</a><h4 class="code-header">pub fn <a href="#method.from_yoked_buffer" class="fn">from_yoked_buffer</a>(yoke: <a class="struct" href="../yoke/yoke/struct.Yoke.html" title="struct yoke::yoke::Yoke">Yoke</a>&lt;&amp;'static [<a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.u8.html">u8</a>], <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.Cart.html" title="struct icu_provider::Cart">Cart</a>&gt;&gt;) -&gt; Self</h4></section></summary><div class="docblock"><p>Converts a yoked byte buffer into a <code>DataPayload&lt;BufferMarker&gt;</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.from_static_buffer" class="method"><a class="src rightside" href="../src/icu_provider/response.rs.html#920-924">Source</a><h4 class="code-header">pub fn <a href="#method.from_static_buffer" class="fn">from_static_buffer</a>(buffer: &amp;'static [<a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.u8.html">u8</a>]) -&gt; Self</h4></section></summary><div class="docblock"><p>Converts a static byte buffer into a <code>DataPayload&lt;BufferMarker&gt;</code>.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-DataPayload%3CM%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#261-272">Source</a><a href="#impl-Clone-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
for&lt;'a&gt; &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3><div class="docblock"><p>Cloning a DataPayload is generally a cheap operation.
See notes in the <code>Clone</code> impl for <a href="../yoke/yoke/struct.Yoke.html" title="struct yoke::yoke::Yoke"><code>Yoke</code></a>.</p>
</div></section></summary><div class="docblock"><h4 id="examples-11"><a class="doc-anchor" href="#examples-11">§</a>Examples</h4>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>icu_provider::hello_world::<span class="kw-2">*</span>;
<span class="kw">use </span>icu_provider::prelude::<span class="kw-2">*</span>;
<span class="kw">let </span>resp1: DataPayload&lt;HelloWorldV1&gt; = <span class="macro">todo!</span>();
<span class="kw">let </span>resp2 = resp1.clone();</code></pre></div></div><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#266-271">Source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; Self</h4></section></summary><div class='docblock'>Returns a duplicate of the value. <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#245-247">Source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: &amp;Self)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-DataPayload%3CM%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#226-234">Source</a><a href="#impl-Debug-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
for&lt;'a&gt; &amp;'a &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#231-233">Source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.93.1/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.93.1/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.93.1/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Default-for-DataPayload%3CM%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#927-935">Source</a><a href="#impl-Default-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/default/trait.Default.html" title="trait core::default::Default">Default</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/default/trait.Default.html" title="trait core::default::Default">Default</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.default" class="method trait-impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#932-934">Source</a><a href="#method.default" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/default/trait.Default.html#tymethod.default" class="fn">default</a>() -&gt; Self</h4></section></summary><div class='docblock'>Returns the “default value” for a type. <a href="https://doc.rust-lang.org/1.93.1/core/default/trait.Default.html#tymethod.default">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-PartialEq-for-DataPayload%3CM%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#293-301">Source</a><a href="#impl-PartialEq-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
for&lt;'a&gt; &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html" title="trait core::cmp::PartialEq">PartialEq</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.eq" class="method trait-impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#298-300">Source</a><a href="#method.eq" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html#tymethod.eq" class="fn">eq</a>(&amp;self, other: &amp;Self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>self</code> and <code>other</code> values to be equal, and is used by <code>==</code>.</div></details><details class="toggle method-toggle" open><summary><section id="method.ne" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.93.1/src/core/cmp.rs.html#264">Source</a></span><a href="#method.ne" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.PartialEq.html#method.ne" class="fn">ne</a>(&amp;self, other: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.reference.html">&amp;Rhs</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.bool.html">bool</a></h4></section></summary><div class='docblock'>Tests for <code>!=</code>. The default implementation is almost always sufficient,
and should not be overridden without very good reason.</div></details></div></details><section id="impl-Eq-for-DataPayload%3CM%3E" class="impl"><a class="src rightside" href="../src/icu_provider/response.rs.html#317-322">Source</a><a href="#impl-Eq-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
M: <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>,
for&lt;'a&gt; &lt;M::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a> as <a class="trait" href="../yoke/yokeable/trait.Yokeable.html" title="trait yoke::yokeable::Yokeable">Yokeable</a>&lt;'a&gt;&gt;::<a class="associatedtype" href="../yoke/yokeable/trait.Yokeable.html#associatedtype.Output" title="type yoke::yokeable::Yokeable::Output">Output</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/cmp/trait.Eq.html" title="trait core::cmp::Eq">Eq</a>,</div></h3></section></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-DataPayload%3CM%3E" class="impl"><a href="#impl-Freeze-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
&lt;M as <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a>,</div></h3></section><section id="impl-RefUnwindSafe-for-DataPayload%3CM%3E" class="impl"><a href="#impl-RefUnwindSafe-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
&lt;M as <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-DataPayload%3CM%3E" class="impl"><a href="#impl-Send-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
&lt;M as <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-DataPayload%3CM%3E" class="impl"><a href="#impl-Sync-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
&lt;M as <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-DataPayload%3CM%3E" class="impl"><a href="#impl-Unpin-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
&lt;M as <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-DataPayload%3CM%3E" class="impl"><a href="#impl-UnwindSafe-for-DataPayload%3CM%3E" class="anchor">§</a><h3 class="code-header">impl&lt;M&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.DataPayload.html" title="struct icu_provider::DataPayload">DataPayload</a>&lt;M&gt;<div class="where">where
&lt;M as <a class="trait" href="trait.DynamicDataMarker.html" title="trait icu_provider::DynamicDataMarker">DynamicDataMarker</a>&gt;::<a class="associatedtype" href="trait.DynamicDataMarker.html#associatedtype.DataStruct" title="type icu_provider::DynamicDataMarker::DataStruct">DataStruct</a>: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> + <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</div></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/any.rs.html#139">Source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.93.1/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.93.1/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/borrow.rs.html#212">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/borrow.rs.html#214">Source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/borrow.rs.html#221">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-CloneToUninit-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#547">Source</a><a href="#impl-CloneToUninit-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.CloneToUninit.html" title="trait core::clone::CloneToUninit">CloneToUninit</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone_to_uninit" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/clone.rs.html#549">Source</a><a href="#method.clone_to_uninit" class="anchor">§</a><h4 class="code-header">unsafe fn <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit" class="fn">clone_to_uninit</a>(&amp;self, dest: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.pointer.html">*mut </a><a class="primitive" href="https://doc.rust-lang.org/1.93.1/core/primitive.u8.html">u8</a>)</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>clone_to_uninit</code>)</span></div></span><div class='docblock'>Performs copy-assignment from <code>self</code> to <code>dest</code>. <a href="https://doc.rust-lang.org/1.93.1/core/clone/trait.CloneToUninit.html#tymethod.clone_to_uninit">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#785">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#788">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#767-769">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#777">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/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.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#827-829">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#831">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#834">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#811-813">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#815">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#818">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>