diff --git a/Cargo.lock b/Cargo.lock index fdaa609eeeb..65681d70664 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1783,6 +1783,7 @@ dependencies = [ "displaydoc", "erased-serde", "icu_locid", + "icu_locid_transform", "icu_provider_adapters", "icu_provider_macros", "log", diff --git a/components/calendar/data/data/macros/datetime_week_data_v1.data.rs b/components/calendar/data/data/macros/datetime_week_data_v1.data.rs index 8d7d76b5fa0..30d394fa7d5 100644 --- a/components/calendar/data/data/macros/datetime_week_data_v1.data.rs +++ b/components/calendar/data/data/macros/datetime_week_data_v1.data.rs @@ -21,7 +21,7 @@ macro_rules! __impl_datetime_week_data_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/collator/data/data/macros/collator_data_v1.data.rs b/components/collator/data/data/macros/collator_data_v1.data.rs index 06f273415d7..20cd2661d73 100644 --- a/components/collator/data/data/macros/collator_data_v1.data.rs +++ b/components/collator/data/data/macros/collator_data_v1.data.rs @@ -99,7 +99,7 @@ macro_rules! __impl_collator_data_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/collator/data/data/macros/collator_meta_v1.data.rs b/components/collator/data/data/macros/collator_meta_v1.data.rs index e658ee7df17..3fdc5109475 100644 --- a/components/collator/data/data/macros/collator_meta_v1.data.rs +++ b/components/collator/data/data/macros/collator_meta_v1.data.rs @@ -24,7 +24,7 @@ macro_rules! __impl_collator_meta_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/collator/data/data/macros/collator_reord_v1.data.rs b/components/collator/data/data/macros/collator_reord_v1.data.rs index 7860ddd0628..a1d9a88ee53 100644 --- a/components/collator/data/data/macros/collator_reord_v1.data.rs +++ b/components/collator/data/data/macros/collator_reord_v1.data.rs @@ -44,7 +44,7 @@ macro_rules! __impl_collator_reord_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs index df639f0fada..6e8a5e75bc5 100644 --- a/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_buddhist_datelengths_v1.data.rs @@ -145,7 +145,7 @@ macro_rules! __impl_datetime_buddhist_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs index 39584a9d05a..ba74cf5cc10 100644 --- a/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_buddhist_datesymbols_v1.data.rs @@ -2895,7 +2895,7 @@ macro_rules! __impl_datetime_buddhist_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs index 06e6b7df06d..ceaf9b7b0b1 100644 --- a/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_chinese_datelengths_v1.data.rs @@ -56,7 +56,7 @@ macro_rules! __impl_datetime_chinese_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs index 39a51ed9500..1515f8f34ab 100644 --- a/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_chinese_datesymbols_v1.data.rs @@ -5326,7 +5326,7 @@ macro_rules! __impl_datetime_chinese_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs index 13b471d31d2..7c41dfbc954 100644 --- a/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_coptic_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_coptic_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs index d48f86a3a13..76d266f6cf2 100644 --- a/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_coptic_datesymbols_v1.data.rs @@ -5209,7 +5209,7 @@ macro_rules! __impl_datetime_coptic_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_dangi_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_dangi_datelengths_v1.data.rs index 73edc5f8d71..803a4ddae28 100644 --- a/components/datetime/data/data/macros/datetime_dangi_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_dangi_datelengths_v1.data.rs @@ -55,7 +55,7 @@ macro_rules! __impl_datetime_dangi_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_dangi_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_dangi_datesymbols_v1.data.rs index 137bd7e7980..703e4f10247 100644 --- a/components/datetime/data/data/macros/datetime_dangi_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_dangi_datesymbols_v1.data.rs @@ -5291,7 +5291,7 @@ macro_rules! __impl_datetime_dangi_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs index 0633fdc7bba..3e6fbd36ac4 100644 --- a/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_ethiopic_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_ethiopic_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs index c6f3d72ad40..ca405c7b45f 100644 --- a/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_ethiopic_datesymbols_v1.data.rs @@ -5233,7 +5233,7 @@ macro_rules! __impl_datetime_ethiopic_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs index 328b3134dcc..843171f09f6 100644 --- a/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_gregory_datelengths_v1.data.rs @@ -157,7 +157,7 @@ macro_rules! __impl_datetime_gregory_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs index 5a2f1bc36ce..38bb0d4e10b 100644 --- a/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_gregory_datesymbols_v1.data.rs @@ -2967,7 +2967,7 @@ macro_rules! __impl_datetime_gregory_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs index 747c7f8d18a..761339ac74e 100644 --- a/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_hebrew_datelengths_v1.data.rs @@ -131,7 +131,7 @@ macro_rules! __impl_datetime_hebrew_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs index 9b16c0aae19..c2a156f9c6b 100644 --- a/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_hebrew_datesymbols_v1.data.rs @@ -5246,7 +5246,7 @@ macro_rules! __impl_datetime_hebrew_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs index 8714e2df1de..7e6feabc995 100644 --- a/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_indian_datelengths_v1.data.rs @@ -148,7 +148,7 @@ macro_rules! __impl_datetime_indian_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs index dbe29c861f2..376a91c74a4 100644 --- a/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_indian_datesymbols_v1.data.rs @@ -2679,7 +2679,7 @@ macro_rules! __impl_datetime_indian_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamic_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_islamic_datelengths_v1.data.rs index 65884f5862b..e5b6025d0a5 100644 --- a/components/datetime/data/data/macros/datetime_islamic_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamic_datelengths_v1.data.rs @@ -146,7 +146,7 @@ macro_rules! __impl_datetime_islamic_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_islamic_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_islamic_datesymbols_v1.data.rs index 876952f0fc4..7c7bbbfe2ae 100644 --- a/components/datetime/data/data/macros/datetime_islamic_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_islamic_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_islamic_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs index 77dd980d5e4..f0155591c4f 100644 --- a/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanese_datelengths_v1.data.rs @@ -125,7 +125,7 @@ macro_rules! __impl_datetime_japanese_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs index 50b00b4d5ae..0c9420aa3b2 100644 --- a/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanese_datesymbols_v1.data.rs @@ -2967,7 +2967,7 @@ macro_rules! __impl_datetime_japanese_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs index 5434d3fd68e..b0f4f4a1d98 100644 --- a/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanext_datelengths_v1.data.rs @@ -125,7 +125,7 @@ macro_rules! __impl_datetime_japanext_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs index 029c1496940..fad826a9b2d 100644 --- a/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_japanext_datesymbols_v1.data.rs @@ -2967,7 +2967,7 @@ macro_rules! __impl_datetime_japanext_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs index a4ead95c293..a59cca3e9c3 100644 --- a/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_persian_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_persian_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs index 2a9d9f9dfb7..fbeaec569d1 100644 --- a/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_persian_datesymbols_v1.data.rs @@ -2697,7 +2697,7 @@ macro_rules! __impl_datetime_persian_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs index 40819597a3c..96abe9797a2 100644 --- a/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_roc_datelengths_v1.data.rs @@ -150,7 +150,7 @@ macro_rules! __impl_datetime_roc_datelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs index 6d6d9ad9254..54fa34ce2fe 100644 --- a/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_roc_datesymbols_v1.data.rs @@ -2895,7 +2895,7 @@ macro_rules! __impl_datetime_roc_datesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs b/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs index 427aa692089..3255961af13 100644 --- a/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_skeletons_v1.data.rs @@ -484,7 +484,7 @@ macro_rules! __impl_datetime_skeletons_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs b/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs index 36d7b99d5b2..95102733bd5 100644 --- a/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_timelengths_v1.data.rs @@ -72,7 +72,7 @@ macro_rules! __impl_datetime_timelengths_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs b/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs index e7af6371a4a..a98bbd89ec1 100644 --- a/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs +++ b/components/datetime/data/data/macros/datetime_timesymbols_v1.data.rs @@ -158,7 +158,7 @@ macro_rules! __impl_datetime_timesymbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs b/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs index 48edfb584a0..f524e9d53a0 100644 --- a/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_exemplar_cities_v1.data.rs @@ -607,7 +607,7 @@ macro_rules! __impl_time_zone_exemplar_cities_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_formats_v1.data.rs b/components/datetime/data/data/macros/time_zone_formats_v1.data.rs index 556dcd9c5ac..71429fd025d 100644 --- a/components/datetime/data/data/macros/time_zone_formats_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_formats_v1.data.rs @@ -1623,7 +1623,7 @@ macro_rules! __impl_time_zone_formats_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs b/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs index c2a846c204a..e21c47ce3ba 100644 --- a/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_generic_long_v1.data.rs @@ -1505,7 +1505,7 @@ macro_rules! __impl_time_zone_generic_long_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs b/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs index 9b25e4a0a68..5fba45603d1 100644 --- a/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_generic_short_v1.data.rs @@ -585,7 +585,7 @@ macro_rules! __impl_time_zone_generic_short_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs b/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs index 39b2ff7b531..318ba94f20f 100644 --- a/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_specific_long_v1.data.rs @@ -1505,7 +1505,7 @@ macro_rules! __impl_time_zone_specific_long_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs b/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs index 4fdd2a5d9ed..58c4ce5e663 100644 --- a/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs +++ b/components/datetime/data/data/macros/time_zone_specific_short_v1.data.rs @@ -575,7 +575,7 @@ macro_rules! __impl_time_zone_specific_short_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/decimal/data/data/macros/decimal_symbols_v1.data.rs b/components/decimal/data/data/macros/decimal_symbols_v1.data.rs index 839c02f422e..1328f0b6b3d 100644 --- a/components/decimal/data/data/macros/decimal_symbols_v1.data.rs +++ b/components/decimal/data/data/macros/decimal_symbols_v1.data.rs @@ -56,7 +56,7 @@ macro_rules! __impl_decimal_symbols_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/list/data/data/macros/list_and_v1.data.rs b/components/list/data/data/macros/list_and_v1.data.rs index 282fe3d65a8..eb13d844b8c 100644 --- a/components/list/data/data/macros/list_and_v1.data.rs +++ b/components/list/data/data/macros/list_and_v1.data.rs @@ -121,7 +121,7 @@ macro_rules! __impl_list_and_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/list/data/data/macros/list_or_v1.data.rs b/components/list/data/data/macros/list_or_v1.data.rs index 2e6c7364aff..273365f7489 100644 --- a/components/list/data/data/macros/list_or_v1.data.rs +++ b/components/list/data/data/macros/list_or_v1.data.rs @@ -104,7 +104,7 @@ macro_rules! __impl_list_or_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/list/data/data/macros/list_unit_v1.data.rs b/components/list/data/data/macros/list_unit_v1.data.rs index c91164f1b2b..1b46601c6b5 100644 --- a/components/list/data/data/macros/list_unit_v1.data.rs +++ b/components/list/data/data/macros/list_unit_v1.data.rs @@ -87,7 +87,7 @@ macro_rules! __impl_list_unit_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/locid_transform/src/fallback/algorithms.rs b/components/locid_transform/src/fallback/algorithms.rs index bc20b890bb5..c3a3d08cab7 100644 --- a/components/locid_transform/src/fallback/algorithms.rs +++ b/components/locid_transform/src/fallback/algorithms.rs @@ -223,7 +223,7 @@ mod tests { input: &'static str, requires_data: bool, extension_key: Option, - fallback_supplement: Option, + fallback_supplement: Option, // Note: The first entry in the chain is the normalized locale expected_language_chain: &'static [&'static str], expected_region_chain: &'static [&'static str], @@ -432,7 +432,7 @@ mod tests { input: "yue-HK", requires_data: true, extension_key: None, - fallback_supplement: Some(FallbackSupplement::Collation), + fallback_supplement: Some(LocaleFallbackSupplement::Collation), // TODO(#1964): add "zh" as a target. expected_language_chain: &["yue-HK", "yue", "zh-Hant"], expected_region_chain: &["yue-HK", "und-HK"], @@ -446,14 +446,16 @@ mod tests { let fallbacker_with_data = LocaleFallbacker::new(); for cas in TEST_CASES { for (priority, expected_chain) in [ - (FallbackPriority::Language, cas.expected_language_chain), - (FallbackPriority::Region, cas.expected_region_chain), + ( + LocaleFallbackPriority::Language, + cas.expected_language_chain, + ), + (LocaleFallbackPriority::Region, cas.expected_region_chain), ] { - let config = LocaleFallbackConfig { - priority, - extension_key: cas.extension_key, - fallback_supplement: cas.fallback_supplement, - }; + let mut config = LocaleFallbackConfig::default(); + config.priority = priority; + config.extension_key = cas.extension_key; + config.fallback_supplement = cas.fallback_supplement; let fallbacker = if cas.requires_data { fallbacker_with_data } else { diff --git a/components/locid_transform/src/fallback/mod.rs b/components/locid_transform/src/fallback/mod.rs index a398aba71bf..db92dff3388 100644 --- a/components/locid_transform/src/fallback/mod.rs +++ b/components/locid_transform/src/fallback/mod.rs @@ -40,200 +40,15 @@ //! ``` use crate::provider::*; -use icu_locid::extensions::unicode::{Key, Value}; +use icu_locid::extensions::unicode::Value; use icu_locid::subtags::Variants; use icu_provider::prelude::*; -pub use icu_provider::{FallbackPriority, FallbackSupplement}; +#[doc(inline)] +pub use icu_provider::fallback::*; mod algorithms; -/// Configuration settings for a particular fallback operation. -#[derive(Debug, Clone, PartialEq, Eq, Copy)] -#[non_exhaustive] -pub struct LocaleFallbackConfig { - /// Strategy for choosing which subtags to drop during locale fallback. - /// - /// # Examples - /// - /// Retain the language and script subtags until the final step: - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// - /// // Set up the fallback iterator. - /// let fallbacker = LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Language; - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("ca-ES-valencia").into()); - /// - /// // Run the algorithm and check the results. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("ca-ES-valencia").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - /// - /// Retain the region subtag until the final step: - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// - /// // Set up the fallback iterator. - /// let fallbacker = LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Region; - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("ca-ES-valencia").into()); - /// - /// // Run the algorithm and check the results. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("ca-ES-valencia").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); - /// fallback_iterator.step(); - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("und-ES-valencia").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("und-ES").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - pub priority: FallbackPriority, - /// An extension keyword to retain during locale fallback. - /// - /// # Examples - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// - /// // Set up the fallback iterator. - /// let fallbacker = LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.extension_key = Some(icu_locid::extensions::unicode::key!("nu")); - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("ar-EG-u-nu-latn").into()); - /// - /// // Run the algorithm and check the results. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("ar-EG-u-nu-latn").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ar-EG").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ar-u-nu-latn").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("ar").into()); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - pub extension_key: Option, - /// Fallback supplement data key to customize fallback rules. - /// - /// For example, most data keys for collation add additional parent locales, such as - /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback. - /// - /// Currently the only supported fallback supplement is `FallbackSupplement::Collation`, but more may be - /// added in the future. - /// - /// # Examples - /// - /// ``` - /// use icu_locid::locale; - /// use icu_locid_transform::fallback::FallbackPriority; - /// use icu_locid_transform::fallback::FallbackSupplement; - /// use icu_locid_transform::fallback::LocaleFallbackConfig; - /// use icu_locid_transform::fallback::LocaleFallbacker; - /// use tinystr::tinystr; - /// - /// // Set up the fallback iterator. - /// let fallbacker = LocaleFallbacker::new(); - /// let mut config = LocaleFallbackConfig::default(); - /// config.priority = FallbackPriority::Collation; - /// config.fallback_supplement = Some(FallbackSupplement::Collation); - /// let mut fallback_iterator = fallbacker - /// .for_config(config) - /// .fallback_for(locale!("yue-HK").into()); - /// - /// // Run the algorithm and check the results. - /// // TODO(#1964): add "zh" as a target. - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("yue-HK").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("yue").into()); - /// fallback_iterator.step(); - /// assert_eq!( - /// fallback_iterator.get(), - /// &locale!("zh-Hant").into() - /// ); - /// fallback_iterator.step(); - /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); - /// ``` - pub fallback_supplement: Option, -} - -impl LocaleFallbackConfig { - /// Const version of [`Default::default`]. - pub const fn const_default() -> Self { - Self { - priority: FallbackPriority::const_default(), - extension_key: None, - fallback_supplement: None, - } - } - - /// Creates a [`LocaleFallbackConfig`] for a [`DataKey`]. - pub const fn from_key(key: DataKey) -> Self { - Self { - priority: key.metadata().fallback_priority, - extension_key: key.metadata().extension_key, - fallback_supplement: key.metadata().fallback_supplement, - } - } -} - -impl Default for LocaleFallbackConfig { - fn default() -> Self { - Self::const_default() - } -} - -impl From for LocaleFallbackConfig { - fn from(key: DataKey) -> Self { - Self::from_key(key) - } -} - /// Entry type for locale fallbacking. /// /// See the module-level documentation for an example. @@ -362,7 +177,7 @@ impl LocaleFallbacker { #[inline] #[doc(hidden)] // will be removed in 2.0 pub fn for_key(&self, data_key: DataKey) -> LocaleFallbackerWithConfig { - self.for_config(data_key.into()) + self.for_config(data_key.fallback_config()) } /// Creates a borrowed version of this fallbacker for performance. @@ -383,7 +198,7 @@ impl<'a> LocaleFallbackerBorrowed<'a> { likely_subtags: self.likely_subtags, parents: self.parents, supplement: match config.fallback_supplement { - Some(FallbackSupplement::Collation) => self.collation_supplement, + Some(LocaleFallbackSupplement::Collation) => self.collation_supplement, _ => None, }, config, diff --git a/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs b/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs index 2e74a52a89f..0aaff00dba4 100644 --- a/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs +++ b/components/plurals/data/data/macros/plurals_cardinal_v1.data.rs @@ -47,7 +47,7 @@ macro_rules! __impl_plurals_cardinal_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs b/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs index 00dba7df124..bc10e26b4bb 100644 --- a/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs +++ b/components/plurals/data/data/macros/plurals_ordinal_v1.data.rs @@ -37,7 +37,7 @@ macro_rules! __impl_plurals_ordinal_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs index 19294044d1b..c72a628a9fa 100644 --- a/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_auxiliary_v1.data.rs @@ -827,7 +827,7 @@ macro_rules! __impl_props_exemplarchars_auxiliary_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs index d54c441253c..52590b67f5d 100644 --- a/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_index_v1.data.rs @@ -694,7 +694,7 @@ macro_rules! __impl_props_exemplarchars_index_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs index 2ce0a67465c..4eeeb2fa02f 100644 --- a/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_main_v1.data.rs @@ -904,7 +904,7 @@ macro_rules! __impl_props_exemplarchars_main_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs index 600912a4e03..19e29b092cf 100644 --- a/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_numbers_v1.data.rs @@ -197,7 +197,7 @@ macro_rules! __impl_props_exemplarchars_numbers_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs b/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs index 2e61bacffad..91db8fd0ab6 100644 --- a/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs +++ b/components/properties/data/data/macros/props_exemplarchars_punctuation_v1.data.rs @@ -491,7 +491,7 @@ macro_rules! __impl_props_exemplarchars_punctuation_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs b/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs index 92d546cedf2..20663f75dca 100644 --- a/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs +++ b/experimental/compactdecimal/data/data/macros/compactdecimal_long_v1.data.rs @@ -699,7 +699,7 @@ macro_rules! __impl_compactdecimal_long_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs b/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs index 9b0db1acc9e..158ed6dbacb 100644 --- a/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs +++ b/experimental/compactdecimal/data/data/macros/compactdecimal_short_v1.data.rs @@ -615,7 +615,7 @@ macro_rules! __impl_compactdecimal_short_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs index b6be7eb1258..8343d41a32e 100644 --- a/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_languages_v1.data.rs @@ -3021,7 +3021,7 @@ macro_rules! __impl_displaynames_languages_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs index 7a18a76946a..f547658bc2c 100644 --- a/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_locales_v1.data.rs @@ -2733,7 +2733,7 @@ macro_rules! __impl_displaynames_locales_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs index ecdcf63ab89..5454986960c 100644 --- a/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_regions_v1.data.rs @@ -1665,7 +1665,7 @@ macro_rules! __impl_displaynames_regions_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs index e2bf9d862d1..6ee7c5e1fde 100644 --- a/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_scripts_v1.data.rs @@ -1455,7 +1455,7 @@ macro_rules! __impl_displaynames_scripts_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs b/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs index 6dbc04a42b3..5b40e1abccf 100644 --- a/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs +++ b/experimental/displaynames/data/data/macros/displaynames_variants_v1.data.rs @@ -507,7 +507,7 @@ macro_rules! __impl_displaynames_variants_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if fallback_iterator.get().is_empty() { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs index 59085f4dd03..6aa088f02e0 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_day_v1.data.rs @@ -1103,7 +1103,7 @@ macro_rules! __impl_relativetime_long_day_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs index 8975b9a5aa2..369dbe060a8 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_hour_v1.data.rs @@ -967,7 +967,7 @@ macro_rules! __impl_relativetime_long_hour_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs index f5c18120cdd..238e4501cf5 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_minute_v1.data.rs @@ -975,7 +975,7 @@ macro_rules! __impl_relativetime_long_minute_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs index cf369577a63..ab7f7afdf9a 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_month_v1.data.rs @@ -1039,7 +1039,7 @@ macro_rules! __impl_relativetime_long_month_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs index 4c9640bc91b..7da516b6fe8 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_quarter_v1.data.rs @@ -975,7 +975,7 @@ macro_rules! __impl_relativetime_long_quarter_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs index 9f2bf08ba03..440aa7770fe 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_second_v1.data.rs @@ -975,7 +975,7 @@ macro_rules! __impl_relativetime_long_second_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs index f9a9f72c6f6..a5c2319db6d 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_week_v1.data.rs @@ -1055,7 +1055,7 @@ macro_rules! __impl_relativetime_long_week_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs index daad3cd5087..de18dc9ddc1 100644 --- a/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_long_year_v1.data.rs @@ -1087,7 +1087,7 @@ macro_rules! __impl_relativetime_long_year_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs index a2c0336a6cc..8f78c4f3988 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_day_v1.data.rs @@ -1151,7 +1151,7 @@ macro_rules! __impl_relativetime_narrow_day_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs index c3bc57b1c44..1859d6092b2 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_hour_v1.data.rs @@ -1007,7 +1007,7 @@ macro_rules! __impl_relativetime_narrow_hour_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs index 91ef1d8881c..78be9a89db3 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_minute_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_narrow_minute_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs index 568300d689b..aa09f3aa1af 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_month_v1.data.rs @@ -1071,7 +1071,7 @@ macro_rules! __impl_relativetime_narrow_month_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs index 5158eae36c2..f4492d8d1d1 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_quarter_v1.data.rs @@ -1007,7 +1007,7 @@ macro_rules! __impl_relativetime_narrow_quarter_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs index 0c757e37fb2..a32e972aa91 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_second_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_narrow_second_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs index 4b9c328996b..51946e1ff47 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_week_v1.data.rs @@ -1079,7 +1079,7 @@ macro_rules! __impl_relativetime_narrow_week_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs index 169d8b88879..4ba81b838fe 100644 --- a/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_narrow_year_v1.data.rs @@ -1095,7 +1095,7 @@ macro_rules! __impl_relativetime_narrow_year_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs index 4ec62c16471..33db4cd9aad 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_day_v1.data.rs @@ -1143,7 +1143,7 @@ macro_rules! __impl_relativetime_short_day_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs index 6c2d13d5c5c..9509bd55969 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_hour_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_short_hour_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs index e89cc04dc46..36b0db61a3e 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_minute_v1.data.rs @@ -1015,7 +1015,7 @@ macro_rules! __impl_relativetime_short_minute_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs index 78ae9b5e68a..cffe094040f 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_month_v1.data.rs @@ -1071,7 +1071,7 @@ macro_rules! __impl_relativetime_short_month_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs index 6d39d95e22e..76c20ecbd45 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_quarter_v1.data.rs @@ -999,7 +999,7 @@ macro_rules! __impl_relativetime_short_quarter_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs index 874180eec64..b7a52c85168 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_second_v1.data.rs @@ -999,7 +999,7 @@ macro_rules! __impl_relativetime_short_second_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs index 9eba2c82707..9450c313284 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_week_v1.data.rs @@ -1087,7 +1087,7 @@ macro_rules! __impl_relativetime_short_week_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs b/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs index 0b1012fbeff..c2d63201a1a 100644 --- a/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs +++ b/experimental/relativetime/data/data/macros/relativetime_short_year_v1.data.rs @@ -1111,7 +1111,7 @@ macro_rules! __impl_relativetime_short_year_v1 { let payload = if let Ok(payload) = KEYS.binary_search_by(|k| req.locale.strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { payload } else { - const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(icu::locid_transform::fallback::LocaleFallbackConfig::from_key(::KEY)); + const FALLBACKER: icu::locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu::locid_transform::fallback::LocaleFallbacker::new().for_config(::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { if let Ok(payload) = KEYS.binary_search_by(|k| fallback_iterator.get().strict_cmp(k.as_bytes()).reverse()).map(|i| *unsafe { VALUES.get_unchecked(i) }) { diff --git a/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst b/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst index 0e29e78038e..0133fd6e133 100644 --- a/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst +++ b/ffi/diplomat/cpp/docs/source/fallbacker_ffi.rst @@ -43,7 +43,7 @@ Priority mode for the ICU4X fallback algorithm. - See the `Rust documentation for FallbackPriority `__ for more information. + See the `Rust documentation for LocaleFallbackPriority `__ for more information. .. cpp:enumerator:: Language diff --git a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp index bde69bfaf5c..19d52ae7a34 100644 --- a/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp +++ b/ffi/diplomat/cpp/include/ICU4XLocaleFallbackPriority.hpp @@ -16,7 +16,7 @@ /** * Priority mode for the ICU4X fallback algorithm. * - * See the [Rust documentation for `FallbackPriority`](https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.FallbackPriority.html) for more information. + * See the [Rust documentation for `LocaleFallbackPriority`](https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.LocaleFallbackPriority.html) for more information. */ enum struct ICU4XLocaleFallbackPriority { Language = 0, diff --git a/ffi/diplomat/js/docs/source/fallbacker_ffi.rst b/ffi/diplomat/js/docs/source/fallbacker_ffi.rst index 36ff21207d2..e8b26a436cc 100644 --- a/ffi/diplomat/js/docs/source/fallbacker_ffi.rst +++ b/ffi/diplomat/js/docs/source/fallbacker_ffi.rst @@ -43,7 +43,7 @@ Priority mode for the ICU4X fallback algorithm. - See the `Rust documentation for FallbackPriority `__ for more information. + See the `Rust documentation for LocaleFallbackPriority `__ for more information. .. js:class:: ICU4XLocaleFallbacker diff --git a/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts b/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts index 7fc6e575650..5ebc55f192c 100644 --- a/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts +++ b/ffi/diplomat/js/include/ICU4XLocaleFallbackPriority.d.ts @@ -3,7 +3,7 @@ * Priority mode for the ICU4X fallback algorithm. - * See the {@link https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.FallbackPriority.html Rust documentation for `FallbackPriority`} for more information. + * See the {@link https://docs.rs/icu/latest/icu/locid_transform/fallback/enum.LocaleFallbackPriority.html Rust documentation for `LocaleFallbackPriority`} for more information. */ export enum ICU4XLocaleFallbackPriority { /** diff --git a/ffi/diplomat/src/fallbacker.rs b/ffi/diplomat/src/fallbacker.rs index 4138942438e..92d45460d5d 100644 --- a/ffi/diplomat/src/fallbacker.rs +++ b/ffi/diplomat/src/fallbacker.rs @@ -5,9 +5,9 @@ #[diplomat::bridge] pub mod ffi { use alloc::boxed::Box; - use icu_locid_transform::fallback::FallbackPriority; use icu_locid_transform::fallback::LocaleFallbackConfig; use icu_locid_transform::fallback::LocaleFallbackIterator; + use icu_locid_transform::fallback::LocaleFallbackPriority; use icu_locid_transform::fallback::LocaleFallbacker; use icu_locid_transform::fallback::LocaleFallbackerWithConfig; @@ -26,10 +26,10 @@ pub mod ffi { pub struct ICU4XLocaleFallbacker(pub LocaleFallbacker); /// Priority mode for the ICU4X fallback algorithm. - #[diplomat::enum_convert(FallbackPriority, needs_wildcard)] - #[diplomat::rust_link(icu::locid_transform::fallback::FallbackPriority, Enum)] + #[diplomat::enum_convert(LocaleFallbackPriority, needs_wildcard)] + #[diplomat::rust_link(icu::locid_transform::fallback::LocaleFallbackPriority, Enum)] #[diplomat::rust_link( - icu::locid_transform::fallback::FallbackPriority::const_default, + icu::locid_transform::fallback::LocaleFallbackPriority::const_default, FnInEnum, hidden )] diff --git a/ffi/diplomat/tests/missing_apis.txt b/ffi/diplomat/tests/missing_apis.txt index 138731403c9..beedc9698b7 100644 --- a/ffi/diplomat/tests/missing_apis.txt +++ b/ffi/diplomat/tests/missing_apis.txt @@ -58,7 +58,7 @@ icu::locid_transform::LocaleDirectionality::is_left_to_right#FnInStruct icu::locid_transform::LocaleDirectionality::is_right_to_left#FnInStruct icu::locid_transform::LocaleDirectionality::new#FnInStruct icu::locid_transform::LocaleDirectionality::new_with_expander#FnInStruct -icu::locid_transform::fallback::FallbackSupplement#Enum +icu::locid_transform::fallback::LocaleFallbackSupplement#Enum icu::properties::bidi_data::BidiAuxiliaryProperties#Struct icu::properties::bidi_data::BidiAuxiliaryProperties::from_data#FnInStruct icu::properties::bidi_data::BidiAuxiliaryPropertiesBorrowed#Struct diff --git a/provider/adapters/src/fallback/mod.rs b/provider/adapters/src/fallback/mod.rs index ffc72437c28..b1f62e65703 100644 --- a/provider/adapters/src/fallback/mod.rs +++ b/provider/adapters/src/fallback/mod.rs @@ -10,8 +10,10 @@ use icu_provider::prelude::*; #[doc(hidden)] // moved pub use icu_locid_transform::fallback::{ - LocaleFallbackConfig, LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig, + LocaleFallbackIterator, LocaleFallbacker, LocaleFallbackerWithConfig, }; +#[doc(hidden)] // moved +pub use icu_provider::fallback::LocaleFallbackConfig; /// A data provider wrapper that performs locale fallback. This enables arbitrary locales to be /// handled at runtime. @@ -200,7 +202,7 @@ impl

LocaleFallbackProvider

{ } let mut fallback_iterator = self .fallbacker - .for_key(key) + .for_config(key.fallback_config()) .fallback_for(base_req.locale.clone()); let base_silent = core::mem::replace(&mut base_req.metadata.silent, true); loop { diff --git a/provider/core/Cargo.toml b/provider/core/Cargo.toml index f9d3a6f2e1f..ac66db7bcf8 100644 --- a/provider/core/Cargo.toml +++ b/provider/core/Cargo.toml @@ -56,6 +56,7 @@ databake = { version = "0.1.3", path = "../../utils/databake", optional = true, [dev-dependencies] serde_json = "1.0" icu_provider_adapters = { path = "../../provider/adapters" } +icu_locid_transform = { path = "../../components/locid_transform" } [features] std = ["icu_locid/std"] diff --git a/provider/core/src/fallback.rs b/provider/core/src/fallback.rs new file mode 100644 index 00000000000..f7462cd5e69 --- /dev/null +++ b/provider/core/src/fallback.rs @@ -0,0 +1,215 @@ +// This file is part of ICU4X. For terms of use, please see the file +// called LICENSE at the top level of the ICU4X source tree +// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ). + +//! Options to define fallback behaviour. +//! +//! These options are consumed by the `LocaleFallbacker` in the `icu_locid_transforms` crate +//! (or the `icu::locid_transforms` module), but are defined here because they are used by `DataKey`. + +use icu_locid::extensions::unicode::Key; + +/// Hint for which subtag to prioritize during fallback. +/// +/// For example, `"en-US"` might fall back to either `"en"` or `"und-US"` depending +/// on this enum. +#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] +#[non_exhaustive] +pub enum LocaleFallbackPriority { + /// Prioritize the language. This is the default behavior. + /// + /// For example, `"en-US"` should go to `"en"` and then `"und"`. + Language, + /// Prioritize the region. + /// + /// For example, `"en-US"` should go to `"und-US"` and then `"und"`. + Region, + /// Collation-specific fallback rules. Similar to language priority. + /// + /// For example, `"zh-Hant"` goes to `"zh"` before `"und"`. + Collation, +} + +impl LocaleFallbackPriority { + /// Const-friendly version of [`Default::default`]. + pub const fn const_default() -> Self { + Self::Language + } +} + +impl Default for LocaleFallbackPriority { + fn default() -> Self { + Self::const_default() + } +} + +/// What additional data is required to load when performing fallback. +#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] +#[non_exhaustive] +pub enum LocaleFallbackSupplement { + /// Collation supplement + Collation, +} + +/// Configuration settings for a particular fallback operation. +#[derive(Debug, Clone, PartialEq, Eq, Copy)] +#[non_exhaustive] +pub struct LocaleFallbackConfig { + /// Strategy for choosing which subtags to drop during locale fallback. + /// + /// # Examples + /// + /// Retain the language and script subtags until the final step: + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid_transform::fallback::LocaleFallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.priority = LocaleFallbackPriority::Language; + /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("ca-ES-valencia").into()); + /// + /// // Run the algorithm and check the results. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("ca-ES-valencia").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca-valencia").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + /// + /// Retain the region subtag until the final step: + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid_transform::fallback::LocaleFallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.priority = LocaleFallbackPriority::Region; + /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("ca-ES-valencia").into()); + /// + /// // Run the algorithm and check the results. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("ca-ES-valencia").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ca-ES").into()); + /// fallback_iterator.step(); + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("und-ES-valencia").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("und-ES").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + pub priority: LocaleFallbackPriority, + /// An extension keyword to retain during locale fallback. + /// + /// # Examples + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.extension_key = Some(icu_locid::extensions::unicode::key!("nu")); + /// let mut fallback_iterator = fallbacker + /// .for_config(config).fallback_for(locale!("ar-EG-u-nu-latn").into()); + /// + /// // Run the algorithm and check the results. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("ar-EG-u-nu-latn").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ar-EG").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ar-u-nu-latn").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("ar").into()); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + pub extension_key: Option, + /// Fallback supplement data key to customize fallback rules. + /// + /// For example, most data keys for collation add additional parent locales, such as + /// "yue" to "zh-Hant", and data used for the `"-u-co"` extension keyword fallback. + /// + /// Currently the only supported fallback supplement is `LocaleFallbackSupplement::Collation`, but more may be + /// added in the future. + /// + /// # Examples + /// + /// ``` + /// use icu_locid::locale; + /// use icu_locid_transform::fallback::LocaleFallbackPriority; + /// use icu_locid_transform::fallback::LocaleFallbackSupplement; + /// use icu_locid_transform::fallback::LocaleFallbackConfig; + /// use icu_locid_transform::fallback::LocaleFallbacker; + /// + /// // Set up the fallback iterator. + /// let fallbacker = LocaleFallbacker::new(); + /// let mut config = LocaleFallbackConfig::default(); + /// config.priority = LocaleFallbackPriority::Collation; + /// config.fallback_supplement = Some(LocaleFallbackSupplement::Collation); + /// let mut fallback_iterator = fallbacker.for_config(config).fallback_for(locale!("yue-HK").into()); + /// + /// // Run the algorithm and check the results. + /// // TODO(#1964): add "zh" as a target. + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("yue-HK").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("yue").into()); + /// fallback_iterator.step(); + /// assert_eq!( + /// fallback_iterator.get(), + /// &locale!("zh-Hant").into() + /// ); + /// fallback_iterator.step(); + /// assert_eq!(fallback_iterator.get(), &locale!("und").into()); + /// ``` + pub fallback_supplement: Option, +} + +impl LocaleFallbackConfig { + /// Const version of [`Default::default`]. + pub const fn const_default() -> Self { + Self { + priority: LocaleFallbackPriority::const_default(), + extension_key: None, + fallback_supplement: None, + } + } +} + +impl Default for LocaleFallbackConfig { + fn default() -> Self { + Self::const_default() + } +} diff --git a/provider/core/src/key.rs b/provider/core/src/key.rs index 5a825beadf7..0e1e1006e18 100644 --- a/provider/core/src/key.rs +++ b/provider/core/src/key.rs @@ -4,6 +4,7 @@ use crate::error::{DataError, DataErrorKind}; +use crate::fallback::{LocaleFallbackConfig, LocaleFallbackPriority, LocaleFallbackSupplement}; use alloc::borrow::Cow; use core::fmt; use core::fmt::Write; @@ -158,48 +159,6 @@ impl AsULE for DataKeyHash { // Safe since the ULE type is `self`. unsafe impl EqULE for DataKeyHash {} -/// Hint for what to prioritize during fallback when data is unavailable. -/// -/// For example, if `"en-US"` is requested, but we have no data for that specific locale, -/// fallback may take us to `"en"` or `"und-US"` to check for data. -#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] -#[non_exhaustive] -pub enum FallbackPriority { - /// Prioritize the language. This is the default behavior. - /// - /// For example, `"en-US"` should go to `"en"` and then `"und"`. - Language, - /// Prioritize the region. - /// - /// For example, `"en-US"` should go to `"und-US"` and then `"und"`. - Region, - /// Collation-specific fallback rules. Similar to language priority. - /// - /// For example, `"zh-Hant"` goes to `"zh"` before `"und"`. - Collation, -} - -impl FallbackPriority { - /// Const-friendly version of [`Default::default`]. - pub const fn const_default() -> Self { - Self::Language - } -} - -impl Default for FallbackPriority { - fn default() -> Self { - Self::const_default() - } -} - -/// What additional data to load when performing fallback. -#[derive(Debug, PartialEq, Eq, Copy, Clone, PartialOrd, Ord)] -#[non_exhaustive] -pub enum FallbackSupplement { - /// Collation supplement; see `CollationFallbackSupplementV1Marker` - Collation, -} - /// The string path of a data key. For example, "foo@1" #[derive(Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord)] pub struct DataKeyPath { @@ -235,13 +194,13 @@ impl Deref for DataKeyPath { #[non_exhaustive] pub struct DataKeyMetadata { /// What to prioritize when fallbacking on this [`DataKey`]. - pub fallback_priority: FallbackPriority, + pub fallback_priority: LocaleFallbackPriority, /// A Unicode extension keyword to consider when loading data for this [`DataKey`]. pub extension_key: Option, /// Optional choice for additional fallbacking data required for loading this marker. /// /// For more information, see `LocaleFallbackConfig::fallback_supplement`. - pub fallback_supplement: Option, + pub fallback_supplement: Option, /// Whether the key has a singleton value, as opposed to per-locale values. Singleton /// keys behave differently, e.g. they never perform fallback, and can be optimized /// in data providers. @@ -252,7 +211,7 @@ impl DataKeyMetadata { /// Const-friendly version of [`Default::default`]. pub const fn const_default() -> Self { Self { - fallback_priority: FallbackPriority::const_default(), + fallback_priority: LocaleFallbackPriority::const_default(), extension_key: None, fallback_supplement: None, singleton: false, @@ -261,9 +220,9 @@ impl DataKeyMetadata { #[doc(hidden)] pub const fn construct_internal( - fallback_priority: FallbackPriority, + fallback_priority: LocaleFallbackPriority, extension_key: Option, - fallback_supplement: Option, + fallback_supplement: Option, singleton: bool, ) -> Self { Self { @@ -381,6 +340,16 @@ impl DataKey { self.metadata } + /// Returns the [`LocaleFallbackConfig`] for this [`DataKey`]. + #[inline] + pub const fn fallback_config(self) -> LocaleFallbackConfig { + let mut config = LocaleFallbackConfig::const_default(); + config.priority = self.metadata.fallback_priority; + config.extension_key = self.metadata.extension_key; + config.fallback_supplement = self.metadata.fallback_supplement; + config + } + /// Constructs a [`DataKey`] from a path and metadata. /// /// # Examples diff --git a/provider/core/src/lib.rs b/provider/core/src/lib.rs index 8594c1e3982..652f84a6598 100644 --- a/provider/core/src/lib.rs +++ b/provider/core/src/lib.rs @@ -135,6 +135,8 @@ extern crate alloc; mod data_provider; mod error; +#[doc(hidden)] +pub mod fallback; mod key; mod request; mod response; @@ -159,8 +161,6 @@ pub use crate::key::DataKey; pub use crate::key::DataKeyHash; pub use crate::key::DataKeyMetadata; pub use crate::key::DataKeyPath; -pub use crate::key::FallbackPriority; -pub use crate::key::FallbackSupplement; pub use crate::request::DataLocale; pub use crate::request::DataRequest; pub use crate::request::DataRequestMetadata; @@ -246,6 +246,10 @@ pub mod prelude { // Additional crate re-exports for compatibility #[doc(hidden)] +pub use fallback::LocaleFallbackPriority as FallbackPriority; +#[doc(hidden)] +pub use fallback::LocaleFallbackSupplement as FallbackSupplement; +#[doc(hidden)] pub use yoke; #[doc(hidden)] pub use zerofrom; @@ -253,5 +257,6 @@ pub use zerofrom; // For macros #[doc(hidden)] pub mod _internal { - pub use icu_locid::extensions_unicode_key; + pub use super::fallback::{LocaleFallbackPriority, LocaleFallbackSupplement}; + pub use icu_locid as locid; } diff --git a/provider/datagen/src/baked_exporter.rs b/provider/datagen/src/baked_exporter.rs index 91ff4778d1b..8f31e3ca016 100644 --- a/provider/datagen/src/baked_exporter.rs +++ b/provider/datagen/src/baked_exporter.rs @@ -533,8 +533,7 @@ impl BakedExporter { } else { const FALLBACKER: icu_locid_transform::fallback::LocaleFallbackerWithConfig<'static> = icu_locid_transform::fallback::LocaleFallbacker::new() - .for_config(icu_locid_transform::fallback::LocaleFallbackConfig::from_key( - <#marker as icu_provider::KeyedDataMarker>::KEY)); + .for_config(<#marker as icu_provider::KeyedDataMarker>::KEY.fallback_config()); let mut fallback_iterator = FALLBACKER.fallback_for(req.locale.clone()); loop { #maybe_err diff --git a/provider/datagen/src/lib.rs b/provider/datagen/src/lib.rs index 1b160cb4979..e45e9e11294 100644 --- a/provider/datagen/src/lib.rs +++ b/provider/datagen/src/lib.rs @@ -113,7 +113,6 @@ pub mod prelude { } use icu_locid::LanguageIdentifier; -use icu_locid_transform::fallback::LocaleFallbackConfig; use icu_locid_transform::fallback::LocaleFallbackIterator; use icu_locid_transform::fallback::LocaleFallbacker; use icu_provider::datagen::*; @@ -247,8 +246,7 @@ impl DatagenProvider { // TODO: Make including the default locale configurable implicit.insert(DataLocale::default()); let fallbacker = fallbacker.as_ref().map_err(|e| *e)?; - let fallbacker_with_config = - fallbacker.for_config(LocaleFallbackConfig::from_key(key)); + let fallbacker_with_config = fallbacker.for_config(key.fallback_config()); for locale in explicit.iter() { let mut iter = fallbacker_with_config.fallback_for(locale.clone()); @@ -273,7 +271,7 @@ impl DatagenProvider { } if locale.language().is_empty() && matches!( - key.metadata().fallback_priority, + key.fallback_config().priority, icu_provider::FallbackPriority::Region ) { @@ -350,8 +348,9 @@ impl DatagenProvider { iter.step(); } else { let fallbacker = fallbacker.as_ref().map_err(|e| *e)?; - let config = LocaleFallbackConfig::from_key(key); - let iter = fallbacker.for_config(config).fallback_for(locale.clone()); + let iter = fallbacker + .for_config(key.fallback_config()) + .fallback_for(locale.clone()); option_iter.replace(iter); } } @@ -489,7 +488,7 @@ impl DatagenProvider { .collect::, _>>()?; let fallbacker = fallbacker.as_ref().map_err(|e| *e)?; let fallbacker_with_config = - fallbacker.for_config(LocaleFallbackConfig::from_key(key)); + fallbacker.for_config(key.fallback_config()); 'outer: for (locale, payload) in payloads.iter() { let mut iter = fallbacker_with_config.fallback_for(locale.clone()); while !iter.get().is_empty() { diff --git a/provider/macros/src/lib.rs b/provider/macros/src/lib.rs index ea6baa8b93a..114784ff777 100644 --- a/provider/macros/src/lib.rs +++ b/provider/macros/src/lib.rs @@ -51,6 +51,19 @@ mod tests; /// by adding symbols with optional key strings: /// /// ``` +/// # // We DO NOT want to pull in the `icu` crate as a dev-dependency, +/// # // because that will rebuild the whole tree in proc macro mode +/// # // when using cargo test --all-features --all-targets. +/// # pub mod icu { +/// # pub mod locid_transform { +/// # pub mod fallback { +/// # pub use icu_provider::_internal::{LocaleFallbackPriority, LocaleFallbackSupplement}; +/// # } +/// # } +/// # pub use icu_provider::_internal::locid; +/// # } +/// use icu::locid_transform::fallback::*; +/// use icu::locid::extensions::unicode::key; /// use icu_provider::prelude::*; /// use std::borrow::Cow; /// @@ -74,30 +87,18 @@ mod tests; /// assert_eq!(&*BarV1Marker::KEY.path(), "demo/bar@1"); /// assert_eq!( /// BarV1Marker::KEY.metadata().fallback_priority, -/// icu_provider::FallbackPriority::Language +/// LocaleFallbackPriority::Language /// ); /// assert_eq!(BarV1Marker::KEY.metadata().extension_key, None); /// /// assert_eq!(&*BazV1Marker::KEY.path(), "demo/baz@1"); /// assert_eq!( /// BazV1Marker::KEY.metadata().fallback_priority, -/// icu_provider::FallbackPriority::Region +/// LocaleFallbackPriority::Region /// ); -/// # // We DO NOT want to pull in the `icu` crate as a dev-dependency, -/// # // because that will rebuild the whole tree in proc macro mode -/// # // when using cargo test --all-features --all-targets. -/// # pub mod icu { -/// # pub mod locid { -/// # pub mod extensions { -/// # pub mod unicode { -/// # pub use icu_provider::_internal::extensions_unicode_key as key; -/// # } -/// # } -/// # } -/// # } /// assert_eq!( /// BazV1Marker::KEY.metadata().extension_key, -/// Some(icu::locid::extensions::unicode::key!("ca")) +/// Some(key!("ca")) /// ); /// ``` /// @@ -357,28 +358,37 @@ fn data_struct_impl(attr: DataStructArgs, input: DeriveInput) -> TokenStream2 { let key_str = key_lit.value(); let fallback_by_expr = if let Some(fallback_by_lit) = fallback_by { match fallback_by_lit.value().as_str() { - "region" => quote! {icu_provider::FallbackPriority::Region}, - "collation" => quote! {icu_provider::FallbackPriority::Collation}, - "language" => quote! {icu_provider::FallbackPriority::Language}, + "region" => { + quote! {icu_provider::_internal::LocaleFallbackPriority::Region} + } + "collation" => { + quote! {icu_provider::_internal::LocaleFallbackPriority::Collation} + } + "language" => { + quote! {icu_provider::_internal::LocaleFallbackPriority::Language} + } _ => panic!("Invalid value for fallback_by"), } } else { - quote! {icu_provider::FallbackPriority::const_default()} + quote! {icu_provider::_internal::LocaleFallbackPriority::const_default()} }; let extension_key_expr = if let Some(extension_key_lit) = extension_key { - quote! {Some(icu_provider::_internal::extensions_unicode_key!(#extension_key_lit))} + quote! {Some(icu_provider::_internal::locid::extensions::unicode::key!(#extension_key_lit))} } else { quote! {None} }; - let fallback_supplement_expr = - if let Some(fallback_supplement_lit) = fallback_supplement { - match fallback_supplement_lit.value().as_str() { - "collation" => quote! {Some(icu_provider::FallbackSupplement::Collation)}, - _ => panic!("Invalid value for fallback_supplement"), + let fallback_supplement_expr = if let Some(fallback_supplement_lit) = + fallback_supplement + { + match fallback_supplement_lit.value().as_str() { + "collation" => { + quote! {Some(icu_provider::_internal::LocaleFallbackSupplement::Collation)} } - } else { - quote! {None} - }; + _ => panic!("Invalid value for fallback_supplement"), + } + } else { + quote! {None} + }; result.extend(quote!( impl icu_provider::KeyedDataMarker for #marker_name { const KEY: icu_provider::DataKey = icu_provider::data_key!(#key_str, icu_provider::DataKeyMetadata::construct_internal( diff --git a/provider/macros/src/tests.rs b/provider/macros/src/tests.rs index 9095e11533d..908cf6e334f 100644 --- a/provider/macros/src/tests.rs +++ b/provider/macros/src/tests.rs @@ -65,7 +65,7 @@ fn test_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -104,7 +104,7 @@ fn test_multi_named_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -119,7 +119,7 @@ fn test_multi_named_keyed_data_marker() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/baz@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -151,7 +151,7 @@ fn test_databake() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::const_default(), + icu_provider::_internal::LocaleFallbackPriority::const_default(), None, None, false, @@ -197,9 +197,9 @@ fn test_attributes() { const KEY: icu_provider::DataKey = icu_provider::data_key!( "demo/bar@1", icu_provider::DataKeyMetadata::construct_internal( - icu_provider::FallbackPriority::Region, - Some(icu_provider::_internal::extensions_unicode_key!("ca")), - Some(icu_provider::FallbackSupplement::Collation), + icu_provider::_internal::LocaleFallbackPriority::Region, + Some(icu_provider::_internal::locid::extensions::unicode::key!("ca")), + Some(icu_provider::_internal::LocaleFallbackSupplement::Collation), true, )); } diff --git a/tools/ffi_coverage/src/main.rs b/tools/ffi_coverage/src/main.rs index ab60101a9c3..677877536dc 100644 --- a/tools/ffi_coverage/src/main.rs +++ b/tools/ffi_coverage/src/main.rs @@ -184,6 +184,42 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: if let Some(item) = &krate.index.get(import.id.as_ref().unwrap()) { recurse(item, krate, types, path, true, None); } else if let Some(item) = &krate.paths.get(import.id.as_ref().unwrap()) { + // This is a reexport of a hidden module, which works fine in HTML doc but + // doesn't seem to be reachable anywhere in JSON. + if matches!(import.source.as_str(), "icu_provider::fallback") { + insert_ty( + types, + vec![ + "icu".to_string(), + "locid_transform".to_string(), + "fallback".to_string(), + "LocaleFallbackConfig".to_string(), + ], + ast::DocType::Struct, + ); + insert_ty( + types, + vec![ + "icu".to_string(), + "locid_transform".to_string(), + "fallback".to_string(), + "LocaleFallbackPriority".to_string(), + ], + ast::DocType::Enum, + ); + insert_ty( + types, + vec![ + "icu".to_string(), + "locid_transform".to_string(), + "fallback".to_string(), + "LocaleFallbackSupplement".to_string(), + ], + ast::DocType::Enum, + ); + return; + } + // External crate. This is quite complicated and while it works, I'm not sure // it's correct. This basically handles the case `pub use other_crate::module::Struct`, // which means we have to parse `other_crate`, then look for `module`, then look @@ -209,7 +245,7 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: } _ => item.name.as_deref() == Some(segment), }) - .unwrap(); + .expect(&import.source); } _ => unreachable!(), } @@ -357,6 +393,7 @@ fn collect_public_types(krate: &str) -> impl Iterator, ast:: }; insert_ty(types, path, doc_type); } + ItemEnum::ProcMacro(..) => {} _ => todo!("{:?}", item), } }