tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

date_formatter.rs (86818B)


      1 // This file is part of ICU4X. For terms of use, please see the file
      2 // called LICENSE at the top level of the ICU4X source tree
      3 // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
      4 
      5 // @generated by tools/make/codegen/src/capi_datetime.rs
      6 
      7 #[rustfmt::skip]
      8 #[diplomat::bridge]
      9 #[diplomat::abi_rename = "icu4x_{0}_mv1"]
     10 #[diplomat::attr(auto, namespace = "icu4x")]
     11 pub mod ffi {
     12    use alloc::boxed::Box;
     13    use icu_calendar::Gregorian;
     14    use writeable::Writeable;
     15 
     16    #[allow(unused_imports)]
     17    use crate::datetime_helpers::map_or_default;
     18 
     19    #[allow(unused_imports)]
     20    use crate::unstable::{
     21        date::ffi::{Date, IsoDate},
     22        datetime::ffi::DateTime,
     23        datetime_options::ffi::{DateTimeAlignment, DateTimeLength, TimePrecision, YearStyle},
     24        errors::ffi::DateTimeFormatterLoadError,
     25        errors::ffi::DateTimeMismatchedCalendarError,
     26        locale_core::ffi::Locale,
     27        time::ffi::Time,
     28    };
     29 
     30    #[cfg(feature = "buffer_provider")]
     31    use crate::unstable::provider::ffi::DataProvider;
     32 
     33    #[diplomat::opaque]
     34    #[diplomat::rust_link(icu::datetime::DateTimeFormatter, Struct)]
     35    pub struct DateFormatter(
     36        pub  icu_datetime::DateTimeFormatter<
     37            icu_datetime::fieldsets::enums::DateFieldSet,
     38        >,
     39    );
     40 
     41    impl DateFormatter {
     42        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "d")]
     43        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
     44        #[diplomat::rust_link(icu::datetime::fieldsets::D, Struct)]
     45        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_alignment, FnInStruct, compact)]
     46        #[diplomat::rust_link(icu::datetime::fieldsets::D::for_length, FnInStruct, compact)]
     47        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_length, FnInStruct, hidden)]
     48        #[diplomat::rust_link(icu::datetime::fieldsets::D::short, FnInStruct, hidden)]
     49        #[diplomat::rust_link(icu::datetime::fieldsets::D::medium, FnInStruct, hidden)]
     50        #[diplomat::rust_link(icu::datetime::fieldsets::D::long, FnInStruct, hidden)]
     51        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time, FnInStruct, hidden)]
     52        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hm, FnInStruct, hidden)]
     53        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hms, FnInStruct, hidden)]
     54        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hmss, FnInStruct, hidden)]
     55        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
     56        #[cfg(feature = "compiled_data")]
     57        pub fn create_d(
     58            locale: &Locale,
     59            length: Option<DateTimeLength>,
     60            alignment: Option<DateTimeAlignment>,
     61        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
     62            let prefs = (&locale.0).into();
     63            let mut options = icu_datetime::fieldsets::D::for_length(map_or_default(length));
     64            options.alignment = alignment.map(Into::into);
     65            Ok(Box::new(Self(
     66                icu_datetime
     67                    ::DateTimeFormatter
     68                    ::try_new(
     69                        prefs,
     70                        options
     71                    )?
     72                .cast_into_fset(),
     73            )))
     74        }
     75        
     76        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "d_with_provider")]
     77        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
     78        #[diplomat::rust_link(icu::datetime::fieldsets::D, Struct)]
     79        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_alignment, FnInStruct, compact)]
     80        #[diplomat::rust_link(icu::datetime::fieldsets::D::for_length, FnInStruct, compact)]
     81        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_length, FnInStruct, hidden)]
     82        #[diplomat::rust_link(icu::datetime::fieldsets::D::short, FnInStruct, hidden)]
     83        #[diplomat::rust_link(icu::datetime::fieldsets::D::medium, FnInStruct, hidden)]
     84        #[diplomat::rust_link(icu::datetime::fieldsets::D::long, FnInStruct, hidden)]
     85        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time, FnInStruct, hidden)]
     86        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hm, FnInStruct, hidden)]
     87        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hms, FnInStruct, hidden)]
     88        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hmss, FnInStruct, hidden)]
     89        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
     90        #[cfg(feature = "buffer_provider")]
     91        pub fn create_d_with_provider(
     92            provider: &DataProvider,
     93            locale: &Locale,
     94            length: Option<DateTimeLength>,
     95            alignment: Option<DateTimeAlignment>,
     96        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
     97            let prefs = (&locale.0).into();
     98            let mut options = icu_datetime::fieldsets::D::for_length(map_or_default(length));
     99            options.alignment = alignment.map(Into::into);
    100            Ok(Box::new(Self(
    101                icu_datetime
    102                    ::DateTimeFormatter
    103                    ::try_new_with_buffer_provider(
    104                        provider.get()?,
    105                        prefs,
    106                        options
    107                    )?
    108                .cast_into_fset(),
    109            )))
    110        }
    111        
    112        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "md")]
    113        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    114        #[diplomat::rust_link(icu::datetime::fieldsets::MD, Struct)]
    115        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_alignment, FnInStruct, compact)]
    116        #[diplomat::rust_link(icu::datetime::fieldsets::MD::for_length, FnInStruct, compact)]
    117        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_length, FnInStruct, hidden)]
    118        #[diplomat::rust_link(icu::datetime::fieldsets::MD::short, FnInStruct, hidden)]
    119        #[diplomat::rust_link(icu::datetime::fieldsets::MD::medium, FnInStruct, hidden)]
    120        #[diplomat::rust_link(icu::datetime::fieldsets::MD::long, FnInStruct, hidden)]
    121        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time, FnInStruct, hidden)]
    122        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hm, FnInStruct, hidden)]
    123        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hms, FnInStruct, hidden)]
    124        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hmss, FnInStruct, hidden)]
    125        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    126        #[cfg(feature = "compiled_data")]
    127        pub fn create_md(
    128            locale: &Locale,
    129            length: Option<DateTimeLength>,
    130            alignment: Option<DateTimeAlignment>,
    131        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    132            let prefs = (&locale.0).into();
    133            let mut options = icu_datetime::fieldsets::MD::for_length(map_or_default(length));
    134            options.alignment = alignment.map(Into::into);
    135            Ok(Box::new(Self(
    136                icu_datetime
    137                    ::DateTimeFormatter
    138                    ::try_new(
    139                        prefs,
    140                        options
    141                    )?
    142                .cast_into_fset(),
    143            )))
    144        }
    145        
    146        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "md_with_provider")]
    147        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    148        #[diplomat::rust_link(icu::datetime::fieldsets::MD, Struct)]
    149        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_alignment, FnInStruct, compact)]
    150        #[diplomat::rust_link(icu::datetime::fieldsets::MD::for_length, FnInStruct, compact)]
    151        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_length, FnInStruct, hidden)]
    152        #[diplomat::rust_link(icu::datetime::fieldsets::MD::short, FnInStruct, hidden)]
    153        #[diplomat::rust_link(icu::datetime::fieldsets::MD::medium, FnInStruct, hidden)]
    154        #[diplomat::rust_link(icu::datetime::fieldsets::MD::long, FnInStruct, hidden)]
    155        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time, FnInStruct, hidden)]
    156        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hm, FnInStruct, hidden)]
    157        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hms, FnInStruct, hidden)]
    158        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hmss, FnInStruct, hidden)]
    159        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    160        #[cfg(feature = "buffer_provider")]
    161        pub fn create_md_with_provider(
    162            provider: &DataProvider,
    163            locale: &Locale,
    164            length: Option<DateTimeLength>,
    165            alignment: Option<DateTimeAlignment>,
    166        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    167            let prefs = (&locale.0).into();
    168            let mut options = icu_datetime::fieldsets::MD::for_length(map_or_default(length));
    169            options.alignment = alignment.map(Into::into);
    170            Ok(Box::new(Self(
    171                icu_datetime
    172                    ::DateTimeFormatter
    173                    ::try_new_with_buffer_provider(
    174                        provider.get()?,
    175                        prefs,
    176                        options
    177                    )?
    178                .cast_into_fset(),
    179            )))
    180        }
    181        
    182        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymd")]
    183        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    184        #[diplomat::rust_link(icu::datetime::fieldsets::YMD, Struct)]
    185        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_alignment, FnInStruct, compact)]
    186        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_year_style, FnInStruct, compact)]
    187        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::for_length, FnInStruct, compact)]
    188        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_length, FnInStruct, hidden)]
    189        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::short, FnInStruct, hidden)]
    190        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::medium, FnInStruct, hidden)]
    191        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::long, FnInStruct, hidden)]
    192        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time, FnInStruct, hidden)]
    193        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hm, FnInStruct, hidden)]
    194        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hms, FnInStruct, hidden)]
    195        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hmss, FnInStruct, hidden)]
    196        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    197        #[diplomat::demo(default_constructor)]
    198        #[cfg(feature = "compiled_data")]
    199        pub fn create_ymd(
    200            locale: &Locale,
    201            length: Option<DateTimeLength>,
    202            alignment: Option<DateTimeAlignment>,
    203            year_style: Option<YearStyle>,
    204        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    205            let prefs = (&locale.0).into();
    206            let mut options = icu_datetime::fieldsets::YMD::for_length(map_or_default(length));
    207            options.alignment = alignment.map(Into::into);
    208            options.year_style = year_style.map(Into::into);
    209            Ok(Box::new(Self(
    210                icu_datetime
    211                    ::DateTimeFormatter
    212                    ::try_new(
    213                        prefs,
    214                        options
    215                    )?
    216                .cast_into_fset(),
    217            )))
    218        }
    219        
    220        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymd_with_provider")]
    221        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    222        #[diplomat::rust_link(icu::datetime::fieldsets::YMD, Struct)]
    223        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_alignment, FnInStruct, compact)]
    224        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_year_style, FnInStruct, compact)]
    225        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::for_length, FnInStruct, compact)]
    226        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_length, FnInStruct, hidden)]
    227        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::short, FnInStruct, hidden)]
    228        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::medium, FnInStruct, hidden)]
    229        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::long, FnInStruct, hidden)]
    230        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time, FnInStruct, hidden)]
    231        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hm, FnInStruct, hidden)]
    232        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hms, FnInStruct, hidden)]
    233        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hmss, FnInStruct, hidden)]
    234        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    235        #[cfg(feature = "buffer_provider")]
    236        pub fn create_ymd_with_provider(
    237            provider: &DataProvider,
    238            locale: &Locale,
    239            length: Option<DateTimeLength>,
    240            alignment: Option<DateTimeAlignment>,
    241            year_style: Option<YearStyle>,
    242        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    243            let prefs = (&locale.0).into();
    244            let mut options = icu_datetime::fieldsets::YMD::for_length(map_or_default(length));
    245            options.alignment = alignment.map(Into::into);
    246            options.year_style = year_style.map(Into::into);
    247            Ok(Box::new(Self(
    248                icu_datetime
    249                    ::DateTimeFormatter
    250                    ::try_new_with_buffer_provider(
    251                        provider.get()?,
    252                        prefs,
    253                        options
    254                    )?
    255                .cast_into_fset(),
    256            )))
    257        }
    258        
    259        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "de")]
    260        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    261        #[diplomat::rust_link(icu::datetime::fieldsets::DE, Struct)]
    262        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_alignment, FnInStruct, compact)]
    263        #[diplomat::rust_link(icu::datetime::fieldsets::DE::for_length, FnInStruct, compact)]
    264        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_length, FnInStruct, hidden)]
    265        #[diplomat::rust_link(icu::datetime::fieldsets::DE::short, FnInStruct, hidden)]
    266        #[diplomat::rust_link(icu::datetime::fieldsets::DE::medium, FnInStruct, hidden)]
    267        #[diplomat::rust_link(icu::datetime::fieldsets::DE::long, FnInStruct, hidden)]
    268        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time, FnInStruct, hidden)]
    269        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hm, FnInStruct, hidden)]
    270        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hms, FnInStruct, hidden)]
    271        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hmss, FnInStruct, hidden)]
    272        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    273        #[cfg(feature = "compiled_data")]
    274        pub fn create_de(
    275            locale: &Locale,
    276            length: Option<DateTimeLength>,
    277            alignment: Option<DateTimeAlignment>,
    278        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    279            let prefs = (&locale.0).into();
    280            let mut options = icu_datetime::fieldsets::DE::for_length(map_or_default(length));
    281            options.alignment = alignment.map(Into::into);
    282            Ok(Box::new(Self(
    283                icu_datetime
    284                    ::DateTimeFormatter
    285                    ::try_new(
    286                        prefs,
    287                        options
    288                    )?
    289                .cast_into_fset(),
    290            )))
    291        }
    292        
    293        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "de_with_provider")]
    294        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    295        #[diplomat::rust_link(icu::datetime::fieldsets::DE, Struct)]
    296        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_alignment, FnInStruct, compact)]
    297        #[diplomat::rust_link(icu::datetime::fieldsets::DE::for_length, FnInStruct, compact)]
    298        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_length, FnInStruct, hidden)]
    299        #[diplomat::rust_link(icu::datetime::fieldsets::DE::short, FnInStruct, hidden)]
    300        #[diplomat::rust_link(icu::datetime::fieldsets::DE::medium, FnInStruct, hidden)]
    301        #[diplomat::rust_link(icu::datetime::fieldsets::DE::long, FnInStruct, hidden)]
    302        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time, FnInStruct, hidden)]
    303        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hm, FnInStruct, hidden)]
    304        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hms, FnInStruct, hidden)]
    305        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hmss, FnInStruct, hidden)]
    306        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    307        #[cfg(feature = "buffer_provider")]
    308        pub fn create_de_with_provider(
    309            provider: &DataProvider,
    310            locale: &Locale,
    311            length: Option<DateTimeLength>,
    312            alignment: Option<DateTimeAlignment>,
    313        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    314            let prefs = (&locale.0).into();
    315            let mut options = icu_datetime::fieldsets::DE::for_length(map_or_default(length));
    316            options.alignment = alignment.map(Into::into);
    317            Ok(Box::new(Self(
    318                icu_datetime
    319                    ::DateTimeFormatter
    320                    ::try_new_with_buffer_provider(
    321                        provider.get()?,
    322                        prefs,
    323                        options
    324                    )?
    325                .cast_into_fset(),
    326            )))
    327        }
    328        
    329        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "mde")]
    330        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    331        #[diplomat::rust_link(icu::datetime::fieldsets::MDE, Struct)]
    332        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_alignment, FnInStruct, compact)]
    333        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::for_length, FnInStruct, compact)]
    334        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_length, FnInStruct, hidden)]
    335        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::short, FnInStruct, hidden)]
    336        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::medium, FnInStruct, hidden)]
    337        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::long, FnInStruct, hidden)]
    338        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time, FnInStruct, hidden)]
    339        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hm, FnInStruct, hidden)]
    340        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hms, FnInStruct, hidden)]
    341        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hmss, FnInStruct, hidden)]
    342        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    343        #[cfg(feature = "compiled_data")]
    344        pub fn create_mde(
    345            locale: &Locale,
    346            length: Option<DateTimeLength>,
    347            alignment: Option<DateTimeAlignment>,
    348        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    349            let prefs = (&locale.0).into();
    350            let mut options = icu_datetime::fieldsets::MDE::for_length(map_or_default(length));
    351            options.alignment = alignment.map(Into::into);
    352            Ok(Box::new(Self(
    353                icu_datetime
    354                    ::DateTimeFormatter
    355                    ::try_new(
    356                        prefs,
    357                        options
    358                    )?
    359                .cast_into_fset(),
    360            )))
    361        }
    362        
    363        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "mde_with_provider")]
    364        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    365        #[diplomat::rust_link(icu::datetime::fieldsets::MDE, Struct)]
    366        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_alignment, FnInStruct, compact)]
    367        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::for_length, FnInStruct, compact)]
    368        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_length, FnInStruct, hidden)]
    369        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::short, FnInStruct, hidden)]
    370        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::medium, FnInStruct, hidden)]
    371        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::long, FnInStruct, hidden)]
    372        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time, FnInStruct, hidden)]
    373        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hm, FnInStruct, hidden)]
    374        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hms, FnInStruct, hidden)]
    375        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hmss, FnInStruct, hidden)]
    376        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    377        #[cfg(feature = "buffer_provider")]
    378        pub fn create_mde_with_provider(
    379            provider: &DataProvider,
    380            locale: &Locale,
    381            length: Option<DateTimeLength>,
    382            alignment: Option<DateTimeAlignment>,
    383        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    384            let prefs = (&locale.0).into();
    385            let mut options = icu_datetime::fieldsets::MDE::for_length(map_or_default(length));
    386            options.alignment = alignment.map(Into::into);
    387            Ok(Box::new(Self(
    388                icu_datetime
    389                    ::DateTimeFormatter
    390                    ::try_new_with_buffer_provider(
    391                        provider.get()?,
    392                        prefs,
    393                        options
    394                    )?
    395                .cast_into_fset(),
    396            )))
    397        }
    398        
    399        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymde")]
    400        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    401        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE, Struct)]
    402        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_alignment, FnInStruct, compact)]
    403        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_year_style, FnInStruct, compact)]
    404        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::for_length, FnInStruct, compact)]
    405        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_length, FnInStruct, hidden)]
    406        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::short, FnInStruct, hidden)]
    407        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::medium, FnInStruct, hidden)]
    408        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::long, FnInStruct, hidden)]
    409        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time, FnInStruct, hidden)]
    410        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hm, FnInStruct, hidden)]
    411        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hms, FnInStruct, hidden)]
    412        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hmss, FnInStruct, hidden)]
    413        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    414        #[cfg(feature = "compiled_data")]
    415        pub fn create_ymde(
    416            locale: &Locale,
    417            length: Option<DateTimeLength>,
    418            alignment: Option<DateTimeAlignment>,
    419            year_style: Option<YearStyle>,
    420        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    421            let prefs = (&locale.0).into();
    422            let mut options = icu_datetime::fieldsets::YMDE::for_length(map_or_default(length));
    423            options.alignment = alignment.map(Into::into);
    424            options.year_style = year_style.map(Into::into);
    425            Ok(Box::new(Self(
    426                icu_datetime
    427                    ::DateTimeFormatter
    428                    ::try_new(
    429                        prefs,
    430                        options
    431                    )?
    432                .cast_into_fset(),
    433            )))
    434        }
    435        
    436        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymde_with_provider")]
    437        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    438        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE, Struct)]
    439        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_alignment, FnInStruct, compact)]
    440        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_year_style, FnInStruct, compact)]
    441        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::for_length, FnInStruct, compact)]
    442        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_length, FnInStruct, hidden)]
    443        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::short, FnInStruct, hidden)]
    444        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::medium, FnInStruct, hidden)]
    445        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::long, FnInStruct, hidden)]
    446        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time, FnInStruct, hidden)]
    447        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hm, FnInStruct, hidden)]
    448        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hms, FnInStruct, hidden)]
    449        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hmss, FnInStruct, hidden)]
    450        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    451        #[cfg(feature = "buffer_provider")]
    452        pub fn create_ymde_with_provider(
    453            provider: &DataProvider,
    454            locale: &Locale,
    455            length: Option<DateTimeLength>,
    456            alignment: Option<DateTimeAlignment>,
    457            year_style: Option<YearStyle>,
    458        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    459            let prefs = (&locale.0).into();
    460            let mut options = icu_datetime::fieldsets::YMDE::for_length(map_or_default(length));
    461            options.alignment = alignment.map(Into::into);
    462            options.year_style = year_style.map(Into::into);
    463            Ok(Box::new(Self(
    464                icu_datetime
    465                    ::DateTimeFormatter
    466                    ::try_new_with_buffer_provider(
    467                        provider.get()?,
    468                        prefs,
    469                        options
    470                    )?
    471                .cast_into_fset(),
    472            )))
    473        }
    474        
    475        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "e")]
    476        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    477        #[diplomat::rust_link(icu::datetime::fieldsets::E, Struct)]
    478        #[diplomat::rust_link(icu::datetime::fieldsets::E::for_length, FnInStruct, compact)]
    479        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_length, FnInStruct, hidden)]
    480        #[diplomat::rust_link(icu::datetime::fieldsets::E::short, FnInStruct, hidden)]
    481        #[diplomat::rust_link(icu::datetime::fieldsets::E::medium, FnInStruct, hidden)]
    482        #[diplomat::rust_link(icu::datetime::fieldsets::E::long, FnInStruct, hidden)]
    483        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time, FnInStruct, hidden)]
    484        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hm, FnInStruct, hidden)]
    485        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hms, FnInStruct, hidden)]
    486        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hmss, FnInStruct, hidden)]
    487        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    488        #[cfg(feature = "compiled_data")]
    489        pub fn create_e(
    490            locale: &Locale,
    491            length: Option<DateTimeLength>,
    492        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    493            let prefs = (&locale.0).into();
    494            #[allow(unused_mut)]
    495            let mut options = icu_datetime::fieldsets::E::for_length(map_or_default(length));
    496            Ok(Box::new(Self(
    497                icu_datetime
    498                    ::DateTimeFormatter
    499                    ::try_new(
    500                        prefs,
    501                        options
    502                    )?
    503                .cast_into_fset(),
    504            )))
    505        }
    506        
    507        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "e_with_provider")]
    508        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    509        #[diplomat::rust_link(icu::datetime::fieldsets::E, Struct)]
    510        #[diplomat::rust_link(icu::datetime::fieldsets::E::for_length, FnInStruct, compact)]
    511        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_length, FnInStruct, hidden)]
    512        #[diplomat::rust_link(icu::datetime::fieldsets::E::short, FnInStruct, hidden)]
    513        #[diplomat::rust_link(icu::datetime::fieldsets::E::medium, FnInStruct, hidden)]
    514        #[diplomat::rust_link(icu::datetime::fieldsets::E::long, FnInStruct, hidden)]
    515        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time, FnInStruct, hidden)]
    516        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hm, FnInStruct, hidden)]
    517        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hms, FnInStruct, hidden)]
    518        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hmss, FnInStruct, hidden)]
    519        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    520        #[cfg(feature = "buffer_provider")]
    521        pub fn create_e_with_provider(
    522            provider: &DataProvider,
    523            locale: &Locale,
    524            length: Option<DateTimeLength>,
    525        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    526            let prefs = (&locale.0).into();
    527            #[allow(unused_mut)]
    528            let mut options = icu_datetime::fieldsets::E::for_length(map_or_default(length));
    529            Ok(Box::new(Self(
    530                icu_datetime
    531                    ::DateTimeFormatter
    532                    ::try_new_with_buffer_provider(
    533                        provider.get()?,
    534                        prefs,
    535                        options
    536                    )?
    537                .cast_into_fset(),
    538            )))
    539        }
    540        
    541        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "m")]
    542        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    543        #[diplomat::rust_link(icu::datetime::fieldsets::M, Struct)]
    544        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_alignment, FnInStruct, compact)]
    545        #[diplomat::rust_link(icu::datetime::fieldsets::M::for_length, FnInStruct, compact)]
    546        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_length, FnInStruct, hidden)]
    547        #[diplomat::rust_link(icu::datetime::fieldsets::M::short, FnInStruct, hidden)]
    548        #[diplomat::rust_link(icu::datetime::fieldsets::M::medium, FnInStruct, hidden)]
    549        #[diplomat::rust_link(icu::datetime::fieldsets::M::long, FnInStruct, hidden)]
    550        #[cfg(feature = "compiled_data")]
    551        pub fn create_m(
    552            locale: &Locale,
    553            length: Option<DateTimeLength>,
    554            alignment: Option<DateTimeAlignment>,
    555        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    556            let prefs = (&locale.0).into();
    557            let mut options = icu_datetime::fieldsets::M::for_length(map_or_default(length));
    558            options.alignment = alignment.map(Into::into);
    559            Ok(Box::new(Self(
    560                icu_datetime
    561                    ::DateTimeFormatter
    562                    ::try_new(
    563                        prefs,
    564                        options
    565                    )?
    566                .cast_into_fset(),
    567            )))
    568        }
    569        
    570        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "m_with_provider")]
    571        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    572        #[diplomat::rust_link(icu::datetime::fieldsets::M, Struct)]
    573        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_alignment, FnInStruct, compact)]
    574        #[diplomat::rust_link(icu::datetime::fieldsets::M::for_length, FnInStruct, compact)]
    575        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_length, FnInStruct, hidden)]
    576        #[diplomat::rust_link(icu::datetime::fieldsets::M::short, FnInStruct, hidden)]
    577        #[diplomat::rust_link(icu::datetime::fieldsets::M::medium, FnInStruct, hidden)]
    578        #[diplomat::rust_link(icu::datetime::fieldsets::M::long, FnInStruct, hidden)]
    579        #[cfg(feature = "buffer_provider")]
    580        pub fn create_m_with_provider(
    581            provider: &DataProvider,
    582            locale: &Locale,
    583            length: Option<DateTimeLength>,
    584            alignment: Option<DateTimeAlignment>,
    585        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    586            let prefs = (&locale.0).into();
    587            let mut options = icu_datetime::fieldsets::M::for_length(map_or_default(length));
    588            options.alignment = alignment.map(Into::into);
    589            Ok(Box::new(Self(
    590                icu_datetime
    591                    ::DateTimeFormatter
    592                    ::try_new_with_buffer_provider(
    593                        provider.get()?,
    594                        prefs,
    595                        options
    596                    )?
    597                .cast_into_fset(),
    598            )))
    599        }
    600        
    601        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ym")]
    602        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    603        #[diplomat::rust_link(icu::datetime::fieldsets::YM, Struct)]
    604        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_alignment, FnInStruct, compact)]
    605        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_year_style, FnInStruct, compact)]
    606        #[diplomat::rust_link(icu::datetime::fieldsets::YM::for_length, FnInStruct, compact)]
    607        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_length, FnInStruct, hidden)]
    608        #[diplomat::rust_link(icu::datetime::fieldsets::YM::short, FnInStruct, hidden)]
    609        #[diplomat::rust_link(icu::datetime::fieldsets::YM::medium, FnInStruct, hidden)]
    610        #[diplomat::rust_link(icu::datetime::fieldsets::YM::long, FnInStruct, hidden)]
    611        #[cfg(feature = "compiled_data")]
    612        pub fn create_ym(
    613            locale: &Locale,
    614            length: Option<DateTimeLength>,
    615            alignment: Option<DateTimeAlignment>,
    616            year_style: Option<YearStyle>,
    617        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    618            let prefs = (&locale.0).into();
    619            let mut options = icu_datetime::fieldsets::YM::for_length(map_or_default(length));
    620            options.alignment = alignment.map(Into::into);
    621            options.year_style = year_style.map(Into::into);
    622            Ok(Box::new(Self(
    623                icu_datetime
    624                    ::DateTimeFormatter
    625                    ::try_new(
    626                        prefs,
    627                        options
    628                    )?
    629                .cast_into_fset(),
    630            )))
    631        }
    632        
    633        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ym_with_provider")]
    634        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    635        #[diplomat::rust_link(icu::datetime::fieldsets::YM, Struct)]
    636        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_alignment, FnInStruct, compact)]
    637        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_year_style, FnInStruct, compact)]
    638        #[diplomat::rust_link(icu::datetime::fieldsets::YM::for_length, FnInStruct, compact)]
    639        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_length, FnInStruct, hidden)]
    640        #[diplomat::rust_link(icu::datetime::fieldsets::YM::short, FnInStruct, hidden)]
    641        #[diplomat::rust_link(icu::datetime::fieldsets::YM::medium, FnInStruct, hidden)]
    642        #[diplomat::rust_link(icu::datetime::fieldsets::YM::long, FnInStruct, hidden)]
    643        #[cfg(feature = "buffer_provider")]
    644        pub fn create_ym_with_provider(
    645            provider: &DataProvider,
    646            locale: &Locale,
    647            length: Option<DateTimeLength>,
    648            alignment: Option<DateTimeAlignment>,
    649            year_style: Option<YearStyle>,
    650        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    651            let prefs = (&locale.0).into();
    652            let mut options = icu_datetime::fieldsets::YM::for_length(map_or_default(length));
    653            options.alignment = alignment.map(Into::into);
    654            options.year_style = year_style.map(Into::into);
    655            Ok(Box::new(Self(
    656                icu_datetime
    657                    ::DateTimeFormatter
    658                    ::try_new_with_buffer_provider(
    659                        provider.get()?,
    660                        prefs,
    661                        options
    662                    )?
    663                .cast_into_fset(),
    664            )))
    665        }
    666        
    667        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "y")]
    668        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    669        #[diplomat::rust_link(icu::datetime::fieldsets::Y, Struct)]
    670        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_alignment, FnInStruct, compact)]
    671        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_year_style, FnInStruct, compact)]
    672        #[diplomat::rust_link(icu::datetime::fieldsets::Y::for_length, FnInStruct, compact)]
    673        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_length, FnInStruct, hidden)]
    674        #[diplomat::rust_link(icu::datetime::fieldsets::Y::short, FnInStruct, hidden)]
    675        #[diplomat::rust_link(icu::datetime::fieldsets::Y::medium, FnInStruct, hidden)]
    676        #[diplomat::rust_link(icu::datetime::fieldsets::Y::long, FnInStruct, hidden)]
    677        #[cfg(feature = "compiled_data")]
    678        pub fn create_y(
    679            locale: &Locale,
    680            length: Option<DateTimeLength>,
    681            alignment: Option<DateTimeAlignment>,
    682            year_style: Option<YearStyle>,
    683        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    684            let prefs = (&locale.0).into();
    685            let mut options = icu_datetime::fieldsets::Y::for_length(map_or_default(length));
    686            options.alignment = alignment.map(Into::into);
    687            options.year_style = year_style.map(Into::into);
    688            Ok(Box::new(Self(
    689                icu_datetime
    690                    ::DateTimeFormatter
    691                    ::try_new(
    692                        prefs,
    693                        options
    694                    )?
    695                .cast_into_fset(),
    696            )))
    697        }
    698        
    699        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "y_with_provider")]
    700        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::try_new, FnInStruct)]
    701        #[diplomat::rust_link(icu::datetime::fieldsets::Y, Struct)]
    702        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_alignment, FnInStruct, compact)]
    703        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_year_style, FnInStruct, compact)]
    704        #[diplomat::rust_link(icu::datetime::fieldsets::Y::for_length, FnInStruct, compact)]
    705        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_length, FnInStruct, hidden)]
    706        #[diplomat::rust_link(icu::datetime::fieldsets::Y::short, FnInStruct, hidden)]
    707        #[diplomat::rust_link(icu::datetime::fieldsets::Y::medium, FnInStruct, hidden)]
    708        #[diplomat::rust_link(icu::datetime::fieldsets::Y::long, FnInStruct, hidden)]
    709        #[cfg(feature = "buffer_provider")]
    710        pub fn create_y_with_provider(
    711            provider: &DataProvider,
    712            locale: &Locale,
    713            length: Option<DateTimeLength>,
    714            alignment: Option<DateTimeAlignment>,
    715            year_style: Option<YearStyle>,
    716        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    717            let prefs = (&locale.0).into();
    718            let mut options = icu_datetime::fieldsets::Y::for_length(map_or_default(length));
    719            options.alignment = alignment.map(Into::into);
    720            options.year_style = year_style.map(Into::into);
    721            Ok(Box::new(Self(
    722                icu_datetime
    723                    ::DateTimeFormatter
    724                    ::try_new_with_buffer_provider(
    725                        provider.get()?,
    726                        prefs,
    727                        options
    728                    )?
    729                .cast_into_fset(),
    730            )))
    731        }
    732        
    733        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::format, FnInStruct)]
    734        #[diplomat::rust_link(icu::datetime::FormattedDateTime, Struct, hidden)]
    735        #[diplomat::rust_link(icu::datetime::FormattedDateTime::to_string, FnInStruct, hidden)]
    736        pub fn format_iso(
    737            &self,
    738            date: &IsoDate,
    739            write: &mut diplomat_runtime::DiplomatWrite,
    740        ) {
    741            let date = date.0;
    742            let value = date;
    743            let _infallible = self.0.format(&value).write_to(write);
    744        }
    745        
    746        #[diplomat::rust_link(icu::datetime::DateTimeFormatter::format_same_calendar, FnInStruct)]
    747        #[diplomat::rust_link(icu::datetime::FormattedDateTime, Struct, hidden)]
    748        #[diplomat::rust_link(icu::datetime::FormattedDateTime::to_string, FnInStruct, hidden)]
    749        pub fn format_same_calendar(
    750            &self,
    751            date: &Date,
    752            write: &mut diplomat_runtime::DiplomatWrite,
    753        ) -> Result<(), DateTimeMismatchedCalendarError> {
    754            let date = date.0.as_borrowed();
    755            let value = date;
    756            let _infallible = self.0.format_same_calendar(&value)?.write_to(write);
    757            Ok(())
    758        }
    759    }
    760    
    761 
    762    #[diplomat::opaque]
    763    #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter, Struct)]
    764    pub struct DateFormatterGregorian(
    765        pub  icu_datetime::FixedCalendarDateTimeFormatter<
    766            Gregorian,
    767            icu_datetime::fieldsets::enums::DateFieldSet,
    768        >,
    769    );
    770 
    771    impl DateFormatterGregorian {
    772        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "d")]
    773        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    774        #[diplomat::rust_link(icu::datetime::fieldsets::D, Struct)]
    775        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_alignment, FnInStruct, compact)]
    776        #[diplomat::rust_link(icu::datetime::fieldsets::D::for_length, FnInStruct, compact)]
    777        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_length, FnInStruct, hidden)]
    778        #[diplomat::rust_link(icu::datetime::fieldsets::D::short, FnInStruct, hidden)]
    779        #[diplomat::rust_link(icu::datetime::fieldsets::D::medium, FnInStruct, hidden)]
    780        #[diplomat::rust_link(icu::datetime::fieldsets::D::long, FnInStruct, hidden)]
    781        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time, FnInStruct, hidden)]
    782        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hm, FnInStruct, hidden)]
    783        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hms, FnInStruct, hidden)]
    784        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hmss, FnInStruct, hidden)]
    785        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    786        #[cfg(feature = "compiled_data")]
    787        pub fn create_d(
    788            locale: &Locale,
    789            length: Option<DateTimeLength>,
    790            alignment: Option<DateTimeAlignment>,
    791        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    792            let prefs = (&locale.0).into();
    793            let mut options = icu_datetime::fieldsets::D::for_length(map_or_default(length));
    794            options.alignment = alignment.map(Into::into);
    795            Ok(Box::new(Self(
    796                icu_datetime
    797                    ::FixedCalendarDateTimeFormatter
    798                    ::try_new(
    799                        prefs,
    800                        options
    801                    )?
    802                .cast_into_fset(),
    803            )))
    804        }
    805        
    806        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "d_with_provider")]
    807        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    808        #[diplomat::rust_link(icu::datetime::fieldsets::D, Struct)]
    809        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_alignment, FnInStruct, compact)]
    810        #[diplomat::rust_link(icu::datetime::fieldsets::D::for_length, FnInStruct, compact)]
    811        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_length, FnInStruct, hidden)]
    812        #[diplomat::rust_link(icu::datetime::fieldsets::D::short, FnInStruct, hidden)]
    813        #[diplomat::rust_link(icu::datetime::fieldsets::D::medium, FnInStruct, hidden)]
    814        #[diplomat::rust_link(icu::datetime::fieldsets::D::long, FnInStruct, hidden)]
    815        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time, FnInStruct, hidden)]
    816        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hm, FnInStruct, hidden)]
    817        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hms, FnInStruct, hidden)]
    818        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_time_hmss, FnInStruct, hidden)]
    819        #[diplomat::rust_link(icu::datetime::fieldsets::D::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    820        #[cfg(feature = "buffer_provider")]
    821        pub fn create_d_with_provider(
    822            provider: &DataProvider,
    823            locale: &Locale,
    824            length: Option<DateTimeLength>,
    825            alignment: Option<DateTimeAlignment>,
    826        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    827            let prefs = (&locale.0).into();
    828            let mut options = icu_datetime::fieldsets::D::for_length(map_or_default(length));
    829            options.alignment = alignment.map(Into::into);
    830            Ok(Box::new(Self(
    831                icu_datetime
    832                    ::FixedCalendarDateTimeFormatter
    833                    ::try_new_with_buffer_provider(
    834                        provider.get()?,
    835                        prefs,
    836                        options
    837                    )?
    838                .cast_into_fset(),
    839            )))
    840        }
    841        
    842        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "md")]
    843        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    844        #[diplomat::rust_link(icu::datetime::fieldsets::MD, Struct)]
    845        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_alignment, FnInStruct, compact)]
    846        #[diplomat::rust_link(icu::datetime::fieldsets::MD::for_length, FnInStruct, compact)]
    847        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_length, FnInStruct, hidden)]
    848        #[diplomat::rust_link(icu::datetime::fieldsets::MD::short, FnInStruct, hidden)]
    849        #[diplomat::rust_link(icu::datetime::fieldsets::MD::medium, FnInStruct, hidden)]
    850        #[diplomat::rust_link(icu::datetime::fieldsets::MD::long, FnInStruct, hidden)]
    851        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time, FnInStruct, hidden)]
    852        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hm, FnInStruct, hidden)]
    853        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hms, FnInStruct, hidden)]
    854        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hmss, FnInStruct, hidden)]
    855        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    856        #[cfg(feature = "compiled_data")]
    857        pub fn create_md(
    858            locale: &Locale,
    859            length: Option<DateTimeLength>,
    860            alignment: Option<DateTimeAlignment>,
    861        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    862            let prefs = (&locale.0).into();
    863            let mut options = icu_datetime::fieldsets::MD::for_length(map_or_default(length));
    864            options.alignment = alignment.map(Into::into);
    865            Ok(Box::new(Self(
    866                icu_datetime
    867                    ::FixedCalendarDateTimeFormatter
    868                    ::try_new(
    869                        prefs,
    870                        options
    871                    )?
    872                .cast_into_fset(),
    873            )))
    874        }
    875        
    876        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "md_with_provider")]
    877        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    878        #[diplomat::rust_link(icu::datetime::fieldsets::MD, Struct)]
    879        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_alignment, FnInStruct, compact)]
    880        #[diplomat::rust_link(icu::datetime::fieldsets::MD::for_length, FnInStruct, compact)]
    881        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_length, FnInStruct, hidden)]
    882        #[diplomat::rust_link(icu::datetime::fieldsets::MD::short, FnInStruct, hidden)]
    883        #[diplomat::rust_link(icu::datetime::fieldsets::MD::medium, FnInStruct, hidden)]
    884        #[diplomat::rust_link(icu::datetime::fieldsets::MD::long, FnInStruct, hidden)]
    885        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time, FnInStruct, hidden)]
    886        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hm, FnInStruct, hidden)]
    887        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hms, FnInStruct, hidden)]
    888        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_time_hmss, FnInStruct, hidden)]
    889        #[diplomat::rust_link(icu::datetime::fieldsets::MD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    890        #[cfg(feature = "buffer_provider")]
    891        pub fn create_md_with_provider(
    892            provider: &DataProvider,
    893            locale: &Locale,
    894            length: Option<DateTimeLength>,
    895            alignment: Option<DateTimeAlignment>,
    896        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    897            let prefs = (&locale.0).into();
    898            let mut options = icu_datetime::fieldsets::MD::for_length(map_or_default(length));
    899            options.alignment = alignment.map(Into::into);
    900            Ok(Box::new(Self(
    901                icu_datetime
    902                    ::FixedCalendarDateTimeFormatter
    903                    ::try_new_with_buffer_provider(
    904                        provider.get()?,
    905                        prefs,
    906                        options
    907                    )?
    908                .cast_into_fset(),
    909            )))
    910        }
    911        
    912        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymd")]
    913        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    914        #[diplomat::rust_link(icu::datetime::fieldsets::YMD, Struct)]
    915        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_alignment, FnInStruct, compact)]
    916        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_year_style, FnInStruct, compact)]
    917        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::for_length, FnInStruct, compact)]
    918        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_length, FnInStruct, hidden)]
    919        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::short, FnInStruct, hidden)]
    920        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::medium, FnInStruct, hidden)]
    921        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::long, FnInStruct, hidden)]
    922        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time, FnInStruct, hidden)]
    923        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hm, FnInStruct, hidden)]
    924        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hms, FnInStruct, hidden)]
    925        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hmss, FnInStruct, hidden)]
    926        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    927        #[diplomat::demo(default_constructor)]
    928        #[cfg(feature = "compiled_data")]
    929        pub fn create_ymd(
    930            locale: &Locale,
    931            length: Option<DateTimeLength>,
    932            alignment: Option<DateTimeAlignment>,
    933            year_style: Option<YearStyle>,
    934        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    935            let prefs = (&locale.0).into();
    936            let mut options = icu_datetime::fieldsets::YMD::for_length(map_or_default(length));
    937            options.alignment = alignment.map(Into::into);
    938            options.year_style = year_style.map(Into::into);
    939            Ok(Box::new(Self(
    940                icu_datetime
    941                    ::FixedCalendarDateTimeFormatter
    942                    ::try_new(
    943                        prefs,
    944                        options
    945                    )?
    946                .cast_into_fset(),
    947            )))
    948        }
    949        
    950        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymd_with_provider")]
    951        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    952        #[diplomat::rust_link(icu::datetime::fieldsets::YMD, Struct)]
    953        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_alignment, FnInStruct, compact)]
    954        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_year_style, FnInStruct, compact)]
    955        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::for_length, FnInStruct, compact)]
    956        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_length, FnInStruct, hidden)]
    957        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::short, FnInStruct, hidden)]
    958        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::medium, FnInStruct, hidden)]
    959        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::long, FnInStruct, hidden)]
    960        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time, FnInStruct, hidden)]
    961        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hm, FnInStruct, hidden)]
    962        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hms, FnInStruct, hidden)]
    963        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_time_hmss, FnInStruct, hidden)]
    964        #[diplomat::rust_link(icu::datetime::fieldsets::YMD::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
    965        #[cfg(feature = "buffer_provider")]
    966        pub fn create_ymd_with_provider(
    967            provider: &DataProvider,
    968            locale: &Locale,
    969            length: Option<DateTimeLength>,
    970            alignment: Option<DateTimeAlignment>,
    971            year_style: Option<YearStyle>,
    972        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
    973            let prefs = (&locale.0).into();
    974            let mut options = icu_datetime::fieldsets::YMD::for_length(map_or_default(length));
    975            options.alignment = alignment.map(Into::into);
    976            options.year_style = year_style.map(Into::into);
    977            Ok(Box::new(Self(
    978                icu_datetime
    979                    ::FixedCalendarDateTimeFormatter
    980                    ::try_new_with_buffer_provider(
    981                        provider.get()?,
    982                        prefs,
    983                        options
    984                    )?
    985                .cast_into_fset(),
    986            )))
    987        }
    988        
    989        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "de")]
    990        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
    991        #[diplomat::rust_link(icu::datetime::fieldsets::DE, Struct)]
    992        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_alignment, FnInStruct, compact)]
    993        #[diplomat::rust_link(icu::datetime::fieldsets::DE::for_length, FnInStruct, compact)]
    994        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_length, FnInStruct, hidden)]
    995        #[diplomat::rust_link(icu::datetime::fieldsets::DE::short, FnInStruct, hidden)]
    996        #[diplomat::rust_link(icu::datetime::fieldsets::DE::medium, FnInStruct, hidden)]
    997        #[diplomat::rust_link(icu::datetime::fieldsets::DE::long, FnInStruct, hidden)]
    998        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time, FnInStruct, hidden)]
    999        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hm, FnInStruct, hidden)]
   1000        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hms, FnInStruct, hidden)]
   1001        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hmss, FnInStruct, hidden)]
   1002        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1003        #[cfg(feature = "compiled_data")]
   1004        pub fn create_de(
   1005            locale: &Locale,
   1006            length: Option<DateTimeLength>,
   1007            alignment: Option<DateTimeAlignment>,
   1008        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1009            let prefs = (&locale.0).into();
   1010            let mut options = icu_datetime::fieldsets::DE::for_length(map_or_default(length));
   1011            options.alignment = alignment.map(Into::into);
   1012            Ok(Box::new(Self(
   1013                icu_datetime
   1014                    ::FixedCalendarDateTimeFormatter
   1015                    ::try_new(
   1016                        prefs,
   1017                        options
   1018                    )?
   1019                .cast_into_fset(),
   1020            )))
   1021        }
   1022        
   1023        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "de_with_provider")]
   1024        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1025        #[diplomat::rust_link(icu::datetime::fieldsets::DE, Struct)]
   1026        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_alignment, FnInStruct, compact)]
   1027        #[diplomat::rust_link(icu::datetime::fieldsets::DE::for_length, FnInStruct, compact)]
   1028        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_length, FnInStruct, hidden)]
   1029        #[diplomat::rust_link(icu::datetime::fieldsets::DE::short, FnInStruct, hidden)]
   1030        #[diplomat::rust_link(icu::datetime::fieldsets::DE::medium, FnInStruct, hidden)]
   1031        #[diplomat::rust_link(icu::datetime::fieldsets::DE::long, FnInStruct, hidden)]
   1032        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time, FnInStruct, hidden)]
   1033        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hm, FnInStruct, hidden)]
   1034        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hms, FnInStruct, hidden)]
   1035        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_time_hmss, FnInStruct, hidden)]
   1036        #[diplomat::rust_link(icu::datetime::fieldsets::DE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1037        #[cfg(feature = "buffer_provider")]
   1038        pub fn create_de_with_provider(
   1039            provider: &DataProvider,
   1040            locale: &Locale,
   1041            length: Option<DateTimeLength>,
   1042            alignment: Option<DateTimeAlignment>,
   1043        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1044            let prefs = (&locale.0).into();
   1045            let mut options = icu_datetime::fieldsets::DE::for_length(map_or_default(length));
   1046            options.alignment = alignment.map(Into::into);
   1047            Ok(Box::new(Self(
   1048                icu_datetime
   1049                    ::FixedCalendarDateTimeFormatter
   1050                    ::try_new_with_buffer_provider(
   1051                        provider.get()?,
   1052                        prefs,
   1053                        options
   1054                    )?
   1055                .cast_into_fset(),
   1056            )))
   1057        }
   1058        
   1059        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "mde")]
   1060        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1061        #[diplomat::rust_link(icu::datetime::fieldsets::MDE, Struct)]
   1062        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_alignment, FnInStruct, compact)]
   1063        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::for_length, FnInStruct, compact)]
   1064        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_length, FnInStruct, hidden)]
   1065        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::short, FnInStruct, hidden)]
   1066        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::medium, FnInStruct, hidden)]
   1067        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::long, FnInStruct, hidden)]
   1068        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time, FnInStruct, hidden)]
   1069        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hm, FnInStruct, hidden)]
   1070        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hms, FnInStruct, hidden)]
   1071        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hmss, FnInStruct, hidden)]
   1072        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1073        #[cfg(feature = "compiled_data")]
   1074        pub fn create_mde(
   1075            locale: &Locale,
   1076            length: Option<DateTimeLength>,
   1077            alignment: Option<DateTimeAlignment>,
   1078        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1079            let prefs = (&locale.0).into();
   1080            let mut options = icu_datetime::fieldsets::MDE::for_length(map_or_default(length));
   1081            options.alignment = alignment.map(Into::into);
   1082            Ok(Box::new(Self(
   1083                icu_datetime
   1084                    ::FixedCalendarDateTimeFormatter
   1085                    ::try_new(
   1086                        prefs,
   1087                        options
   1088                    )?
   1089                .cast_into_fset(),
   1090            )))
   1091        }
   1092        
   1093        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "mde_with_provider")]
   1094        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1095        #[diplomat::rust_link(icu::datetime::fieldsets::MDE, Struct)]
   1096        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_alignment, FnInStruct, compact)]
   1097        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::for_length, FnInStruct, compact)]
   1098        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_length, FnInStruct, hidden)]
   1099        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::short, FnInStruct, hidden)]
   1100        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::medium, FnInStruct, hidden)]
   1101        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::long, FnInStruct, hidden)]
   1102        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time, FnInStruct, hidden)]
   1103        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hm, FnInStruct, hidden)]
   1104        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hms, FnInStruct, hidden)]
   1105        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_time_hmss, FnInStruct, hidden)]
   1106        #[diplomat::rust_link(icu::datetime::fieldsets::MDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1107        #[cfg(feature = "buffer_provider")]
   1108        pub fn create_mde_with_provider(
   1109            provider: &DataProvider,
   1110            locale: &Locale,
   1111            length: Option<DateTimeLength>,
   1112            alignment: Option<DateTimeAlignment>,
   1113        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1114            let prefs = (&locale.0).into();
   1115            let mut options = icu_datetime::fieldsets::MDE::for_length(map_or_default(length));
   1116            options.alignment = alignment.map(Into::into);
   1117            Ok(Box::new(Self(
   1118                icu_datetime
   1119                    ::FixedCalendarDateTimeFormatter
   1120                    ::try_new_with_buffer_provider(
   1121                        provider.get()?,
   1122                        prefs,
   1123                        options
   1124                    )?
   1125                .cast_into_fset(),
   1126            )))
   1127        }
   1128        
   1129        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymde")]
   1130        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1131        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE, Struct)]
   1132        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_alignment, FnInStruct, compact)]
   1133        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_year_style, FnInStruct, compact)]
   1134        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::for_length, FnInStruct, compact)]
   1135        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_length, FnInStruct, hidden)]
   1136        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::short, FnInStruct, hidden)]
   1137        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::medium, FnInStruct, hidden)]
   1138        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::long, FnInStruct, hidden)]
   1139        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time, FnInStruct, hidden)]
   1140        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hm, FnInStruct, hidden)]
   1141        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hms, FnInStruct, hidden)]
   1142        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hmss, FnInStruct, hidden)]
   1143        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1144        #[cfg(feature = "compiled_data")]
   1145        pub fn create_ymde(
   1146            locale: &Locale,
   1147            length: Option<DateTimeLength>,
   1148            alignment: Option<DateTimeAlignment>,
   1149            year_style: Option<YearStyle>,
   1150        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1151            let prefs = (&locale.0).into();
   1152            let mut options = icu_datetime::fieldsets::YMDE::for_length(map_or_default(length));
   1153            options.alignment = alignment.map(Into::into);
   1154            options.year_style = year_style.map(Into::into);
   1155            Ok(Box::new(Self(
   1156                icu_datetime
   1157                    ::FixedCalendarDateTimeFormatter
   1158                    ::try_new(
   1159                        prefs,
   1160                        options
   1161                    )?
   1162                .cast_into_fset(),
   1163            )))
   1164        }
   1165        
   1166        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ymde_with_provider")]
   1167        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1168        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE, Struct)]
   1169        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_alignment, FnInStruct, compact)]
   1170        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_year_style, FnInStruct, compact)]
   1171        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::for_length, FnInStruct, compact)]
   1172        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_length, FnInStruct, hidden)]
   1173        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::short, FnInStruct, hidden)]
   1174        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::medium, FnInStruct, hidden)]
   1175        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::long, FnInStruct, hidden)]
   1176        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time, FnInStruct, hidden)]
   1177        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hm, FnInStruct, hidden)]
   1178        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hms, FnInStruct, hidden)]
   1179        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_time_hmss, FnInStruct, hidden)]
   1180        #[diplomat::rust_link(icu::datetime::fieldsets::YMDE::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1181        #[cfg(feature = "buffer_provider")]
   1182        pub fn create_ymde_with_provider(
   1183            provider: &DataProvider,
   1184            locale: &Locale,
   1185            length: Option<DateTimeLength>,
   1186            alignment: Option<DateTimeAlignment>,
   1187            year_style: Option<YearStyle>,
   1188        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1189            let prefs = (&locale.0).into();
   1190            let mut options = icu_datetime::fieldsets::YMDE::for_length(map_or_default(length));
   1191            options.alignment = alignment.map(Into::into);
   1192            options.year_style = year_style.map(Into::into);
   1193            Ok(Box::new(Self(
   1194                icu_datetime
   1195                    ::FixedCalendarDateTimeFormatter
   1196                    ::try_new_with_buffer_provider(
   1197                        provider.get()?,
   1198                        prefs,
   1199                        options
   1200                    )?
   1201                .cast_into_fset(),
   1202            )))
   1203        }
   1204        
   1205        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "e")]
   1206        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1207        #[diplomat::rust_link(icu::datetime::fieldsets::E, Struct)]
   1208        #[diplomat::rust_link(icu::datetime::fieldsets::E::for_length, FnInStruct, compact)]
   1209        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_length, FnInStruct, hidden)]
   1210        #[diplomat::rust_link(icu::datetime::fieldsets::E::short, FnInStruct, hidden)]
   1211        #[diplomat::rust_link(icu::datetime::fieldsets::E::medium, FnInStruct, hidden)]
   1212        #[diplomat::rust_link(icu::datetime::fieldsets::E::long, FnInStruct, hidden)]
   1213        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time, FnInStruct, hidden)]
   1214        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hm, FnInStruct, hidden)]
   1215        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hms, FnInStruct, hidden)]
   1216        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hmss, FnInStruct, hidden)]
   1217        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1218        #[cfg(feature = "compiled_data")]
   1219        pub fn create_e(
   1220            locale: &Locale,
   1221            length: Option<DateTimeLength>,
   1222        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1223            let prefs = (&locale.0).into();
   1224            #[allow(unused_mut)]
   1225            let mut options = icu_datetime::fieldsets::E::for_length(map_or_default(length));
   1226            Ok(Box::new(Self(
   1227                icu_datetime
   1228                    ::FixedCalendarDateTimeFormatter
   1229                    ::try_new(
   1230                        prefs,
   1231                        options
   1232                    )?
   1233                .cast_into_fset(),
   1234            )))
   1235        }
   1236        
   1237        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "e_with_provider")]
   1238        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1239        #[diplomat::rust_link(icu::datetime::fieldsets::E, Struct)]
   1240        #[diplomat::rust_link(icu::datetime::fieldsets::E::for_length, FnInStruct, compact)]
   1241        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_length, FnInStruct, hidden)]
   1242        #[diplomat::rust_link(icu::datetime::fieldsets::E::short, FnInStruct, hidden)]
   1243        #[diplomat::rust_link(icu::datetime::fieldsets::E::medium, FnInStruct, hidden)]
   1244        #[diplomat::rust_link(icu::datetime::fieldsets::E::long, FnInStruct, hidden)]
   1245        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time, FnInStruct, hidden)]
   1246        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hm, FnInStruct, hidden)]
   1247        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hms, FnInStruct, hidden)]
   1248        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_time_hmss, FnInStruct, hidden)]
   1249        #[diplomat::rust_link(icu::datetime::fieldsets::E::with_zone, FnInStruct, hidden)] // functionality is in the zoned formatter but rustlink is here
   1250        #[cfg(feature = "buffer_provider")]
   1251        pub fn create_e_with_provider(
   1252            provider: &DataProvider,
   1253            locale: &Locale,
   1254            length: Option<DateTimeLength>,
   1255        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1256            let prefs = (&locale.0).into();
   1257            #[allow(unused_mut)]
   1258            let mut options = icu_datetime::fieldsets::E::for_length(map_or_default(length));
   1259            Ok(Box::new(Self(
   1260                icu_datetime
   1261                    ::FixedCalendarDateTimeFormatter
   1262                    ::try_new_with_buffer_provider(
   1263                        provider.get()?,
   1264                        prefs,
   1265                        options
   1266                    )?
   1267                .cast_into_fset(),
   1268            )))
   1269        }
   1270        
   1271        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "m")]
   1272        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1273        #[diplomat::rust_link(icu::datetime::fieldsets::M, Struct)]
   1274        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_alignment, FnInStruct, compact)]
   1275        #[diplomat::rust_link(icu::datetime::fieldsets::M::for_length, FnInStruct, compact)]
   1276        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_length, FnInStruct, hidden)]
   1277        #[diplomat::rust_link(icu::datetime::fieldsets::M::short, FnInStruct, hidden)]
   1278        #[diplomat::rust_link(icu::datetime::fieldsets::M::medium, FnInStruct, hidden)]
   1279        #[diplomat::rust_link(icu::datetime::fieldsets::M::long, FnInStruct, hidden)]
   1280        #[cfg(feature = "compiled_data")]
   1281        pub fn create_m(
   1282            locale: &Locale,
   1283            length: Option<DateTimeLength>,
   1284            alignment: Option<DateTimeAlignment>,
   1285        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1286            let prefs = (&locale.0).into();
   1287            let mut options = icu_datetime::fieldsets::M::for_length(map_or_default(length));
   1288            options.alignment = alignment.map(Into::into);
   1289            Ok(Box::new(Self(
   1290                icu_datetime
   1291                    ::FixedCalendarDateTimeFormatter
   1292                    ::try_new(
   1293                        prefs,
   1294                        options
   1295                    )?
   1296                .cast_into_fset(),
   1297            )))
   1298        }
   1299        
   1300        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "m_with_provider")]
   1301        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1302        #[diplomat::rust_link(icu::datetime::fieldsets::M, Struct)]
   1303        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_alignment, FnInStruct, compact)]
   1304        #[diplomat::rust_link(icu::datetime::fieldsets::M::for_length, FnInStruct, compact)]
   1305        #[diplomat::rust_link(icu::datetime::fieldsets::M::with_length, FnInStruct, hidden)]
   1306        #[diplomat::rust_link(icu::datetime::fieldsets::M::short, FnInStruct, hidden)]
   1307        #[diplomat::rust_link(icu::datetime::fieldsets::M::medium, FnInStruct, hidden)]
   1308        #[diplomat::rust_link(icu::datetime::fieldsets::M::long, FnInStruct, hidden)]
   1309        #[cfg(feature = "buffer_provider")]
   1310        pub fn create_m_with_provider(
   1311            provider: &DataProvider,
   1312            locale: &Locale,
   1313            length: Option<DateTimeLength>,
   1314            alignment: Option<DateTimeAlignment>,
   1315        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1316            let prefs = (&locale.0).into();
   1317            let mut options = icu_datetime::fieldsets::M::for_length(map_or_default(length));
   1318            options.alignment = alignment.map(Into::into);
   1319            Ok(Box::new(Self(
   1320                icu_datetime
   1321                    ::FixedCalendarDateTimeFormatter
   1322                    ::try_new_with_buffer_provider(
   1323                        provider.get()?,
   1324                        prefs,
   1325                        options
   1326                    )?
   1327                .cast_into_fset(),
   1328            )))
   1329        }
   1330        
   1331        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ym")]
   1332        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1333        #[diplomat::rust_link(icu::datetime::fieldsets::YM, Struct)]
   1334        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_alignment, FnInStruct, compact)]
   1335        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_year_style, FnInStruct, compact)]
   1336        #[diplomat::rust_link(icu::datetime::fieldsets::YM::for_length, FnInStruct, compact)]
   1337        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_length, FnInStruct, hidden)]
   1338        #[diplomat::rust_link(icu::datetime::fieldsets::YM::short, FnInStruct, hidden)]
   1339        #[diplomat::rust_link(icu::datetime::fieldsets::YM::medium, FnInStruct, hidden)]
   1340        #[diplomat::rust_link(icu::datetime::fieldsets::YM::long, FnInStruct, hidden)]
   1341        #[cfg(feature = "compiled_data")]
   1342        pub fn create_ym(
   1343            locale: &Locale,
   1344            length: Option<DateTimeLength>,
   1345            alignment: Option<DateTimeAlignment>,
   1346            year_style: Option<YearStyle>,
   1347        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1348            let prefs = (&locale.0).into();
   1349            let mut options = icu_datetime::fieldsets::YM::for_length(map_or_default(length));
   1350            options.alignment = alignment.map(Into::into);
   1351            options.year_style = year_style.map(Into::into);
   1352            Ok(Box::new(Self(
   1353                icu_datetime
   1354                    ::FixedCalendarDateTimeFormatter
   1355                    ::try_new(
   1356                        prefs,
   1357                        options
   1358                    )?
   1359                .cast_into_fset(),
   1360            )))
   1361        }
   1362        
   1363        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "ym_with_provider")]
   1364        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1365        #[diplomat::rust_link(icu::datetime::fieldsets::YM, Struct)]
   1366        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_alignment, FnInStruct, compact)]
   1367        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_year_style, FnInStruct, compact)]
   1368        #[diplomat::rust_link(icu::datetime::fieldsets::YM::for_length, FnInStruct, compact)]
   1369        #[diplomat::rust_link(icu::datetime::fieldsets::YM::with_length, FnInStruct, hidden)]
   1370        #[diplomat::rust_link(icu::datetime::fieldsets::YM::short, FnInStruct, hidden)]
   1371        #[diplomat::rust_link(icu::datetime::fieldsets::YM::medium, FnInStruct, hidden)]
   1372        #[diplomat::rust_link(icu::datetime::fieldsets::YM::long, FnInStruct, hidden)]
   1373        #[cfg(feature = "buffer_provider")]
   1374        pub fn create_ym_with_provider(
   1375            provider: &DataProvider,
   1376            locale: &Locale,
   1377            length: Option<DateTimeLength>,
   1378            alignment: Option<DateTimeAlignment>,
   1379            year_style: Option<YearStyle>,
   1380        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1381            let prefs = (&locale.0).into();
   1382            let mut options = icu_datetime::fieldsets::YM::for_length(map_or_default(length));
   1383            options.alignment = alignment.map(Into::into);
   1384            options.year_style = year_style.map(Into::into);
   1385            Ok(Box::new(Self(
   1386                icu_datetime
   1387                    ::FixedCalendarDateTimeFormatter
   1388                    ::try_new_with_buffer_provider(
   1389                        provider.get()?,
   1390                        prefs,
   1391                        options
   1392                    )?
   1393                .cast_into_fset(),
   1394            )))
   1395        }
   1396        
   1397        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "y")]
   1398        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1399        #[diplomat::rust_link(icu::datetime::fieldsets::Y, Struct)]
   1400        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_alignment, FnInStruct, compact)]
   1401        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_year_style, FnInStruct, compact)]
   1402        #[diplomat::rust_link(icu::datetime::fieldsets::Y::for_length, FnInStruct, compact)]
   1403        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_length, FnInStruct, hidden)]
   1404        #[diplomat::rust_link(icu::datetime::fieldsets::Y::short, FnInStruct, hidden)]
   1405        #[diplomat::rust_link(icu::datetime::fieldsets::Y::medium, FnInStruct, hidden)]
   1406        #[diplomat::rust_link(icu::datetime::fieldsets::Y::long, FnInStruct, hidden)]
   1407        #[cfg(feature = "compiled_data")]
   1408        pub fn create_y(
   1409            locale: &Locale,
   1410            length: Option<DateTimeLength>,
   1411            alignment: Option<DateTimeAlignment>,
   1412            year_style: Option<YearStyle>,
   1413        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1414            let prefs = (&locale.0).into();
   1415            let mut options = icu_datetime::fieldsets::Y::for_length(map_or_default(length));
   1416            options.alignment = alignment.map(Into::into);
   1417            options.year_style = year_style.map(Into::into);
   1418            Ok(Box::new(Self(
   1419                icu_datetime
   1420                    ::FixedCalendarDateTimeFormatter
   1421                    ::try_new(
   1422                        prefs,
   1423                        options
   1424                    )?
   1425                .cast_into_fset(),
   1426            )))
   1427        }
   1428        
   1429        #[diplomat::attr(all(supports = fallible_constructors, supports = named_constructors), named_constructor = "y_with_provider")]
   1430        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::try_new, FnInStruct)]
   1431        #[diplomat::rust_link(icu::datetime::fieldsets::Y, Struct)]
   1432        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_alignment, FnInStruct, compact)]
   1433        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_year_style, FnInStruct, compact)]
   1434        #[diplomat::rust_link(icu::datetime::fieldsets::Y::for_length, FnInStruct, compact)]
   1435        #[diplomat::rust_link(icu::datetime::fieldsets::Y::with_length, FnInStruct, hidden)]
   1436        #[diplomat::rust_link(icu::datetime::fieldsets::Y::short, FnInStruct, hidden)]
   1437        #[diplomat::rust_link(icu::datetime::fieldsets::Y::medium, FnInStruct, hidden)]
   1438        #[diplomat::rust_link(icu::datetime::fieldsets::Y::long, FnInStruct, hidden)]
   1439        #[cfg(feature = "buffer_provider")]
   1440        pub fn create_y_with_provider(
   1441            provider: &DataProvider,
   1442            locale: &Locale,
   1443            length: Option<DateTimeLength>,
   1444            alignment: Option<DateTimeAlignment>,
   1445            year_style: Option<YearStyle>,
   1446        ) -> Result<Box<Self>, DateTimeFormatterLoadError> {
   1447            let prefs = (&locale.0).into();
   1448            let mut options = icu_datetime::fieldsets::Y::for_length(map_or_default(length));
   1449            options.alignment = alignment.map(Into::into);
   1450            options.year_style = year_style.map(Into::into);
   1451            Ok(Box::new(Self(
   1452                icu_datetime
   1453                    ::FixedCalendarDateTimeFormatter
   1454                    ::try_new_with_buffer_provider(
   1455                        provider.get()?,
   1456                        prefs,
   1457                        options
   1458                    )?
   1459                .cast_into_fset(),
   1460            )))
   1461        }
   1462        
   1463        #[diplomat::rust_link(icu::datetime::FixedCalendarDateTimeFormatter::format, FnInStruct)]
   1464        #[diplomat::rust_link(icu::datetime::FormattedDateTime, Struct, hidden)]
   1465        #[diplomat::rust_link(icu::datetime::FormattedDateTime::to_string, FnInStruct, hidden)]
   1466        pub fn format_iso(
   1467            &self,
   1468            date: &IsoDate,
   1469            write: &mut diplomat_runtime::DiplomatWrite,
   1470        ) {
   1471            let date = date.0.to_calendar(Gregorian);
   1472            let value = date;
   1473            let _infallible = self.0.format(&value).write_to(write);
   1474        }
   1475        
   1476    }
   1477    
   1478 }