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 }