/rust/registry/src/index.crates.io-1949cf8c6b5b557f/icu_provider-1.5.0/src/response.rs
Line | Count | Source |
1 | | // This file is part of ICU4X. For terms of use, please see the file |
2 | | // called LICENSE at the top level of the ICU4X source tree |
3 | | // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). |
4 | | |
5 | | use crate::buf::BufferMarker; |
6 | | use crate::error::{DataError, DataErrorKind}; |
7 | | use crate::marker::DataMarker; |
8 | | use crate::request::DataLocale; |
9 | | use alloc::boxed::Box; |
10 | | use core::convert::TryFrom; |
11 | | use core::fmt::Debug; |
12 | | use core::marker::PhantomData; |
13 | | use core::ops::Deref; |
14 | | use yoke::cartable_ptr::CartableOptionPointer; |
15 | | use yoke::trait_hack::YokeTraitHack; |
16 | | use yoke::*; |
17 | | |
18 | | #[cfg(not(feature = "sync"))] |
19 | | use alloc::rc::Rc as SelectedRc; |
20 | | #[cfg(feature = "sync")] |
21 | | use alloc::sync::Arc as SelectedRc; |
22 | | |
23 | | /// A response object containing metadata about the returned data. |
24 | | #[derive(Debug, Clone, PartialEq, Default)] |
25 | | #[non_exhaustive] |
26 | | pub struct DataResponseMetadata { |
27 | | /// The resolved locale of the returned data, if locale fallbacking was performed. |
28 | | pub locale: Option<DataLocale>, |
29 | | /// The format of the buffer for buffer-backed data, if known (for example, JSON). |
30 | | pub buffer_format: Option<crate::buf::BufferFormat>, |
31 | | } |
32 | | |
33 | | /// A container for data payloads returned from a data provider. |
34 | | /// |
35 | | /// [`DataPayload`] is built on top of the [`yoke`] framework, which allows for cheap, zero-copy |
36 | | /// operations on data via the use of self-references. |
37 | | /// |
38 | | /// The type of the data stored in [`DataPayload`] is determined by the [`DataMarker`] type parameter. |
39 | | /// |
40 | | /// ## Accessing the data |
41 | | /// |
42 | | /// To get a reference to the data inside [`DataPayload`], use [`DataPayload::get()`]. If you need |
43 | | /// to store the data for later use, you need to store the [`DataPayload`] itself, since `get` only |
44 | | /// returns a reference with an ephemeral lifetime. |
45 | | /// |
46 | | /// ## Mutating the data |
47 | | /// |
48 | | /// To modify the data stored in a [`DataPayload`], use [`DataPayload::with_mut()`]. |
49 | | /// |
50 | | /// ## Transforming the data to a different type |
51 | | /// |
52 | | /// To transform a [`DataPayload`] to a different type backed by the same data store (cart), use |
53 | | /// [`DataPayload::map_project()`] or one of its sister methods. |
54 | | /// |
55 | | /// # Cargo feature: `sync` |
56 | | /// |
57 | | /// By default, the payload uses non-concurrent reference counting internally, and hence is neither |
58 | | /// [`Sync`] nor [`Send`]; if these traits are required, the `sync` Cargo feature can be enabled. |
59 | | /// |
60 | | /// # Examples |
61 | | /// |
62 | | /// Basic usage, using the `HelloWorldV1Marker` marker: |
63 | | /// |
64 | | /// ``` |
65 | | /// use icu_provider::hello_world::*; |
66 | | /// use icu_provider::prelude::*; |
67 | | /// use std::borrow::Cow; |
68 | | /// |
69 | | /// let payload = DataPayload::<HelloWorldV1Marker>::from_owned(HelloWorldV1 { |
70 | | /// message: Cow::Borrowed("Demo"), |
71 | | /// }); |
72 | | /// |
73 | | /// assert_eq!("Demo", payload.get().message); |
74 | | /// ``` |
75 | | pub struct DataPayload<M: DataMarker>(pub(crate) DataPayloadInner<M>); |
76 | | |
77 | | /// A container for data payloads with storage for something else. |
78 | | /// |
79 | | /// The type parameter `O` is stored as part of the interior enum, leading to |
80 | | /// better stack size optimization. `O` can be as large as the [`DataPayload`] |
81 | | /// minus two words without impacting stack size. |
82 | | /// |
83 | | /// # Examples |
84 | | /// |
85 | | /// Create and use DataPayloadOr: |
86 | | /// |
87 | | /// ``` |
88 | | /// use icu_provider::hello_world::*; |
89 | | /// use icu_provider::prelude::*; |
90 | | /// use icu_provider::DataPayloadOr; |
91 | | /// |
92 | | /// let payload: DataPayload<HelloWorldV1Marker> = HelloWorldProvider |
93 | | /// .load(DataRequest { |
94 | | /// locale: &"de".parse().unwrap(), |
95 | | /// metadata: Default::default(), |
96 | | /// }) |
97 | | /// .expect("Loading should succeed") |
98 | | /// .take_payload() |
99 | | /// .expect("Data should be present"); |
100 | | /// |
101 | | /// let payload_some = |
102 | | /// DataPayloadOr::<HelloWorldV1Marker, ()>::from_payload(payload); |
103 | | /// let payload_none = DataPayloadOr::<HelloWorldV1Marker, ()>::from_other(()); |
104 | | /// |
105 | | /// assert_eq!( |
106 | | /// payload_some.get(), |
107 | | /// Ok(&HelloWorldV1 { |
108 | | /// message: "Hallo Welt".into() |
109 | | /// }) |
110 | | /// ); |
111 | | /// assert_eq!(payload_none.get(), Err(&())); |
112 | | /// ``` |
113 | | /// |
114 | | /// Stack size comparison: |
115 | | /// |
116 | | /// ``` |
117 | | /// use core::mem::size_of; |
118 | | /// use icu_provider::prelude::*; |
119 | | /// use icu_provider::DataPayloadOr; |
120 | | /// |
121 | | /// const W: usize = size_of::<usize>(); |
122 | | /// |
123 | | /// // SampleStruct is 3 words: |
124 | | /// # #[icu_provider::data_struct(SampleStructMarker)] |
125 | | /// # pub struct SampleStruct<'data>(usize, usize, &'data ()); |
126 | | /// assert_eq!(W * 3, size_of::<SampleStruct>()); |
127 | | /// |
128 | | /// // DataPayload adds a word for a total of 4 words: |
129 | | /// assert_eq!(W * 4, size_of::<DataPayload<SampleStructMarker>>()); |
130 | | /// |
131 | | /// // Option<DataPayload> balloons to 5 words: |
132 | | /// assert_eq!(W * 5, size_of::<Option<DataPayload<SampleStructMarker>>>()); |
133 | | /// |
134 | | /// // But, using DataPayloadOr is the same size as DataPayload: |
135 | | /// assert_eq!(W * 4, size_of::<DataPayloadOr<SampleStructMarker, ()>>()); |
136 | | /// |
137 | | /// // The largest optimized Other type is two words smaller than the DataPayload: |
138 | | /// assert_eq!(W * 4, size_of::<DataPayloadOr<SampleStructMarker, [usize; 1]>>()); |
139 | | /// assert_eq!(W * 4, size_of::<DataPayloadOr<SampleStructMarker, [usize; 2]>>()); |
140 | | /// assert_eq!(W * 5, size_of::<DataPayloadOr<SampleStructMarker, [usize; 3]>>()); |
141 | | /// ``` |
142 | | #[doc(hidden)] // TODO(#4467): establish this as an internal API |
143 | | pub struct DataPayloadOr<M: DataMarker, O>(pub(crate) DataPayloadOrInner<M, O>); |
144 | | |
145 | | pub(crate) enum DataPayloadInner<M: DataMarker> { |
146 | | Yoke(Yoke<M::Yokeable, CartableOptionPointer<CartInner>>), |
147 | | StaticRef(&'static M::Yokeable), |
148 | | } |
149 | | |
150 | | pub(crate) enum DataPayloadOrInner<M: DataMarker, O> { |
151 | | Yoke(Yoke<M::Yokeable, CartableOptionPointer<CartInner>>), |
152 | | Inner(DataPayloadOrInnerInner<M, O>), |
153 | | } |
154 | | |
155 | | pub(crate) enum DataPayloadOrInnerInner<M: DataMarker, O> { |
156 | | StaticRef(&'static M::Yokeable), |
157 | | Other(O), |
158 | | } |
159 | | |
160 | | /// The type of the "cart" that is used by [`DataPayload`]. |
161 | | /// |
162 | | /// This type is public but the inner cart type is private. To create a |
163 | | /// [`Yoke`] with this cart, use [`Cart::try_make_yoke`]. Then, convert |
164 | | /// it to a [`DataPayload`] with [`DataPayload::from_yoked_buffer`]. |
165 | | #[derive(Clone, Debug)] |
166 | | #[allow(clippy::redundant_allocation)] // false positive, it's cheaper to wrap an existing Box in an Rc than to reallocate a huge Rc |
167 | | pub struct Cart(CartInner); |
168 | | |
169 | | /// The actual cart type (private typedef). |
170 | | pub(crate) type CartInner = SelectedRc<Box<[u8]>>; |
171 | | |
172 | | impl Deref for Cart { |
173 | | type Target = Box<[u8]>; |
174 | 0 | fn deref(&self) -> &Self::Target { |
175 | 0 | &self.0 |
176 | 0 | } |
177 | | } |
178 | | // Safe because both Rc and Arc are StableDeref, and our impl delegates. |
179 | | unsafe impl stable_deref_trait::StableDeref for Cart {} |
180 | | // Safe because both Rc and Arc are CloneableCart, and our impl delegates. |
181 | | unsafe impl yoke::CloneableCart for Cart {} |
182 | | |
183 | | impl Cart { |
184 | | /// Creates a `Yoke<Y, Option<Cart>>` from owned bytes by applying `f`. |
185 | 0 | pub fn try_make_yoke<Y, F, E>(cart: Box<[u8]>, f: F) -> Result<Yoke<Y, Option<Self>>, E> |
186 | 0 | where |
187 | 0 | for<'a> Y: Yokeable<'a>, |
188 | 0 | F: FnOnce(&[u8]) -> Result<<Y as Yokeable>::Output, E>, |
189 | | { |
190 | 0 | Yoke::try_attach_to_cart(SelectedRc::new(cart), |b| f(b)) |
191 | | // Safe because the cart is only wrapped |
192 | 0 | .map(|yoke| unsafe { yoke.replace_cart(Cart) }) |
193 | 0 | .map(Yoke::wrap_cart_in_option) |
194 | 0 | } |
195 | | |
196 | | /// Helper function to convert `Yoke<Y, Option<Cart>>` to `Yoke<Y, Option<CartInner>>`. |
197 | | #[inline] |
198 | 0 | pub(crate) fn unwrap_cart<Y>(yoke: Yoke<Y, Option<Cart>>) -> Yoke<Y, Option<CartInner>> |
199 | 0 | where |
200 | 0 | for<'a> Y: Yokeable<'a>, |
201 | | { |
202 | | // Safety: `Cart` has one field and we are removing it from the newtype, |
203 | | // and we are preserving it in the new cart, unwrapping it from the newtype. |
204 | 0 | unsafe { yoke.replace_cart(|option_cart| option_cart.map(|cart| cart.0)) } |
205 | 0 | } |
206 | | } |
207 | | |
208 | | impl<M> Debug for DataPayload<M> |
209 | | where |
210 | | M: DataMarker, |
211 | | for<'a> &'a <M::Yokeable as Yokeable<'a>>::Output: Debug, |
212 | | { |
213 | 0 | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { |
214 | 0 | self.get().fmt(f) |
215 | 0 | } |
216 | | } |
217 | | |
218 | | impl<M, O> Debug for DataPayloadOr<M, O> |
219 | | where |
220 | | M: DataMarker, |
221 | | for<'a> &'a <M::Yokeable as Yokeable<'a>>::Output: Debug, |
222 | | O: Debug, |
223 | | { |
224 | 0 | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { |
225 | 0 | self.get() |
226 | 0 | .map(|v| Debug::fmt(&v, f)) |
227 | 0 | .unwrap_or_else(|v| Debug::fmt(v, f)) |
228 | 0 | } |
229 | | } |
230 | | |
231 | | /// Cloning a DataPayload is generally a cheap operation. |
232 | | /// See notes in the `Clone` impl for [`Yoke`]. |
233 | | /// |
234 | | /// # Examples |
235 | | /// |
236 | | /// ```no_run |
237 | | /// use icu_provider::hello_world::*; |
238 | | /// use icu_provider::prelude::*; |
239 | | /// |
240 | | /// let resp1: DataPayload<HelloWorldV1Marker> = todo!(); |
241 | | /// let resp2 = resp1.clone(); |
242 | | /// ``` |
243 | | impl<M> Clone for DataPayload<M> |
244 | | where |
245 | | M: DataMarker, |
246 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: Clone, |
247 | | { |
248 | 0 | fn clone(&self) -> Self { |
249 | 0 | Self(match &self.0 { |
250 | 0 | DataPayloadInner::Yoke(yoke) => DataPayloadInner::Yoke(yoke.clone()), |
251 | 0 | DataPayloadInner::StaticRef(r) => DataPayloadInner::StaticRef(*r), |
252 | | }) |
253 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptWithExtensionsPropertyV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::WeekDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::WeekDataV2Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::JapaneseExtendedErasV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::MetazonePeriodV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalCompositionsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalDecompositionDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalDecompositionTablesV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CompatibilityDecompositionTablesV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::NonRecursiveDecompositionSupplementV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CompatibilityDecompositionSupplementV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::OrListV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::AndListV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::UnitListV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::OrdinalV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::CardinalV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::LineBreakDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::WordBreakDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::SentenceBreakDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::GraphemeClusterBreakDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::DictionaryForWordOnlyAutoV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::DictionaryForWordLineExtendedV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationDataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationJamoV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationMetadataV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationDiacriticsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationReorderingV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationSpecialPrimariesV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_casemap::provider::CaseMapV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_decimal::provider::DecimalSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::Bcp47ToIanaMapV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::IanaToBcp47MapV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::IanaToBcp47MapV2Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::ExemplarCitiesV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::TimeZoneFormatsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneGenericNamesLongV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneGenericNamesShortV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneSpecificNamesLongV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneSpecificNamesShortV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::TimeLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::RocDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::DangiDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::CopticDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::HebrewDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::IndianDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ChineseDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::IslamicDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::PersianDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::BuddhistDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::JapaneseDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::EthiopianDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::GregorianDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::JapaneseExtendedDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_casemap::provider::unfold::CaseMapUnfoldV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::canonicalizer::AliasesV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::canonicalizer::AliasesV2Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::directionality::ScriptDirectionV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsExtendedV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::CollationFallbackSupplementV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::TimeSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::RocDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::DangiDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::CopticDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::HebrewDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::IndianDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::ChineseDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::IslamicDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::PersianDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::BuddhistDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::JapaneseDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::EthiopianDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::GregorianDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::JapaneseExtendedDateSymbolsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::JapaneseErasV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::chinese_based::DangiCacheV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::chinese_based::ChineseCacheV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::islamic::IslamicUmmAlQuraCacheV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::islamic::IslamicObservationalCacheV1Marker> as core::clone::Clone>::clone Unexecuted instantiation: <icu_provider::response::DataPayload<_> as core::clone::Clone>::clone |
254 | | } |
255 | | |
256 | | impl<M, O> Clone for DataPayloadOr<M, O> |
257 | | where |
258 | | M: DataMarker, |
259 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: Clone, |
260 | | O: Clone, |
261 | | { |
262 | 0 | fn clone(&self) -> Self { |
263 | 0 | Self(match &self.0 { |
264 | 0 | DataPayloadOrInner::Yoke(yoke) => DataPayloadOrInner::Yoke(yoke.clone()), |
265 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(r)) => { |
266 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(*r)) |
267 | | } |
268 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o)) => { |
269 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o.clone())) |
270 | | } |
271 | | }) |
272 | 0 | } |
273 | | } |
274 | | |
275 | | impl<M> PartialEq for DataPayload<M> |
276 | | where |
277 | | M: DataMarker, |
278 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: PartialEq, |
279 | | { |
280 | 0 | fn eq(&self, other: &Self) -> bool { |
281 | 0 | YokeTraitHack(self.get()).into_ref() == YokeTraitHack(other.get()).into_ref() |
282 | 0 | } |
283 | | } |
284 | | |
285 | | impl<M, O> PartialEq for DataPayloadOr<M, O> |
286 | | where |
287 | | M: DataMarker, |
288 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: PartialEq, |
289 | | O: Eq, |
290 | | { |
291 | 0 | fn eq(&self, other: &Self) -> bool { |
292 | 0 | match (self.get(), other.get()) { |
293 | 0 | (Ok(x), Ok(y)) => YokeTraitHack(x).into_ref() == YokeTraitHack(y).into_ref(), |
294 | 0 | (Err(x), Err(y)) => x == y, |
295 | 0 | _ => false, |
296 | | } |
297 | 0 | } |
298 | | } |
299 | | |
300 | | impl<M> Eq for DataPayload<M> |
301 | | where |
302 | | M: DataMarker, |
303 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: Eq, |
304 | | { |
305 | | } |
306 | | |
307 | | impl<M, O> Eq for DataPayloadOr<M, O> |
308 | | where |
309 | | M: DataMarker, |
310 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: Eq, |
311 | | O: Eq, |
312 | | { |
313 | | } |
314 | | |
315 | | #[test] |
316 | | fn test_clone_eq() { |
317 | | use crate::hello_world::*; |
318 | | let p1 = DataPayload::<HelloWorldV1Marker>::from_static_str("Demo"); |
319 | | #[allow(clippy::redundant_clone)] |
320 | | let p2 = p1.clone(); |
321 | | assert_eq!(p1, p2); |
322 | | |
323 | | let p1 = DataPayloadOr::<HelloWorldV1Marker, usize>::from_payload(p1); |
324 | | #[allow(clippy::redundant_clone)] |
325 | | let p2 = p1.clone(); |
326 | | assert_eq!(p1, p2); |
327 | | |
328 | | let p3 = DataPayloadOr::<HelloWorldV1Marker, usize>::from_other(555); |
329 | | #[allow(clippy::redundant_clone)] |
330 | | let p4 = p3.clone(); |
331 | | assert_eq!(p3, p4); |
332 | | |
333 | | let p5 = DataPayloadOr::<HelloWorldV1Marker, usize>::from_other(666); |
334 | | assert_ne!(p3, p5); |
335 | | assert_ne!(p4, p5); |
336 | | |
337 | | assert_ne!(p1, p3); |
338 | | assert_ne!(p1, p4); |
339 | | assert_ne!(p1, p5); |
340 | | assert_ne!(p2, p3); |
341 | | assert_ne!(p2, p4); |
342 | | assert_ne!(p2, p5); |
343 | | } |
344 | | |
345 | | impl<M> DataPayload<M> |
346 | | where |
347 | | M: DataMarker, |
348 | | { |
349 | | /// Convert a fully owned (`'static`) data struct into a DataPayload. |
350 | | /// |
351 | | /// This constructor creates `'static` payloads. |
352 | | /// |
353 | | /// # Examples |
354 | | /// |
355 | | /// ``` |
356 | | /// use icu_provider::hello_world::*; |
357 | | /// use icu_provider::prelude::*; |
358 | | /// use std::borrow::Cow; |
359 | | /// |
360 | | /// let local_struct = HelloWorldV1 { |
361 | | /// message: Cow::Owned("example".to_owned()), |
362 | | /// }; |
363 | | /// |
364 | | /// let payload = |
365 | | /// DataPayload::<HelloWorldV1Marker>::from_owned(local_struct.clone()); |
366 | | /// |
367 | | /// assert_eq!(payload.get(), &local_struct); |
368 | | /// ``` |
369 | | #[inline] |
370 | 0 | pub fn from_owned(data: M::Yokeable) -> Self { |
371 | 0 | Self(DataPayloadInner::Yoke( |
372 | 0 | Yoke::new_owned(data).convert_cart_into_option_pointer(), |
373 | 0 | )) |
374 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_decimal::provider::DecimalSymbolsV1Marker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedSetlikeMarker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedUnicodeSetlikeMarker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_provider::hello_world::HelloWorldV1Marker>>::from_owned Unexecuted instantiation: <icu_provider::response::DataPayload<icu_provider::any::AnyMarker>>::from_owned |
375 | | |
376 | | #[doc(hidden)] |
377 | | #[inline] |
378 | 0 | pub const fn from_static_ref(data: &'static M::Yokeable) -> Self { |
379 | 0 | Self(DataPayloadInner::StaticRef(data)) |
380 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::JoiningType>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::SentenceBreak>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::EastAsianWidth>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::HangulSyllableType>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GraphemeClusterBreak>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::IndicSyllabicCategory>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::Script>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::BidiClass>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::LineBreak>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::WordBreak>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::props::ErasedNameToEnumMapV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::canonicalizer::AliasesV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GeneralCategory>>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_casemap::provider::CaseMapV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_casemap::provider::unfold::CaseMapUnfoldV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::LineBreakDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::WordBreakDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::SentenceBreakDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::GraphemeClusterBreakDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::DictionaryForWordOnlyAutoV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::DictionaryForWordLineExtendedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::OrListV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::AndListV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::UnitListV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::ExemplarCitiesV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::TimeZoneFormatsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneGenericNamesLongV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneGenericNamesShortV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneSpecificNamesLongV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneSpecificNamesShortV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::RocDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::DangiDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::CopticDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::HebrewDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::IndianDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ChineseDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::IslamicDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::PersianDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::BuddhistDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::JapaneseDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::EthiopianDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::GregorianDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::JapaneseExtendedDateLengthsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::TimeSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::RocDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::DangiDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::CopticDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::HebrewDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::IndianDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::ChineseDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::IslamicDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::PersianDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::BuddhistDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::JapaneseDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::EthiopianDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::GregorianDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::JapaneseExtendedDateSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::MetazonePeriodV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::Bcp47ToIanaMapV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::IanaToBcp47MapV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::IanaToBcp47MapV2Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::OrdinalV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::CardinalV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_decimal::provider::DecimalSymbolsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationJamoV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationMetadataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationDiacriticsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationReorderingV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationSpecialPrimariesV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalCompositionsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalDecompositionDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalDecompositionTablesV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::Uts46DecompositionSupplementV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CompatibilityDecompositionTablesV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::NonRecursiveDecompositionSupplementV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CompatibilityDecompositionSupplementV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedSetlikeMarker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedUnicodeSetlikeMarker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DashV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::MathV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::AlnumV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BlankV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CasedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PrintV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HyphenV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::XdigitV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdStartV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::RadicalV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExtenderV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HexDigitV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfcInertV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfdInertV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::XidStartV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiClassV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DiacriticV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LineBreakV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LowercaseV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfkcInertV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfkdInertV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::UppercaseV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WordBreakV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::AlphabeticV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BasicEmojiV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DeprecatedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdContinueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SoftDottedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WhiteSpaceV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiControlV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdeographicV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoinControlV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoiningTypeV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::XidContinueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiMirroredV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeBaseV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeLinkV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::AsciiHexDigitV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CaseIgnorableV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CaseSensitiveV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiModifierV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PatternSyntaxV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::QuotationMarkV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceBreakV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EastAsianWidthV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiComponentV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeExtendV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SegmentStarterV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceTerminalV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::UnifiedIdeographV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiModifierBaseV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiPresentationV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdsBinaryOperatorV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PatternWhiteSpaceV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::RegionalIndicatorV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::VariationSelectorV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HangulSyllableTypeV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdsTrinaryOperatorV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::TerminalPunctuationV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiClassNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExtendedPictographicV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeClusterBreakV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LineBreakNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WordBreakNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenCasefoldedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenCasemappedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenLowercasedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenTitlecasedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenUppercasedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IndicSyllabicCategoryV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LogicalOrderExceptionV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NoncharacterCodePointV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersMainV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoiningTypeNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CanonicalCombiningClassV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersIndexV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiClassValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::FullCompositionExclusionV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LineBreakValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceBreakNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WordBreakValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiClassValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenNfkcCasefoldedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DefaultIgnorableCodePointV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EastAsianWidthNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersNumbersV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LineBreakValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WordBreakValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoiningTypeValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PrependedConcatenationMarkV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersAuxiliaryV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoiningTypeValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptWithExtensionsPropertyV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceBreakValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EastAsianWidthValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersPunctuationV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HangulSyllableTypeNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceBreakValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EastAsianWidthValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeClusterBreakNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IndicSyllabicCategoryNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HangulSyllableTypeValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CanonicalCombiningClassNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HangulSyllableTypeValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeClusterBreakValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeClusterBreakValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IndicSyllabicCategoryValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IndicSyllabicCategoryValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CanonicalCombiningClassValueToLongNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CanonicalCombiningClassValueToShortNameV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::names::GeneralCategoryMaskNameToValueV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::bidi_data::BidiAuxiliaryPropertiesV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::WeekDataV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::WeekDataV2Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::JapaneseErasV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::JapaneseExtendedErasV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::chinese_based::DangiCacheV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::chinese_based::ChineseCacheV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::islamic::IslamicUmmAlQuraCacheV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::islamic::IslamicObservationalCacheV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::canonicalizer::AliasesV2Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::directionality::ScriptDirectionV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsExtendedV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::CollationFallbackSupplementV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker>>::from_static_ref Unexecuted instantiation: <icu_provider::response::DataPayload<_>>::from_static_ref |
381 | | |
382 | | /// Convert a DataPayload that was created via [`DataPayload::from_owned()`] back into the |
383 | | /// concrete type used to construct it. |
384 | 0 | pub fn try_unwrap_owned(self) -> Result<M::Yokeable, DataError> { |
385 | 0 | match self.0 { |
386 | 0 | DataPayloadInner::Yoke(yoke) => yoke.try_into_yokeable().ok(), |
387 | 0 | DataPayloadInner::StaticRef(_) => None, |
388 | | } |
389 | 0 | .ok_or(DataErrorKind::InvalidState.with_str_context("try_unwrap_owned")) |
390 | 0 | } |
391 | | |
392 | | /// Mutate the data contained in this DataPayload. |
393 | | /// |
394 | | /// For safety, all mutation operations must take place within a helper function that cannot |
395 | | /// borrow data from the surrounding context. |
396 | | /// |
397 | | /// # Examples |
398 | | /// |
399 | | /// Basic usage: |
400 | | /// |
401 | | /// ``` |
402 | | /// use icu_provider::hello_world::HelloWorldV1Marker; |
403 | | /// use icu_provider::prelude::*; |
404 | | /// |
405 | | /// let mut payload = |
406 | | /// DataPayload::<HelloWorldV1Marker>::from_static_str("Hello"); |
407 | | /// |
408 | | /// payload.with_mut(|s| s.message.to_mut().push_str(" World")); |
409 | | /// |
410 | | /// assert_eq!("Hello World", payload.get().message); |
411 | | /// ``` |
412 | | /// |
413 | | /// To transfer data from the context into the data struct, use the `move` keyword: |
414 | | /// |
415 | | /// ``` |
416 | | /// use icu_provider::hello_world::HelloWorldV1Marker; |
417 | | /// use icu_provider::prelude::*; |
418 | | /// |
419 | | /// let mut payload = |
420 | | /// DataPayload::<HelloWorldV1Marker>::from_static_str("Hello"); |
421 | | /// |
422 | | /// let suffix = " World"; |
423 | | /// payload.with_mut(move |s| s.message.to_mut().push_str(suffix)); |
424 | | /// |
425 | | /// assert_eq!("Hello World", payload.get().message); |
426 | | /// ``` |
427 | 0 | pub fn with_mut<'a, F>(&'a mut self, f: F) |
428 | 0 | where |
429 | 0 | F: 'static + for<'b> FnOnce(&'b mut <M::Yokeable as Yokeable<'a>>::Output), |
430 | 0 | M::Yokeable: zerofrom::ZeroFrom<'static, M::Yokeable>, |
431 | | { |
432 | 0 | if let DataPayloadInner::StaticRef(r) = self.0 { |
433 | 0 | self.0 = DataPayloadInner::Yoke( |
434 | 0 | Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r)) |
435 | 0 | .convert_cart_into_option_pointer(), |
436 | 0 | ); |
437 | 0 | } |
438 | 0 | match &mut self.0 { |
439 | 0 | DataPayloadInner::Yoke(yoke) => yoke.with_mut(f), |
440 | 0 | _ => unreachable!(), |
441 | | } |
442 | 0 | } |
443 | | |
444 | | /// Borrows the underlying data. |
445 | | /// |
446 | | /// This function should be used like `Deref` would normally be used. For more information on |
447 | | /// why DataPayload cannot implement `Deref`, see the `yoke` crate. |
448 | | /// |
449 | | /// # Examples |
450 | | /// |
451 | | /// ``` |
452 | | /// use icu_provider::hello_world::HelloWorldV1Marker; |
453 | | /// use icu_provider::prelude::*; |
454 | | /// |
455 | | /// let payload = DataPayload::<HelloWorldV1Marker>::from_static_str("Demo"); |
456 | | /// |
457 | | /// assert_eq!("Demo", payload.get().message); |
458 | | /// ``` |
459 | | #[inline] |
460 | | #[allow(clippy::needless_lifetimes)] |
461 | 0 | pub fn get<'a>(&'a self) -> &'a <M::Yokeable as Yokeable<'a>>::Output { |
462 | 0 | match &self.0 { |
463 | 0 | DataPayloadInner::Yoke(yoke) => yoke.get(), |
464 | 0 | DataPayloadInner::StaticRef(r) => Yokeable::transform(*r), |
465 | | } |
466 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GeneralCategory>>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::BidiClass>>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<u8>>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<u16>>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::props::ErasedNameToEnumMapV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptWithExtensionsPropertyV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::WeekDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::NonRecursiveDecompositionSupplementV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::ErasedListV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_casemap::provider::unfold::CaseMapUnfoldV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::TimeSymbolsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_casemap::provider::CaseMapV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::LineBreakDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::WordBreakDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::SentenceBreakDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::GraphemeClusterBreakDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::UCharDictionaryBreakDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::ExemplarCitiesV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::TimeZoneFormatsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneGenericNamesLongV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneGenericNamesShortV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneSpecificNamesLongV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::time_zones::MetazoneSpecificNamesShortV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::patterns::GenericPatternV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::MetazonePeriodV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::Bcp47ToIanaMapV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::IanaToBcp47MapV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_timezone::provider::names::IanaToBcp47MapV2Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::ErasedPluralRulesV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_decimal::provider::DecimalSymbolsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationJamoV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationMetadataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationDiacriticsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationReorderingV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_collator::provider::CollationSpecialPrimariesV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalCompositionsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalDecompositionDataV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CanonicalDecompositionTablesV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::Uts46DecompositionSupplementV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CompatibilityDecompositionTablesV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_normalizer::provider::CompatibilityDecompositionSupplementV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedSetlikeMarker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedUnicodeSetlikeMarker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::WeekDataV2Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::JapaneseErasV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::chinese_based::DangiCacheV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::chinese_based::ChineseCacheV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::islamic::IslamicUmmAlQuraCacheV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::islamic::IslamicObservationalCacheV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::canonicalizer::AliasesV2Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::directionality::ScriptDirectionV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsExtendedV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::CollationFallbackSupplementV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker>>::get Unexecuted instantiation: <icu_provider::response::DataPayload<icu_provider::hello_world::HelloWorldV1Marker>>::get |
467 | | |
468 | | /// Maps `DataPayload<M>` to `DataPayload<M2>` by projecting it with [`Yoke::map_project`]. |
469 | | /// |
470 | | /// This is accomplished by a function that takes `M`'s data type and returns `M2`'s data |
471 | | /// type. The function takes a second argument which should be ignored. For more details, |
472 | | /// see [`Yoke::map_project()`]. |
473 | | /// |
474 | | /// The standard [`DataPayload::map_project()`] function moves `self` and cannot capture any |
475 | | /// data from its context. Use one of the sister methods if you need these capabilities: |
476 | | /// |
477 | | /// - [`DataPayload::map_project_cloned()`] if you don't have ownership of `self` |
478 | | /// - [`DataPayload::try_map_project()`] to bubble up an error |
479 | | /// - [`DataPayload::try_map_project_cloned()`] to do both of the above |
480 | | /// |
481 | | /// # Examples |
482 | | /// |
483 | | /// Map from `HelloWorldV1` to a `Cow<str>` containing just the message: |
484 | | /// |
485 | | /// ``` |
486 | | /// use icu_provider::hello_world::*; |
487 | | /// use icu_provider::prelude::*; |
488 | | /// use std::borrow::Cow; |
489 | | /// |
490 | | /// // A custom marker type is required when using `map_project`. The Yokeable should be the |
491 | | /// // target type, and the Cart should correspond to the type being transformed. |
492 | | /// |
493 | | /// struct HelloWorldV1MessageMarker; |
494 | | /// impl DataMarker for HelloWorldV1MessageMarker { |
495 | | /// type Yokeable = Cow<'static, str>; |
496 | | /// } |
497 | | /// |
498 | | /// let p1: DataPayload<HelloWorldV1Marker> = DataPayload::from_owned(HelloWorldV1 { |
499 | | /// message: Cow::Borrowed("Hello World"), |
500 | | /// }); |
501 | | /// |
502 | | /// assert_eq!("Hello World", p1.get().message); |
503 | | /// |
504 | | /// let p2: DataPayload<HelloWorldV1MessageMarker> = p1.map_project(|obj, _| obj.message); |
505 | | /// |
506 | | /// // Note: at this point, p1 has been moved. |
507 | | /// assert_eq!("Hello World", p2.get()); |
508 | | /// ``` |
509 | | #[allow(clippy::type_complexity)] |
510 | 0 | pub fn map_project<M2, F>(self, f: F) -> DataPayload<M2> |
511 | 0 | where |
512 | 0 | M2: DataMarker, |
513 | 0 | F: for<'a> FnOnce( |
514 | 0 | <M::Yokeable as Yokeable<'a>>::Output, |
515 | 0 | PhantomData<&'a ()>, |
516 | 0 | ) -> <M2::Yokeable as Yokeable<'a>>::Output, |
517 | 0 | M::Yokeable: zerofrom::ZeroFrom<'static, M::Yokeable>, |
518 | | { |
519 | | DataPayload(DataPayloadInner::Yoke( |
520 | 0 | match self.0 { |
521 | 0 | DataPayloadInner::Yoke(yoke) => yoke, |
522 | 0 | DataPayloadInner::StaticRef(r) => Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r)) |
523 | 0 | .convert_cart_into_option_pointer(), |
524 | | } |
525 | 0 | .map_project(f), |
526 | | )) |
527 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::map_project::<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker, icu_datetime::provider::date_time::pattern_for_time_length<icu_provider::any::DowncastingAnyProvider<icu_provider_adapters::empty::EmptyDataProvider>>::{closure#0}> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsV1Marker>>::map_project::<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker, <icu_locid_transform::expander::LocaleExpander>::try_new_compat<icu_provider::any::DowncastingAnyProvider<icu_provider_adapters::empty::EmptyDataProvider>>::{closure#1}> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::map_project::<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker, icu_datetime::provider::date_time::pattern_for_time_length<icu_datetime::provider::Baked>::{closure#0}> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker>>::map_project::<icu_datetime::provider::calendar::patterns::GenericPatternV1Marker, icu_datetime::provider::date_time::generic_pattern_for_date_length::{closure#0}> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker>>::map_project::<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker, icu_datetime::provider::date_time::pattern_for_date_length::{closure#0}> Unexecuted instantiation: <icu_provider::response::DataPayload<_>>::map_project::<_, _> |
528 | | |
529 | | /// Version of [`DataPayload::map_project()`] that borrows `self` instead of moving `self`. |
530 | | /// |
531 | | /// # Examples |
532 | | /// |
533 | | /// Same example as above, but this time, do not move out of `p1`: |
534 | | /// |
535 | | /// ``` |
536 | | /// // Same imports and definitions as above |
537 | | /// # use icu_provider::hello_world::*; |
538 | | /// # use icu_provider::prelude::*; |
539 | | /// # use std::borrow::Cow; |
540 | | /// # struct HelloWorldV1MessageMarker; |
541 | | /// # impl DataMarker for HelloWorldV1MessageMarker { |
542 | | /// # type Yokeable = Cow<'static, str>; |
543 | | /// # } |
544 | | /// |
545 | | /// let p1: DataPayload<HelloWorldV1Marker> = |
546 | | /// DataPayload::from_owned(HelloWorldV1 { |
547 | | /// message: Cow::Borrowed("Hello World"), |
548 | | /// }); |
549 | | /// |
550 | | /// assert_eq!("Hello World", p1.get().message); |
551 | | /// |
552 | | /// let p2: DataPayload<HelloWorldV1MessageMarker> = |
553 | | /// p1.map_project_cloned(|obj, _| obj.message.clone()); |
554 | | /// |
555 | | /// // Note: p1 is still valid. |
556 | | /// assert_eq!(p1.get().message, *p2.get()); |
557 | | /// ``` |
558 | | #[allow(clippy::type_complexity)] |
559 | 0 | pub fn map_project_cloned<'this, M2, F>(&'this self, f: F) -> DataPayload<M2> |
560 | 0 | where |
561 | 0 | M2: DataMarker, |
562 | 0 | F: for<'a> FnOnce( |
563 | 0 | &'this <M::Yokeable as Yokeable<'a>>::Output, |
564 | 0 | PhantomData<&'a ()>, |
565 | 0 | ) -> <M2::Yokeable as Yokeable<'a>>::Output, |
566 | | { |
567 | 0 | DataPayload(DataPayloadInner::Yoke(match &self.0 { |
568 | 0 | DataPayloadInner::Yoke(yoke) => yoke.map_project_cloned(f), |
569 | 0 | DataPayloadInner::StaticRef(r) => { |
570 | 0 | let output: <M2::Yokeable as Yokeable<'static>>::Output = |
571 | 0 | f(Yokeable::transform(*r), PhantomData); |
572 | | // Safety: <M2::Yokeable as Yokeable<'static>>::Output is the same type as M2::Yokeable; |
573 | | // we're going from 'static to 'static, however in a generic context it's not |
574 | | // clear to the compiler that that is the case. We have to use the unsafe make API to do this. |
575 | 0 | let yokeable: M2::Yokeable = unsafe { M2::Yokeable::make(output) }; |
576 | 0 | Yoke::new_owned(yokeable).convert_cart_into_option_pointer() |
577 | | } |
578 | | })) |
579 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::expander::LikelySubtagsV1Marker>>::map_project_cloned::<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker, <icu_locid_transform::expander::LocaleExpander>::try_new_compat<icu_provider::any::DowncastingAnyProvider<icu_provider_adapters::empty::EmptyDataProvider>>::{closure#0}> Unexecuted instantiation: <icu_provider::response::DataPayload<_>>::map_project_cloned::<_, _> |
580 | | |
581 | | /// Version of [`DataPayload::map_project()`] that bubbles up an error from `f`. |
582 | | /// |
583 | | /// # Examples |
584 | | /// |
585 | | /// Same example as above, but bubble up an error: |
586 | | /// |
587 | | /// ``` |
588 | | /// // Same imports and definitions as above |
589 | | /// # use icu_provider::hello_world::*; |
590 | | /// # use icu_provider::prelude::*; |
591 | | /// # use std::borrow::Cow; |
592 | | /// # struct HelloWorldV1MessageMarker; |
593 | | /// # impl DataMarker for HelloWorldV1MessageMarker { |
594 | | /// # type Yokeable = Cow<'static, str>; |
595 | | /// # } |
596 | | /// |
597 | | /// let p1: DataPayload<HelloWorldV1Marker> = |
598 | | /// DataPayload::from_owned(HelloWorldV1 { |
599 | | /// message: Cow::Borrowed("Hello World"), |
600 | | /// }); |
601 | | /// |
602 | | /// assert_eq!("Hello World", p1.get().message); |
603 | | /// |
604 | | /// let string_to_append = "Extra"; |
605 | | /// let p2: DataPayload<HelloWorldV1MessageMarker> = |
606 | | /// p1.try_map_project(|mut obj, _| { |
607 | | /// if obj.message.is_empty() { |
608 | | /// return Err("Example error"); |
609 | | /// } |
610 | | /// obj.message.to_mut().push_str(string_to_append); |
611 | | /// Ok(obj.message) |
612 | | /// })?; |
613 | | /// |
614 | | /// assert_eq!("Hello WorldExtra", p2.get()); |
615 | | /// # Ok::<(), &'static str>(()) |
616 | | /// ``` |
617 | | #[allow(clippy::type_complexity)] |
618 | 0 | pub fn try_map_project<M2, F, E>(self, f: F) -> Result<DataPayload<M2>, E> |
619 | 0 | where |
620 | 0 | M2: DataMarker, |
621 | 0 | F: for<'a> FnOnce( |
622 | 0 | <M::Yokeable as Yokeable<'a>>::Output, |
623 | 0 | PhantomData<&'a ()>, |
624 | 0 | ) -> Result<<M2::Yokeable as Yokeable<'a>>::Output, E>, |
625 | 0 | M::Yokeable: zerofrom::ZeroFrom<'static, M::Yokeable>, |
626 | | { |
627 | | Ok(DataPayload(DataPayloadInner::Yoke( |
628 | 0 | match self.0 { |
629 | 0 | DataPayloadInner::Yoke(yoke) => yoke, |
630 | 0 | DataPayloadInner::StaticRef(r) => Yoke::new_owned(zerofrom::ZeroFrom::zero_from(r)) |
631 | 0 | .convert_cart_into_option_pointer(), |
632 | | } |
633 | 0 | .try_map_project(f)?, |
634 | | ))) |
635 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::JoiningType>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::JoiningType>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::SentenceBreak>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::SentenceBreak>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::EastAsianWidth>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::EastAsianWidth>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GeneralCategory>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::GeneralCategory>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::HangulSyllableType>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::HangulSyllableType>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GraphemeClusterBreak>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::GraphemeClusterBreak>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::IndicSyllabicCategory>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::IndicSyllabicCategory>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::Script>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u16>, <icu_properties::maps::CodePointMapData<icu_properties::props::Script>>::try_into_converted<u16>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::BidiClass>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::BidiClass>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::LineBreak>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::LineBreak>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::WordBreak>>>::try_map_project::<icu_properties::maps::ErasedMaplikeMarker<u8>, <icu_properties::maps::CodePointMapData<icu_properties::props::WordBreak>>::try_into_converted<u8>::{closure#0}, zerovec::error::ZeroVecError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker>>::try_map_project::<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker, <icu_datetime::provider::date_time::PatternSelector<icu_provider::any::DowncastingAnyProvider<icu_provider_adapters::empty::EmptyDataProvider>>>::pattern_for_datetime_length::{closure#0}, icu_datetime::provider::date_time::PatternForLengthError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_locid_transform::provider::canonicalizer::AliasesV1Marker>>::try_map_project::<icu_locid_transform::provider::canonicalizer::AliasesV2Marker, <icu_locid_transform::canonicalizer::LocaleCanonicalizer>::try_new_with_expander_compat<icu_provider::any::DowncastingAnyProvider<icu_provider_adapters::empty::EmptyDataProvider>>::{closure#0}, icu_provider::error::DataError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker>>::try_map_project::<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker, <icu_datetime::provider::date_time::PatternSelector<icu_datetime::provider::Baked>>::pattern_for_datetime_length::{closure#0}, icu_datetime::provider::date_time::PatternForLengthError> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker>>::try_map_project::<icu_datetime::provider::calendar::patterns::PatternPluralsFromPatternsV1Marker, <icu_datetime::raw::datetime::DateTimeFormatter>::try_from_date_and_time::{closure#0}, icu_datetime::error::DateTimeError> Unexecuted instantiation: <icu_provider::response::DataPayload<_>>::try_map_project::<_, _, _> |
636 | | |
637 | | /// Version of [`DataPayload::map_project_cloned()`] that bubbles up an error from `f`. |
638 | | /// |
639 | | /// # Examples |
640 | | /// |
641 | | /// Same example as above, but bubble up an error: |
642 | | /// |
643 | | /// ``` |
644 | | /// // Same imports and definitions as above |
645 | | /// # use icu_provider::hello_world::*; |
646 | | /// # use icu_provider::prelude::*; |
647 | | /// # use std::borrow::Cow; |
648 | | /// # struct HelloWorldV1MessageMarker; |
649 | | /// # impl DataMarker for HelloWorldV1MessageMarker { |
650 | | /// # type Yokeable = Cow<'static, str>; |
651 | | /// # } |
652 | | /// |
653 | | /// let p1: DataPayload<HelloWorldV1Marker> = |
654 | | /// DataPayload::from_owned(HelloWorldV1 { |
655 | | /// message: Cow::Borrowed("Hello World"), |
656 | | /// }); |
657 | | /// |
658 | | /// assert_eq!("Hello World", p1.get().message); |
659 | | /// |
660 | | /// let string_to_append = "Extra"; |
661 | | /// let p2: DataPayload<HelloWorldV1MessageMarker> = p1 |
662 | | /// .try_map_project_cloned(|obj, _| { |
663 | | /// if obj.message.is_empty() { |
664 | | /// return Err("Example error"); |
665 | | /// } |
666 | | /// let mut message = obj.message.clone(); |
667 | | /// message.to_mut().push_str(string_to_append); |
668 | | /// Ok(message) |
669 | | /// })?; |
670 | | /// |
671 | | /// // Note: p1 is still valid, but the values no longer equal. |
672 | | /// assert_ne!(p1.get().message, *p2.get()); |
673 | | /// assert_eq!("Hello WorldExtra", p2.get()); |
674 | | /// # Ok::<(), &'static str>(()) |
675 | | /// ``` |
676 | | #[allow(clippy::type_complexity)] |
677 | 0 | pub fn try_map_project_cloned<'this, M2, F, E>(&'this self, f: F) -> Result<DataPayload<M2>, E> |
678 | 0 | where |
679 | 0 | M2: DataMarker, |
680 | 0 | F: for<'a> FnOnce( |
681 | 0 | &'this <M::Yokeable as Yokeable<'a>>::Output, |
682 | 0 | PhantomData<&'a ()>, |
683 | 0 | ) -> Result<<M2::Yokeable as Yokeable<'a>>::Output, E>, |
684 | | { |
685 | 0 | Ok(DataPayload(DataPayloadInner::Yoke(match &self.0 { |
686 | 0 | DataPayloadInner::Yoke(yoke) => yoke.try_map_project_cloned(f)?, |
687 | 0 | DataPayloadInner::StaticRef(r) => { |
688 | 0 | let output: <M2::Yokeable as Yokeable<'static>>::Output = |
689 | 0 | f(Yokeable::transform(*r), PhantomData)?; |
690 | | // Safety: <M2::Yokeable as Yokeable<'static>>::Output is the same type as M2::Yokeable |
691 | 0 | Yoke::new_owned(unsafe { M2::Yokeable::make(output) }) |
692 | 0 | .convert_cart_into_option_pointer() |
693 | | } |
694 | | }))) |
695 | 0 | } |
696 | | |
697 | | /// Convert between two [`DataMarker`] types that are compatible with each other |
698 | | /// with compile-time type checking. |
699 | | /// |
700 | | /// This happens if they both have the same [`DataMarker::Yokeable`] type. |
701 | | /// |
702 | | /// Can be used to erase the key of a data payload in cases where multiple keys correspond |
703 | | /// to the same data struct. |
704 | | /// |
705 | | /// For runtime dynamic casting, use [`DataPayload::dynamic_cast_mut()`]. |
706 | | /// |
707 | | /// # Examples |
708 | | /// |
709 | | /// ```no_run |
710 | | /// use icu_provider::hello_world::*; |
711 | | /// use icu_provider::prelude::*; |
712 | | /// |
713 | | /// struct CustomHelloWorldV1Marker; |
714 | | /// impl DataMarker for CustomHelloWorldV1Marker { |
715 | | /// type Yokeable = HelloWorldV1<'static>; |
716 | | /// } |
717 | | /// |
718 | | /// let hello_world: DataPayload<HelloWorldV1Marker> = todo!(); |
719 | | /// let custom: DataPayload<CustomHelloWorldV1Marker> = hello_world.cast(); |
720 | | /// ``` |
721 | | #[inline] |
722 | 0 | pub fn cast<M2>(self) -> DataPayload<M2> |
723 | 0 | where |
724 | 0 | M2: DataMarker<Yokeable = M::Yokeable>, |
725 | | { |
726 | 0 | DataPayload(match self.0 { |
727 | 0 | DataPayloadInner::Yoke(yoke) => DataPayloadInner::Yoke(yoke), |
728 | 0 | DataPayloadInner::StaticRef(r) => DataPayloadInner::StaticRef(r), |
729 | | }) |
730 | 0 | } Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<u8>>>::cast::<icu_properties::maps::ErasedMaplikeMarker<u8>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::maps::ErasedMaplikeMarker<u16>>>::cast::<icu_properties::maps::ErasedMaplikeMarker<u16>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::props::ErasedNameToEnumMapV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DashV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::MathV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::AlnumV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BlankV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CasedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PrintV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HyphenV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::Script>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::XdigitV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdStartV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::RadicalV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExtenderV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HexDigitV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfcInertV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfdInertV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::XidStartV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiClassV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::BidiClass>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DiacriticV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LineBreakV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::LineBreak>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LowercaseV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfkcInertV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NfkdInertV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::UppercaseV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WordBreakV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::WordBreak>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::AlphabeticV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BasicEmojiV1Marker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DeprecatedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdContinueV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SoftDottedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WhiteSpaceV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiControlV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdeographicV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoinControlV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::JoiningTypeV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::JoiningType>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::XidContinueV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiMirroredV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeBaseV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeLinkV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::AsciiHexDigitV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CaseIgnorableV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::CaseSensitiveV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiModifierV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PatternSyntaxV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::QuotationMarkV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceBreakV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::SentenceBreak>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EastAsianWidthV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::EastAsianWidth>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiComponentV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeExtendV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SegmentStarterV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GeneralCategory>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceTerminalV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::UnifiedIdeographV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiModifierBaseV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EmojiPresentationV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdsBinaryOperatorV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PatternWhiteSpaceV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::RegionalIndicatorV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ScriptNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::VariationSelectorV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HangulSyllableTypeV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::HangulSyllableType>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IdsTrinaryOperatorV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::TerminalPunctuationV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::BidiClassNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExtendedPictographicV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeClusterBreakV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::GraphemeClusterBreak>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LineBreakNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::WordBreakNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenCasefoldedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenCasemappedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenLowercasedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenTitlecasedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenUppercasedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IndicSyllabicCategoryV1Marker>>::cast::<icu_properties::maps::ErasedMaplikeMarker<icu_properties::props::IndicSyllabicCategory>> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::LogicalOrderExceptionV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::NoncharacterCodePointV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::FullCompositionExclusionV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::SentenceBreakNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ChangesWhenNfkcCasefoldedV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::DefaultIgnorableCodePointV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::EastAsianWidthNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GeneralCategoryNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::PrependedConcatenationMarkV1Marker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::HangulSyllableTypeNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::GraphemeClusterBreakNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::IndicSyllabicCategoryNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_calendar::provider::JapaneseExtendedErasV1Marker>>::cast::<icu_calendar::provider::JapaneseErasV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::names::GeneralCategoryMaskNameToValueV1Marker>>::cast::<icu_properties::props::ErasedNameToEnumMapV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::DictionaryForWordOnlyAutoV1Marker>>::cast::<icu_segmenter::provider::UCharDictionaryBreakDataV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::DictionaryForWordLineExtendedV1Marker>>::cast::<icu_segmenter::provider::UCharDictionaryBreakDataV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker>>::cast::<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::OrListV1Marker>>::cast::<icu_list::provider::ErasedListV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::AndListV1Marker>>::cast::<icu_list::provider::ErasedListV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_list::provider::UnitListV1Marker>>::cast::<icu_list::provider::ErasedListV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::RocDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::DangiDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::CopticDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::HebrewDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::IndianDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::ChineseDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::IslamicDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::PersianDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::BuddhistDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::JapaneseDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::EthiopianDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::GregorianDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::JapaneseExtendedDateLengthsV1Marker>>::cast::<icu_datetime::provider::calendar::ErasedDateLengthsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::RocDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::DangiDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::CopticDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::HebrewDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::IndianDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::ChineseDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::IslamicDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::PersianDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::BuddhistDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::JapaneseDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::EthiopianDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::GregorianDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_datetime::provider::calendar::symbols::JapaneseExtendedDateSymbolsV1Marker>>::cast::<icu_datetime::provider::calendar::symbols::ErasedDateSymbolsV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::OrdinalV1Marker>>::cast::<icu_plurals::provider::ErasedPluralRulesV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_plurals::provider::CardinalV1Marker>>::cast::<icu_plurals::provider::ErasedPluralRulesV1Marker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedSetlikeMarker>>::cast::<icu_properties::sets::ErasedSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::sets::ErasedUnicodeSetlikeMarker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersMainV1Marker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersIndexV1Marker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersNumbersV1Marker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersAuxiliaryV1Marker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<icu_properties::provider::ExemplarCharactersPunctuationV1Marker>>::cast::<icu_properties::sets::ErasedUnicodeSetlikeMarker> Unexecuted instantiation: <icu_provider::response::DataPayload<_>>::cast::<_> |
731 | | |
732 | | /// Convert a mutable reference of a [`DataPayload`] to another mutable reference |
733 | | /// of the same type with runtime type checking. |
734 | | /// |
735 | | /// Primarily useful to convert from a generic to a concrete marker type. |
736 | | /// |
737 | | /// If the `M2` type argument does not match the true marker type, a `DataError` is returned. |
738 | | /// |
739 | | /// For compile-time static casting, use [`DataPayload::cast()`]. |
740 | | /// |
741 | | /// # Examples |
742 | | /// |
743 | | /// Change the results of a particular request based on key: |
744 | | /// |
745 | | /// ``` |
746 | | /// use icu_locid::locale; |
747 | | /// use icu_provider::hello_world::*; |
748 | | /// use icu_provider::prelude::*; |
749 | | /// |
750 | | /// struct MyWrapper<P> { |
751 | | /// inner: P, |
752 | | /// } |
753 | | /// |
754 | | /// impl<M, P> DataProvider<M> for MyWrapper<P> |
755 | | /// where |
756 | | /// M: KeyedDataMarker, |
757 | | /// P: DataProvider<M>, |
758 | | /// { |
759 | | /// #[inline] |
760 | | /// fn load(&self, req: DataRequest) -> Result<DataResponse<M>, DataError> { |
761 | | /// let mut res = self.inner.load(req)?; |
762 | | /// if let Some(ref mut generic_payload) = res.payload { |
763 | | /// let mut cast_result = |
764 | | /// generic_payload.dynamic_cast_mut::<HelloWorldV1Marker>(); |
765 | | /// if let Ok(ref mut concrete_payload) = cast_result { |
766 | | /// // Add an emoji to the hello world message |
767 | | /// concrete_payload.with_mut(|data| { |
768 | | /// data.message.to_mut().insert_str(0, "✨ "); |
769 | | /// }); |
770 | | /// } |
771 | | /// } |
772 | | /// Ok(res) |
773 | | /// } |
774 | | /// } |
775 | | /// |
776 | | /// let provider = MyWrapper { |
777 | | /// inner: HelloWorldProvider, |
778 | | /// }; |
779 | | /// let formatter = |
780 | | /// HelloWorldFormatter::try_new_unstable(&provider, &locale!("de").into()) |
781 | | /// .unwrap(); |
782 | | /// |
783 | | /// assert_eq!(formatter.format_to_string(), "✨ Hallo Welt"); |
784 | | /// ``` |
785 | | #[inline] |
786 | 0 | pub fn dynamic_cast_mut<M2>(&mut self) -> Result<&mut DataPayload<M2>, DataError> |
787 | 0 | where |
788 | 0 | M2: DataMarker, |
789 | | { |
790 | 0 | let this: &mut dyn core::any::Any = self; |
791 | 0 | if let Some(this) = this.downcast_mut() { |
792 | 0 | Ok(this) |
793 | | } else { |
794 | 0 | Err(DataError::for_type::<M2>().with_str_context(core::any::type_name::<M>())) |
795 | | } |
796 | 0 | } |
797 | | } |
798 | | |
799 | | impl DataPayload<BufferMarker> { |
800 | | /// Converts an owned byte buffer into a `DataPayload<BufferMarker>`. |
801 | 0 | pub fn from_owned_buffer(buffer: Box<[u8]>) -> Self { |
802 | 0 | let yoke = Yoke::attach_to_cart(SelectedRc::new(buffer), |b| &**b) |
803 | 0 | .wrap_cart_in_option() |
804 | 0 | .convert_cart_into_option_pointer(); |
805 | 0 | Self(DataPayloadInner::Yoke(yoke)) |
806 | 0 | } |
807 | | |
808 | | /// Converts a yoked byte buffer into a `DataPayload<BufferMarker>`. |
809 | 0 | pub fn from_yoked_buffer(yoke: Yoke<&'static [u8], Option<Cart>>) -> Self { |
810 | 0 | let yoke = Cart::unwrap_cart(yoke); |
811 | 0 | Self(DataPayloadInner::Yoke( |
812 | 0 | yoke.convert_cart_into_option_pointer(), |
813 | 0 | )) |
814 | 0 | } |
815 | | |
816 | | /// Converts a static byte buffer into a `DataPayload<BufferMarker>`. |
817 | 0 | pub fn from_static_buffer(buffer: &'static [u8]) -> Self { |
818 | 0 | Self(DataPayloadInner::Yoke( |
819 | 0 | Yoke::new_owned(buffer).convert_cart_into_option_pointer(), |
820 | 0 | )) |
821 | 0 | } |
822 | | } |
823 | | |
824 | | impl<M> Default for DataPayload<M> |
825 | | where |
826 | | M: DataMarker, |
827 | | M::Yokeable: Default, |
828 | | { |
829 | 0 | fn default() -> Self { |
830 | 0 | Self::from_owned(Default::default()) |
831 | 0 | } |
832 | | } |
833 | | |
834 | | impl<M, O> DataPayloadOr<M, O> |
835 | | where |
836 | | M: DataMarker, |
837 | | { |
838 | | /// Creates a [`DataPayloadOr`] from a [`DataPayload`]. |
839 | | #[inline] |
840 | 0 | pub fn from_payload(payload: DataPayload<M>) -> Self { |
841 | 0 | match payload.0 { |
842 | 0 | DataPayloadInner::Yoke(yoke) => Self(DataPayloadOrInner::Yoke(yoke)), |
843 | 0 | DataPayloadInner::StaticRef(r) => Self(DataPayloadOrInner::Inner( |
844 | 0 | DataPayloadOrInnerInner::StaticRef(r), |
845 | 0 | )), |
846 | | } |
847 | 0 | } |
848 | | |
849 | | /// Creates a [`DataPayloadOr`] from the other type `O`. |
850 | | #[inline] |
851 | 0 | pub fn from_other(other: O) -> Self { |
852 | 0 | Self(DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other( |
853 | 0 | other, |
854 | 0 | ))) |
855 | 0 | } |
856 | | |
857 | | /// Gets the value from this [`DataPayload`] as `Ok` or the other type as `Err`. |
858 | | #[allow(clippy::needless_lifetimes)] |
859 | | #[inline] |
860 | 0 | pub fn get<'a>(&'a self) -> Result<&'a <M::Yokeable as Yokeable<'a>>::Output, &'a O> { |
861 | 0 | match &self.0 { |
862 | 0 | DataPayloadOrInner::Yoke(yoke) => Ok(yoke.get()), |
863 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(r)) => { |
864 | 0 | Ok(Yokeable::transform(*r)) |
865 | | } |
866 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o)) => Err(o), |
867 | | } |
868 | 0 | } |
869 | | |
870 | | /// Consumes this [`DataPayloadOr`], returning either the wrapped |
871 | | /// [`DataPayload`] or the other type. |
872 | | #[inline] |
873 | 0 | pub fn into_inner(self) -> Result<DataPayload<M>, O> { |
874 | 0 | match self.0 { |
875 | 0 | DataPayloadOrInner::Yoke(yoke) => Ok(DataPayload(DataPayloadInner::Yoke(yoke))), |
876 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::StaticRef(r)) => { |
877 | 0 | Ok(DataPayload(DataPayloadInner::StaticRef(r))) |
878 | | } |
879 | 0 | DataPayloadOrInner::Inner(DataPayloadOrInnerInner::Other(o)) => Err(o), |
880 | | } |
881 | 0 | } |
882 | | } |
883 | | |
884 | | /// A response object containing an object as payload and metadata about it. |
885 | | #[allow(clippy::exhaustive_structs)] // this type is stable |
886 | | pub struct DataResponse<M> |
887 | | where |
888 | | M: DataMarker, |
889 | | { |
890 | | /// Metadata about the returned object. |
891 | | pub metadata: DataResponseMetadata, |
892 | | |
893 | | /// The object itself; `None` if it was not loaded. |
894 | | pub payload: Option<DataPayload<M>>, |
895 | | } |
896 | | |
897 | | impl<M> DataResponse<M> |
898 | | where |
899 | | M: DataMarker, |
900 | | { |
901 | | /// Takes ownership of the underlying payload. Error if not present. |
902 | | /// |
903 | | /// To take the metadata, too, use [`Self::take_metadata_and_payload()`]. |
904 | | #[inline] |
905 | 0 | pub fn take_payload(self) -> Result<DataPayload<M>, DataError> { |
906 | 0 | Ok(self.take_metadata_and_payload()?.1) |
907 | 0 | } Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DashV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::MathV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AlnumV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BlankV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CasedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PrintV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HyphenV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XdigitV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdStartV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::RadicalV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExtenderV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HexDigitV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfcInertV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfdInertV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XidStartV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiClassV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DiacriticV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LineBreakV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LowercaseV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfkcInertV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfkdInertV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::UppercaseV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WordBreakV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AlphabeticV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BasicEmojiV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DeprecatedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdContinueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SoftDottedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WhiteSpaceV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiControlV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdeographicV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::JoinControlV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::JoiningTypeV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XidContinueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiMirroredV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeBaseV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeLinkV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AsciiHexDigitV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CaseIgnorableV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CaseSensitiveV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiModifierV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PatternSyntaxV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::QuotationMarkV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceBreakV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EastAsianWidthV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiComponentV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeExtendV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SegmentStarterV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GeneralCategoryV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceTerminalV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::UnifiedIdeographV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiModifierBaseV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiPresentationV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdsBinaryOperatorV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PatternWhiteSpaceV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::RegionalIndicatorV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::VariationSelectorV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HangulSyllableTypeV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdsTrinaryOperatorV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::TerminalPunctuationV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiClassNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExtendedPictographicV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeClusterBreakV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LineBreakNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WordBreakNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenCasefoldedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenCasemappedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenLowercasedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenTitlecasedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenUppercasedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IndicSyllabicCategoryV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LogicalOrderExceptionV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NoncharacterCodePointV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::FullCompositionExclusionV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceBreakNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenNfkcCasefoldedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DefaultIgnorableCodePointV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EastAsianWidthNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GeneralCategoryNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PrependedConcatenationMarkV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptWithExtensionsPropertyV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HangulSyllableTypeNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeClusterBreakNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IndicSyllabicCategoryNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::WeekDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::JapaneseErasV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::JapaneseExtendedErasV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::MetazonePeriodV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalCompositionsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalDecompositionDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalDecompositionTablesV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CompatibilityDecompositionTablesV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::NonRecursiveDecompositionSupplementV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CompatibilityDecompositionSupplementV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::LineBreakDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::WordBreakDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::SentenceBreakDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::GraphemeClusterBreakDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationJamoV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationSpecialPrimariesV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_casemap::provider::CaseMapV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::names::GeneralCategoryMaskNameToValueV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::chinese_based::DangiCacheV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::chinese_based::ChineseCacheV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::islamic::IslamicUmmAlQuraCacheV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::islamic::IslamicObservationalCacheV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::Bcp47ToIanaMapV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::IanaToBcp47MapV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::IanaToBcp47MapV2Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_casemap::provider::unfold::CaseMapUnfoldV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::canonicalizer::AliasesV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::canonicalizer::AliasesV2Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::directionality::ScriptDirectionV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsExtendedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::CollationFallbackSupplementV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::DictionaryForWordOnlyAutoV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::DictionaryForWordLineExtendedV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::OrListV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::AndListV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::UnitListV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::ExemplarCitiesV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::TimeZoneFormatsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneGenericNamesLongV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneGenericNamesShortV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneSpecificNamesLongV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneSpecificNamesShortV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::RocDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::DangiDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::CopticDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::HebrewDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::IndianDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::ChineseDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::IslamicDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::PersianDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::BuddhistDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::JapaneseDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::EthiopianDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::GregorianDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::JapaneseExtendedDateLengthsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::TimeSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::RocDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::DangiDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::CopticDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::HebrewDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::IndianDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::ChineseDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::IslamicDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::PersianDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::BuddhistDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::JapaneseDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::EthiopianDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::GregorianDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::JapaneseExtendedDateSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_plurals::provider::OrdinalV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_plurals::provider::CardinalV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_decimal::provider::DecimalSymbolsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationDataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationMetadataV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationDiacriticsV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationReorderingV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersMainV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersIndexV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersNumbersV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersAuxiliaryV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersPunctuationV1Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::WeekDataV2Marker>>::take_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_provider::hello_world::HelloWorldV1Marker>>::take_payload |
908 | | |
909 | | /// Takes ownership of the underlying metadata and payload. Error if payload is not present. |
910 | | #[inline] |
911 | 0 | pub fn take_metadata_and_payload( |
912 | 0 | self, |
913 | 0 | ) -> Result<(DataResponseMetadata, DataPayload<M>), DataError> { |
914 | | Ok(( |
915 | 0 | self.metadata, |
916 | 0 | self.payload |
917 | 0 | .ok_or_else(|| DataErrorKind::MissingPayload.with_type_context::<M>())?, Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DashV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::MathV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AlnumV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BlankV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CasedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PrintV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HyphenV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XdigitV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdStartV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::RadicalV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExtenderV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HexDigitV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfcInertV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfdInertV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XidStartV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiClassV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DiacriticV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LineBreakV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LowercaseV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfkcInertV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfkdInertV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::UppercaseV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WordBreakV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AlphabeticV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BasicEmojiV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DeprecatedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdContinueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SoftDottedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WhiteSpaceV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiControlV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdeographicV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::JoinControlV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::JoiningTypeV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XidContinueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiMirroredV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeBaseV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeLinkV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AsciiHexDigitV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CaseIgnorableV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CaseSensitiveV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiModifierV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PatternSyntaxV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::QuotationMarkV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceBreakV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EastAsianWidthV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiComponentV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeExtendV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SegmentStarterV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GeneralCategoryV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceTerminalV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::UnifiedIdeographV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiModifierBaseV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiPresentationV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdsBinaryOperatorV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PatternWhiteSpaceV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::RegionalIndicatorV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::VariationSelectorV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HangulSyllableTypeV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdsTrinaryOperatorV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::TerminalPunctuationV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiClassNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExtendedPictographicV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeClusterBreakV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LineBreakNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WordBreakNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenCasefoldedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenCasemappedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenLowercasedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenTitlecasedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenUppercasedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IndicSyllabicCategoryV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LogicalOrderExceptionV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NoncharacterCodePointV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::FullCompositionExclusionV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceBreakNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenNfkcCasefoldedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DefaultIgnorableCodePointV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EastAsianWidthNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GeneralCategoryNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PrependedConcatenationMarkV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptWithExtensionsPropertyV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HangulSyllableTypeNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeClusterBreakNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IndicSyllabicCategoryNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::WeekDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::JapaneseErasV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::JapaneseExtendedErasV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::MetazonePeriodV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalCompositionsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalDecompositionDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalDecompositionTablesV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CompatibilityDecompositionTablesV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::NonRecursiveDecompositionSupplementV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CompatibilityDecompositionSupplementV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::LineBreakDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::WordBreakDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::SentenceBreakDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::GraphemeClusterBreakDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationJamoV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationSpecialPrimariesV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_casemap::provider::CaseMapV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::names::GeneralCategoryMaskNameToValueV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::chinese_based::DangiCacheV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::chinese_based::ChineseCacheV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::islamic::IslamicUmmAlQuraCacheV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::islamic::IslamicObservationalCacheV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::Bcp47ToIanaMapV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::IanaToBcp47MapV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::IanaToBcp47MapV2Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_casemap::provider::unfold::CaseMapUnfoldV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::canonicalizer::AliasesV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::canonicalizer::AliasesV2Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::directionality::ScriptDirectionV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsExtendedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::CollationFallbackSupplementV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::DictionaryForWordOnlyAutoV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::DictionaryForWordLineExtendedV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::OrListV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::AndListV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::UnitListV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::ExemplarCitiesV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::TimeZoneFormatsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneGenericNamesLongV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneGenericNamesShortV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneSpecificNamesLongV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneSpecificNamesShortV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::RocDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::DangiDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::CopticDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::HebrewDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::IndianDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::ChineseDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::IslamicDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::PersianDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::BuddhistDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::JapaneseDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::EthiopianDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::GregorianDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::JapaneseExtendedDateLengthsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::TimeSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::RocDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::DangiDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::CopticDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::HebrewDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::IndianDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::ChineseDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::IslamicDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::PersianDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::BuddhistDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::JapaneseDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::EthiopianDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::GregorianDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::JapaneseExtendedDateSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_plurals::provider::OrdinalV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_plurals::provider::CardinalV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_decimal::provider::DecimalSymbolsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationDataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationMetadataV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationDiacriticsV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationReorderingV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersMainV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersIndexV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersNumbersV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersAuxiliaryV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersPunctuationV1Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::WeekDataV2Marker>>::take_metadata_and_payload::{closure#0} Unexecuted instantiation: <icu_provider::response::DataResponse<icu_provider::hello_world::HelloWorldV1Marker>>::take_metadata_and_payload::{closure#0} |
918 | | )) |
919 | 0 | } Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DashV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::MathV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AlnumV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BlankV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CasedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PrintV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HyphenV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XdigitV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdStartV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::RadicalV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExtenderV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HexDigitV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfcInertV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfdInertV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XidStartV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiClassV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DiacriticV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LineBreakV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LowercaseV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfkcInertV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NfkdInertV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::UppercaseV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WordBreakV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AlphabeticV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BasicEmojiV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DeprecatedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdContinueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SoftDottedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WhiteSpaceV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiControlV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdeographicV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::JoinControlV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::JoiningTypeV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::XidContinueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiMirroredV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeBaseV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeLinkV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::AsciiHexDigitV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CaseIgnorableV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::CaseSensitiveV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiModifierV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PatternSyntaxV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::QuotationMarkV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceBreakV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EastAsianWidthV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiComponentV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeExtendV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SegmentStarterV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GeneralCategoryV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceTerminalV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::UnifiedIdeographV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiModifierBaseV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EmojiPresentationV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdsBinaryOperatorV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PatternWhiteSpaceV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::RegionalIndicatorV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::VariationSelectorV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HangulSyllableTypeV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IdsTrinaryOperatorV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::TerminalPunctuationV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::BidiClassNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExtendedPictographicV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeClusterBreakV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LineBreakNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::WordBreakNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenCasefoldedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenCasemappedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenLowercasedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenTitlecasedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenUppercasedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IndicSyllabicCategoryV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::LogicalOrderExceptionV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::NoncharacterCodePointV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::FullCompositionExclusionV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::SentenceBreakNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ChangesWhenNfkcCasefoldedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::DefaultIgnorableCodePointV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::EastAsianWidthNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GeneralCategoryNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::PrependedConcatenationMarkV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ScriptWithExtensionsPropertyV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::HangulSyllableTypeNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::GraphemeClusterBreakNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::IndicSyllabicCategoryNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::WeekDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::JapaneseErasV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::JapaneseExtendedErasV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::MetazonePeriodV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalCompositionsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalDecompositionDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CanonicalDecompositionTablesV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CompatibilityDecompositionTablesV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::NonRecursiveDecompositionSupplementV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_normalizer::provider::CompatibilityDecompositionSupplementV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::LineBreakDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::WordBreakDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::SentenceBreakDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::GraphemeClusterBreakDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationJamoV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationSpecialPrimariesV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_casemap::provider::CaseMapV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::names::GeneralCategoryMaskNameToValueV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::chinese_based::DangiCacheV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::chinese_based::ChineseCacheV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::islamic::IslamicUmmAlQuraCacheV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::islamic::IslamicObservationalCacheV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::Bcp47ToIanaMapV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::IanaToBcp47MapV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_timezone::provider::names::IanaToBcp47MapV2Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_casemap::provider::unfold::CaseMapUnfoldV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::canonicalizer::AliasesV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::canonicalizer::AliasesV2Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::directionality::ScriptDirectionV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsExtendedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsForLanguageV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::expander::LikelySubtagsForScriptRegionV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::LocaleFallbackParentsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::CollationFallbackSupplementV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_locid_transform::provider::fallback::LocaleFallbackLikelySubtagsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::DictionaryForWordOnlyAutoV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::DictionaryForWordLineExtendedV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_segmenter::provider::lstm::LstmForWordLineAutoV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::OrListV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::AndListV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_list::provider::UnitListV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::ExemplarCitiesV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::TimeZoneFormatsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneGenericNamesLongV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneGenericNamesShortV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneSpecificNamesLongV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::time_zones::MetazoneSpecificNamesShortV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::TimeLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::RocDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::DangiDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::CopticDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::HebrewDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::IndianDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::ChineseDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::IslamicDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::PersianDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::BuddhistDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::JapaneseDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::EthiopianDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::GregorianDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::JapaneseExtendedDateLengthsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::TimeSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::RocDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::DangiDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::CopticDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::HebrewDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::IndianDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::ChineseDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::IslamicDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::PersianDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::BuddhistDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::JapaneseDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::EthiopianDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::GregorianDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_datetime::provider::calendar::symbols::JapaneseExtendedDateSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_plurals::provider::OrdinalV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_plurals::provider::CardinalV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_decimal::provider::DecimalSymbolsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationDataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationMetadataV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationDiacriticsV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_collator::provider::CollationReorderingV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersMainV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersIndexV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersNumbersV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersAuxiliaryV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_properties::provider::ExemplarCharactersPunctuationV1Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_calendar::provider::WeekDataV2Marker>>::take_metadata_and_payload Unexecuted instantiation: <icu_provider::response::DataResponse<icu_provider::hello_world::HelloWorldV1Marker>>::take_metadata_and_payload |
920 | | |
921 | | /// Convert between two [`DataMarker`] types that are compatible with each other |
922 | | /// with compile-time type checking. |
923 | | /// |
924 | | /// This happens if they both have the same [`DataMarker::Yokeable`] type. |
925 | | /// |
926 | | /// Can be used to erase the key of a data payload in cases where multiple keys correspond |
927 | | /// to the same data struct. |
928 | | /// |
929 | | /// For runtime dynamic casting, use [`DataPayload::dynamic_cast_mut()`]. |
930 | | #[inline] |
931 | 0 | pub fn cast<M2>(self) -> DataResponse<M2> |
932 | 0 | where |
933 | 0 | M2: DataMarker<Yokeable = M::Yokeable>, |
934 | | { |
935 | 0 | match self.payload { |
936 | 0 | Some(payload) => DataResponse { |
937 | 0 | metadata: self.metadata, |
938 | 0 | payload: Some(payload.cast()), |
939 | 0 | }, |
940 | 0 | None => DataResponse { |
941 | 0 | metadata: self.metadata, |
942 | 0 | payload: None, |
943 | 0 | }, |
944 | | } |
945 | 0 | } |
946 | | } |
947 | | |
948 | | impl<M> TryFrom<DataResponse<M>> for DataPayload<M> |
949 | | where |
950 | | M: DataMarker, |
951 | | { |
952 | | type Error = DataError; |
953 | | |
954 | 0 | fn try_from(response: DataResponse<M>) -> Result<Self, Self::Error> { |
955 | 0 | response.take_payload() |
956 | 0 | } |
957 | | } |
958 | | |
959 | | impl<M> Debug for DataResponse<M> |
960 | | where |
961 | | M: DataMarker, |
962 | | for<'a> &'a <M::Yokeable as Yokeable<'a>>::Output: Debug, |
963 | | { |
964 | 0 | fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result { |
965 | 0 | write!( |
966 | 0 | f, |
967 | 0 | "DataResponse {{ metadata: {:?}, payload: {:?} }}", |
968 | | self.metadata, self.payload |
969 | | ) |
970 | 0 | } |
971 | | } |
972 | | |
973 | | /// Cloning a DataResponse is generally a cheap operation. |
974 | | /// See notes in the `Clone` impl for [`Yoke`]. |
975 | | /// |
976 | | /// # Examples |
977 | | /// |
978 | | /// ```no_run |
979 | | /// use icu_provider::hello_world::*; |
980 | | /// use icu_provider::prelude::*; |
981 | | /// |
982 | | /// let resp1: DataResponse<HelloWorldV1Marker> = todo!(); |
983 | | /// let resp2 = resp1.clone(); |
984 | | /// ``` |
985 | | impl<M> Clone for DataResponse<M> |
986 | | where |
987 | | M: DataMarker, |
988 | | for<'a> YokeTraitHack<<M::Yokeable as Yokeable<'a>>::Output>: Clone, |
989 | | { |
990 | 0 | fn clone(&self) -> Self { |
991 | 0 | Self { |
992 | 0 | metadata: self.metadata.clone(), |
993 | 0 | payload: self.payload.clone(), |
994 | 0 | } |
995 | 0 | } |
996 | | } |
997 | | |
998 | | #[test] |
999 | | fn test_debug() { |
1000 | | use crate::hello_world::*; |
1001 | | use alloc::borrow::Cow; |
1002 | | let resp = DataResponse::<HelloWorldV1Marker> { |
1003 | | metadata: Default::default(), |
1004 | | payload: Some(DataPayload::from_owned(HelloWorldV1 { |
1005 | | message: Cow::Borrowed("foo"), |
1006 | | })), |
1007 | | }; |
1008 | | assert_eq!("DataResponse { metadata: DataResponseMetadata { locale: None, buffer_format: None }, payload: Some(HelloWorldV1 { message: \"foo\" }) }", format!("{resp:?}")); |
1009 | | } |