diff --git a/Cargo.lock b/Cargo.lock index d5b9685..76c7c5e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1017,9 +1017,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "calendrical_calculations" -version = "0.1.3" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e97f73e95d668625c9b28a3072e6326773785a0cf807de9f3d632778438f3d38" +checksum = "53c5d386a9f2c8b97e1a036420bcf937db4e5c9df33eb0232025008ced6104c0" dependencies = [ "core_maths", "displaydoc", @@ -1676,7 +1676,7 @@ dependencies = [ "dirs 6.0.0", "downcast-rs 2.0.1", "eyre", - "fixed_decimal", + "fixed_decimal 0.5.6", "fontdb 0.23.0", "freedesktop-desktop-entry", "futures", @@ -2536,6 +2536,17 @@ dependencies = [ "writeable 0.5.5", ] +[[package]] +name = "fixed_decimal" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35943d22b2f19c0cb198ecf915910a8158e94541c89dcc63300d7799d46c2c5e" +dependencies = [ + "displaydoc", + "smallvec", + "writeable 0.6.1", +] + [[package]] name = "flate2" version = "1.1.2" @@ -3479,109 +3490,100 @@ dependencies = [ [[package]] name = "icu" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff5e3018d703f168b00dcefa540a65f1bbc50754ae32f3f5f0e43fe5ee51502" +checksum = "ab13fe39da5da564b88228e9f08815c9d0efbe9ec244e72b149d9994e10f1054" dependencies = [ "icu_calendar", "icu_casemap", "icu_collator", - "icu_collections 1.5.0", + "icu_collections", "icu_datetime", "icu_decimal", "icu_experimental", "icu_list", - "icu_locid", - "icu_locid_transform", - "icu_normalizer 1.5.0", + "icu_locale", + "icu_normalizer", + "icu_pattern", "icu_plurals", - "icu_properties 1.5.1", - "icu_provider 1.5.0", + "icu_properties", + "icu_provider", "icu_segmenter", - "icu_timezone", + "icu_time", ] [[package]] name = "icu_calendar" -version = "1.5.2" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7265b2137f9a36f7634a308d91f984574bbdba8cfd95ceffe1c345552275a8ff" +checksum = "1f6c40ba6481ed7ddd358437af0f000eb9f661345845977d9d1b38e606374e1f" dependencies = [ "calendrical_calculations", "displaydoc", "icu_calendar_data", - "icu_locid", - "icu_locid_transform", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", + "icu_locale", + "icu_locale_core", + "icu_provider", + "ixdtf", + "tinystr", + "writeable 0.6.1", + "zerovec", ] [[package]] name = "icu_calendar_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "820499e77e852162190608b4f444e7b4552619150eafc39a9e39333d9efae9e1" +checksum = "7219c8639ab936713a87b571eed2bc2615aa9137e8af6eb221446ee5644acc18" [[package]] name = "icu_casemap" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff0c8ae9f8d31b12e27fc385ff9ab1f3cd9b17417c665c49e4ec958c37da75f" +checksum = "6dc5e74b3c9d7b63e0d7c5fd54ee8c135705df2ea2aa558082dd555dc9747a97" dependencies = [ "displaydoc", "icu_casemap_data", - "icu_collections 1.5.0", - "icu_locid", - "icu_properties 1.5.1", - "icu_provider 1.5.0", - "writeable 0.5.5", - "zerovec 0.10.4", + "icu_collections", + "icu_locale_core", + "icu_properties", + "icu_provider", + "potential_utf", + "writeable 0.6.1", + "zerovec", ] [[package]] name = "icu_casemap_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd9f6276270c85a5cd54611adbbf94e993ec464a2a86a452a6c565b7ded5d9" +checksum = "f7584067558ab4c60c95d1ac2abd1588689cb4bcd4e099507f62dae86ae8d2c0" [[package]] name = "icu_collator" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d370371887d31d56f361c3eaa15743e54f13bc677059c9191c77e099ed6966b2" +checksum = "42ad4c6a556938dfd31f75a8c54141079e8821dc697ffb799cfe0f0fa11f2edc" dependencies = [ "displaydoc", "icu_collator_data", - "icu_collections 1.5.0", - "icu_locid_transform", - "icu_normalizer 1.5.0", - "icu_properties 1.5.1", - "icu_provider 1.5.0", + "icu_collections", + "icu_locale", + "icu_locale_core", + "icu_normalizer", + "icu_properties", + "icu_provider", "smallvec", "utf16_iter", "utf8_iter", - "zerovec 0.10.4", + "zerovec", ] [[package]] name = "icu_collator_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b353986d77d28991eca4dea5ef2b8982f639342ae19ca81edc44f048bc38ebb" - -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke 0.7.5", - "zerofrom", - "zerovec 0.10.4", -] +checksum = "d880b8e680799eabd90c054e1b95526cd48db16c95269f3c89fb3117e1ac92c5" [[package]] name = "icu_collections" @@ -3591,116 +3593,143 @@ checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", "potential_utf", - "yoke 0.8.0", + "yoke", "zerofrom", - "zerovec 0.11.4", + "zerovec", ] [[package]] name = "icu_datetime" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d115efb85e08df3fd77e77f52e7e087545a783fffba8be80bfa2102f306b1780" +checksum = "0790c15e3d6ae3303365fa2337b4f6469de257916141110d14dcaf73f1d31ac5" dependencies = [ "displaydoc", "either", - "fixed_decimal", + "fixed_decimal 0.7.0", "icu_calendar", "icu_datetime_data", "icu_decimal", - "icu_locid", - "icu_locid_transform", + "icu_locale", + "icu_locale_core", + "icu_pattern", "icu_plurals", - "icu_provider 1.5.0", - "icu_timezone", - "litemap 0.7.5", + "icu_provider", + "icu_time", + "potential_utf", "smallvec", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", + "tinystr", + "writeable 0.6.1", + "zerovec", ] [[package]] name = "icu_datetime_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef5f04076123cab1b7a926a7083db27fe0d7a0e575adb984854aae3f3a6507d" +checksum = "83791ac10bb7b774f130bb81fa89c4059de710dcef53caa0b86e645212d6d54c" [[package]] name = "icu_decimal" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb" +checksum = "fec61c43fdc4e368a9f450272833123a8ef0d7083a44597660ce94d791b8a2e2" dependencies = [ "displaydoc", - "fixed_decimal", + "fixed_decimal 0.7.0", "icu_decimal_data", - "icu_locid_transform", - "icu_provider 1.5.0", - "writeable 0.5.5", + "icu_locale", + "icu_locale_core", + "icu_provider", + "serde", + "tinystr", + "writeable 0.6.1", + "zerovec", ] [[package]] name = "icu_decimal_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c95dd97f5ccf6d837a9c115496ec7d36646fa86ca18e7f1412115b4c820ae2" +checksum = "b70963bc35f9bdf1bc66a5c1f458f4991c1dc71760e00fa06016b2c76b2738d5" [[package]] name = "icu_experimental" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7" +checksum = "ebe3d7e64892a434b08d5a58b53127e47a095ff780305f563c8c01798a1051b0" dependencies = [ "displaydoc", - "fixed_decimal", - "icu_collections 1.5.0", + "either", + "fixed_decimal 0.7.0", + "icu_casemap", + "icu_collections", "icu_decimal", "icu_experimental_data", - "icu_locid", - "icu_locid_transform", - "icu_normalizer 1.5.0", + "icu_list", + "icu_locale", + "icu_locale_core", + "icu_normalizer", "icu_pattern", "icu_plurals", - "icu_properties 1.5.1", - "icu_provider 1.5.0", - "litemap 0.7.5", + "icu_properties", + "icu_provider", + "litemap", "num-bigint", "num-rational", "num-traits", + "potential_utf", "smallvec", - "tinystr 0.7.6", - "writeable 0.5.5", + "tinystr", + "writeable 0.6.1", "zerofrom", - "zerotrie 0.1.3", - "zerovec 0.10.4", + "zerotrie", + "zerovec", ] [[package]] name = "icu_experimental_data" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "121df92eafb8f5286d4e8ff401c1e7db8384377f806db3f8db77b91e5b7bd4dd" +checksum = "b60d32ba5610adfc2083f5a759f55d9a9082ebf72750f126cb1630844eea1acf" [[package]] name = "icu_list" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbfeda1d7775b6548edd4e8b7562304a559a91ed56ab56e18961a053f367c365" +checksum = "e26f94ec776bb8b28cedc7dcf91033b822c5cb4c1783cf7a3f796fc168aa0c8b" dependencies = [ "displaydoc", "icu_list_data", - "icu_locid_transform", - "icu_provider 1.5.0", - "regex-automata 0.2.0", - "writeable 0.5.5", + "icu_locale", + "icu_provider", + "regex-automata 0.4.10", + "serde", + "writeable 0.6.1", + "zerovec", ] [[package]] name = "icu_list_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52b1a7fbdbf3958f1be8354cb59ac73f165b7b7082d447ff2090355c9a069120" +checksum = "5a456a2412458ca45e181d9d51c5090ef8cd90f5692e11d34bafab3b3be1c76b" + +[[package]] +name = "icu_locale" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ae5921528335e91da1b6c695dbf1ec37df5ac13faa3f91e5640be93aa2fbefd" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_locale_data", + "icu_provider", + "potential_utf", + "tinystr", + "zerovec", +] [[package]] name = "icu_locale_core" @@ -3709,62 +3738,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", - "litemap 0.8.0", - "tinystr 0.8.1", + "litemap", + "tinystr", "writeable 0.6.1", - "zerovec 0.11.4", + "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_data" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap 0.7.5", - "tinystr 0.7.6", - "writeable 0.5.5", - "zerovec 0.10.4", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "zerovec 0.10.4", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections 1.5.0", - "icu_normalizer_data 1.5.1", - "icu_properties 1.5.1", - "icu_provider 1.5.0", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec 0.10.4", -] +checksum = "4fdef0c124749d06a743c69e938350816554eb63ac979166590e2b4ee4252765" [[package]] name = "icu_normalizer" @@ -3773,20 +3757,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", - "icu_collections 2.0.0", - "icu_normalizer_data 2.0.0", - "icu_properties 2.0.1", - "icu_provider 2.0.0", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", "smallvec", - "zerovec 0.11.4", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", ] -[[package]] -name = "icu_normalizer_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" - [[package]] name = "icu_normalizer_data" version = "2.0.0" @@ -3795,51 +3776,36 @@ checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_pattern" -version = "0.2.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4" +checksum = "983825f401e6bc4a13c45d552ffd9ad6f3f6b6bc0ec03f31d6835a90a46deb1f" dependencies = [ "displaydoc", "either", - "writeable 0.5.5", - "yoke 0.7.5", - "zerofrom", + "writeable 0.6.1", + "yoke", + "zerovec", ] [[package]] name = "icu_plurals" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a70e7c025dbd5c501b0a5c188cd11666a424f0dadcd4f0a95b7dafde3b114" +checksum = "0fd83a65f58b6f28e1f3da8c6ada6b415ee3ad5cb480b75bdb669f34d72dd179" dependencies = [ "displaydoc", - "fixed_decimal", - "icu_locid_transform", + "fixed_decimal 0.7.0", + "icu_locale", "icu_plurals_data", - "icu_provider 1.5.0", - "zerovec 0.10.4", + "icu_provider", + "zerovec", ] [[package]] name = "icu_plurals_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a483403238cb7d6a876a77a5f8191780336d80fe7b8b00bfdeb20be6abbfd112" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections 1.5.0", - "icu_locid_transform", - "icu_properties_data 1.5.1", - "icu_provider 1.5.0", - "tinystr 0.7.6", - "zerovec 0.10.4", -] +checksum = "9ec552d761eaf4a1c39ad28936e0af77a41bf01ff756ea54be4f8bfc21c265d7" [[package]] name = "icu_properties" @@ -3848,44 +3814,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", - "icu_collections 2.0.0", + "icu_collections", "icu_locale_core", - "icu_properties_data 2.0.1", - "icu_provider 2.0.0", + "icu_properties_data", + "icu_provider", "potential_utf", - "zerotrie 0.2.2", - "zerovec 0.11.4", + "zerotrie", + "zerovec", ] -[[package]] -name = "icu_properties_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" - [[package]] name = "icu_properties_data" version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr 0.7.6", - "writeable 0.5.5", - "yoke 0.7.5", - "zerofrom", - "zerovec 0.10.4", -] - [[package]] name = "icu_provider" version = "2.0.0" @@ -3895,67 +3838,63 @@ dependencies = [ "displaydoc", "icu_locale_core", "stable_deref_trait", - "tinystr 0.8.1", + "tinystr", "writeable 0.6.1", - "yoke 0.8.0", + "yoke", "zerofrom", - "zerotrie 0.2.2", - "zerovec 0.11.4", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "zerotrie", + "zerovec", ] [[package]] name = "icu_segmenter" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de" +checksum = "e185fc13b6401c138cf40db12b863b35f5edf31b88192a545857b41aeaf7d3d3" dependencies = [ "core_maths", "displaydoc", - "icu_collections 1.5.0", - "icu_locid", - "icu_provider 1.5.0", + "icu_collections", + "icu_locale", + "icu_locale_core", + "icu_provider", "icu_segmenter_data", + "potential_utf", "utf8_iter", - "zerovec 0.10.4", + "zerovec", ] [[package]] name = "icu_segmenter_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e52775179941363cc594e49ce99284d13d6948928d8e72c755f55e98caa1eb" +checksum = "5360a2fbe97f617c4f8b944356dedb36d423f7da7f13c070995cf89e59f01220" [[package]] -name = "icu_timezone" -version = "1.5.0" +name = "icu_time" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa91ba6a585939a020c787235daa8aee856d9bceebd6355e283c0c310bc6de96" +checksum = "10d01a4a2dcbc5e5180ef113920e7461d0e9caaddb3567d81c4eca262efe55c0" dependencies = [ + "calendrical_calculations", "displaydoc", "icu_calendar", - "icu_provider 1.5.0", - "icu_timezone_data", - "tinystr 0.7.6", - "zerotrie 0.1.3", - "zerovec 0.10.4", + "icu_locale_core", + "icu_provider", + "icu_time_data", + "ixdtf", + "serde", + "tinystr", + "writeable 0.6.1", + "zerotrie", + "zerovec", ] [[package]] -name = "icu_timezone_data" -version = "1.5.1" +name = "icu_time_data" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1adcf7b613a268af025bc2a2532b4b9ee294e6051c5c0832d8bff20ac0232e68" +checksum = "8472be4410d26a03d7208cae3a76c798dd6766e8226ab977cd8b2d349a6dbf08" [[package]] name = "ident_case" @@ -3980,8 +3919,8 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ - "icu_normalizer 2.0.0", - "icu_properties 2.0.1", + "icu_normalizer", + "icu_properties", ] [[package]] @@ -4225,6 +4164,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "ixdtf" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8289f7f711a1a51f80e2e368355d023042ca55d8d554fd5e953f01464c15842d" +dependencies = [ + "displaydoc", +] + [[package]] name = "jni" version = "0.21.1" @@ -4735,12 +4683,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" -[[package]] -name = "litemap" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" - [[package]] name = "litemap" version = "0.8.0" @@ -6015,7 +5957,8 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" dependencies = [ - "zerovec 0.11.4", + "serde", + "zerovec", ] [[package]] @@ -6470,15 +6413,6 @@ dependencies = [ "regex-syntax 0.6.29", ] -[[package]] -name = "regex-automata" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9368763f5a9b804326f3af749e16f9abf378d227bcdee7634b13d8f17793782" -dependencies = [ - "memchr", -] - [[package]] name = "regex-automata" version = "0.4.10" @@ -7567,16 +7501,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec 0.10.4", -] - [[package]] name = "tinystr" version = "0.8.1" @@ -7584,7 +7508,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", - "zerovec 0.11.4", + "zerovec", ] [[package]] @@ -7838,7 +7762,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dce1bf08044d4b7a94028c93786f8566047edc11110595914de93362559bc658" dependencies = [ "serde", - "tinystr 0.8.1", + "tinystr", ] [[package]] @@ -9034,15 +8958,15 @@ name = "writeable" version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" -dependencies = [ - "either", -] [[package]] name = "writeable" version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" +dependencies = [ + "either", +] [[package]] name = "wyz" @@ -9192,18 +9116,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e01738255b5a16e78bbb83e7fbba0a1e7dd506905cfc53f4622d89015a03fbb5" -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive 0.7.5", - "zerofrom", -] - [[package]] name = "yoke" version = "0.8.0" @@ -9212,22 +9124,10 @@ checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", - "yoke-derive 0.8.0", + "yoke-derive", "zerofrom", ] -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", - "synstructure", -] - [[package]] name = "yoke-derive" version = "0.8.0" @@ -9428,17 +9328,6 @@ version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" -[[package]] -name = "zerotrie" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb594dd55d87335c5f60177cee24f19457a5ec10a065e0a3014722ad252d0a1f" -dependencies = [ - "displaydoc", - "yoke 0.7.5", - "zerofrom", -] - [[package]] name = "zerotrie" version = "0.2.2" @@ -9446,41 +9335,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" dependencies = [ "displaydoc", - "yoke 0.8.0", + "yoke", "zerofrom", ] -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke 0.7.5", - "zerofrom", - "zerovec-derive 0.10.3", -] - [[package]] name = "zerovec" version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ - "yoke 0.8.0", + "yoke", "zerofrom", - "zerovec-derive 0.11.1", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.106", + "zerovec-derive", ] [[package]] diff --git a/cosmic-settings/Cargo.toml b/cosmic-settings/Cargo.toml index 43f2080..c8fed11 100644 --- a/cosmic-settings/Cargo.toml +++ b/cosmic-settings/Cargo.toml @@ -91,8 +91,8 @@ num-derive = "0.4" pwhash = "1" [dependencies.icu] -version = "1.5.0" -features = ["experimental", "compiled_data", "icu_datetime_experimental"] +version = "2.0.0" +features = ["compiled_data"] [dependencies.i18n-embed] version = "0.16.0" diff --git a/cosmic-settings/src/pages/time/date.rs b/cosmic-settings/src/pages/time/date.rs index e5b1529..c44f640 100644 --- a/cosmic-settings/src/pages/time/date.rs +++ b/cosmic-settings/src/pages/time/date.rs @@ -14,9 +14,13 @@ use cosmic::{ }; use cosmic_settings_page::{self as page, Section, section}; use icu::{ - calendar::{DateTime, Iso, types::IsoWeekday, week}, - datetime::DateTimeFormatter, - locid::Locale, + calendar::{Gregorian, types::Weekday, week}, + datetime::{ + DateTimeFormatter, DateTimeFormatterPreferences, fieldsets, + input::{Date, DateTime, Time}, + options::TimePrecision, + }, + locale::{Locale, preferences::extensions::unicode::keywords::HourCycle}, }; use slab::Slab; use slotmap::{Key, SlotMap}; @@ -43,7 +47,7 @@ pub struct Page { ntp_enabled: bool, show_date_in_top_panel: bool, timezone_context: bool, - local_time: Option>, + local_time: Option>, timezone: Option, timezone_list: Vec, timezone_search: String, @@ -513,67 +517,51 @@ fn locale() -> Result> { Ok(locale) } -fn format_date(date: &DateTime, military: bool, show_seconds: bool) -> String { +fn format_date(date: &DateTime, military: bool, show_seconds: bool) -> String { let Ok(locale) = locale() else { return String::new(); }; - let mut bag = icu::datetime::options::components::Bag::empty(); + let mut prefs = DateTimeFormatterPreferences::from(locale); + prefs.hour_cycle = Some(if military { + HourCycle::H23 + } else { + HourCycle::H12 + }); - bag.year = Some(icu::datetime::options::components::Year::Numeric); - bag.day = Some(icu::datetime::options::components::Day::NumericDayOfMonth); - bag.month = Some(icu::datetime::options::components::Month::Long); - bag.hour = Some(icu::datetime::options::components::Numeric::Numeric); - bag.minute = Some(icu::datetime::options::components::Numeric::Numeric); - bag.second = show_seconds.then_some(icu::datetime::options::components::Numeric::Numeric); - bag.preferences = Some(icu::datetime::options::preferences::Bag::from_hour_cycle( - if military { - icu::datetime::options::preferences::HourCycle::H23 - } else { - icu::datetime::options::preferences::HourCycle::H12 - }, - )); + let mut fs = fieldsets::YMDT::long(); + if !show_seconds { + fs = fs.with_time_precision(TimePrecision::Minute); + } - let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), bag.into()).unwrap(); + let dtf = DateTimeFormatter::try_new(prefs, fs).unwrap(); - dtf.format(&date.to_any()) - .expect("can't format value") - .to_string() + dtf.format(date).to_string() } -fn update_local_time() -> DateTime { +fn update_local_time() -> DateTime { let now = chrono::Local::now(); - DateTime::try_new_gregorian_datetime( - now.year(), - now.month() as u8, - now.day() as u8, - now.hour() as u8, - now.minute() as u8, - now.second() as u8, - ) - .unwrap() - .to_iso() + DateTime { + date: Date::try_new_gregorian(now.year(), now.month() as u8, now.day() as u8).unwrap(), + time: Time::try_new(now.hour() as u8, now.minute() as u8, now.second() as u8, 0).unwrap(), + } } fn get_locale_default_24h() -> bool { let Ok(locale) = locale() else { return false }; - let test_time = icu::calendar::DateTime::try_new_gregorian_datetime(2024, 1, 1, 13, 0, 0) - .unwrap() - .to_iso(); + let test_time = DateTime { + date: Date::try_new_gregorian(2024, 1, 1).unwrap(), + time: Time::try_new(13, 0, 0, 0).unwrap(), + }; - let bag = icu::datetime::options::length::Bag::from_time_style( - icu::datetime::options::length::Time::Medium, - ); - - let Ok(dtf) = - icu::datetime::DateTimeFormatter::try_new_experimental(&locale.into(), bag.into()) - else { + let prefs = DateTimeFormatterPreferences::from(locale); + let Ok(dtf) = DateTimeFormatter::try_new(prefs, fieldsets::T::medium()) else { return false; }; - let formatted = dtf.format(&test_time.to_any()).unwrap().to_string(); + let formatted = dtf.format(&test_time).to_string(); // If we see "13" in the output, it's 24-hour format // If we see "1" (but not "13"), it's 12-hour format @@ -582,17 +570,17 @@ fn get_locale_default_24h() -> bool { fn get_locale_default_first_day() -> usize { let Ok(locale) = locale() else { return 6 }; - let Ok(week_calc) = week::WeekCalculator::try_new(&locale.into()) else { + let Ok(week_info) = week::WeekInformation::try_new(week::WeekPreferences::from(&locale)) else { return 6; }; - match week_calc.first_weekday { - IsoWeekday::Monday => 0, - IsoWeekday::Tuesday => 1, - IsoWeekday::Wednesday => 2, - IsoWeekday::Thursday => 3, - IsoWeekday::Friday => 4, - IsoWeekday::Saturday => 5, - IsoWeekday::Sunday => 6, + match week_info.first_weekday { + Weekday::Monday => 0, + Weekday::Tuesday => 1, + Weekday::Wednesday => 2, + Weekday::Thursday => 3, + Weekday::Friday => 4, + Weekday::Saturday => 5, + Weekday::Sunday => 6, } } diff --git a/cosmic-settings/src/pages/time/region.rs b/cosmic-settings/src/pages/time/region.rs index 945f7cb..f423c02 100644 --- a/cosmic-settings/src/pages/time/region.rs +++ b/cosmic-settings/src/pages/time/region.rs @@ -15,16 +15,14 @@ use cosmic_config::{ConfigGet, ConfigSet}; use cosmic_settings_page::Section; use cosmic_settings_page::{self as page, section}; use eyre::Context; -use fixed_decimal::FixedDecimal; -use icu::calendar::DateTime; -use icu::datetime::options::components::{self, Bag}; -use icu::datetime::options::length; -use icu::datetime::{DateTimeFormatter, DateTimeFormatterOptions}; -use icu::decimal::FixedDecimalFormatter; -use icu::decimal::options::FixedDecimalFormatterOptions; use icu::{ - calendar::{types::IsoWeekday, week}, - locid::Locale, + calendar::{types::Weekday, week}, + datetime::{ + DateTimeFormatter, DateTimeFormatterPreferences, fieldsets, + input::{Date, DateTime, Time}, + }, + decimal::{DecimalFormatter, input::Decimal}, + locale::Locale, }; use locales_rs as locale; use slotmap::{DefaultKey, SlotMap}; @@ -409,27 +407,19 @@ impl Page { .next() .unwrap_or("en_US"); - let Ok(locale) = icu::locid::Locale::from_str(time_locale) else { + let Ok(locale) = Locale::from_str(time_locale) else { return String::new(); }; - let mut bag = Bag::empty(); - bag.day = Some(components::Day::TwoDigitDayOfMonth); - bag.month = Some(components::Month::TwoDigit); - bag.year = Some(components::Year::Numeric); + let prefs = DateTimeFormatterPreferences::from(locale); + let dtf = DateTimeFormatter::try_new(prefs, fieldsets::YMD::medium()).unwrap(); - let options = icu::datetime::DateTimeFormatterOptions::Components(bag); + let datetime = DateTime { + date: Date::try_new_gregorian(1776, 7, 4).unwrap(), + time: Time::try_new(12, 0, 0, 0).unwrap(), + }; - let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), options).unwrap(); - - let datetime = DateTime::try_new_gregorian_datetime(1776, 7, 4, 12, 0, 0) - .unwrap() - .to_iso() - .to_any(); - - dtf.format(&datetime) - .expect("can't format value") - .to_string() + dtf.format(&datetime).to_string() } fn formatted_dates_and_times(&self) -> String { @@ -442,23 +432,19 @@ impl Page { .next() .unwrap_or("en_US"); - let Ok(locale) = icu::locid::Locale::from_str(time_locale) else { + let Ok(locale) = Locale::from_str(time_locale) else { return String::new(); }; - let bag = length::Bag::from_date_time_style(length::Date::Long, length::Time::Medium); - let options = DateTimeFormatterOptions::Length(bag); + let prefs = DateTimeFormatterPreferences::from(locale); + let dtf = DateTimeFormatter::try_new(prefs, fieldsets::YMDT::long()).unwrap(); - let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), options).unwrap(); + let datetime = DateTime { + date: Date::try_new_gregorian(1776, 7, 4).unwrap(), + time: Time::try_new(13, 0, 0, 0).unwrap(), + }; - let datetime = DateTime::try_new_gregorian_datetime(1776, 7, 4, 13, 0, 0) - .unwrap() - .to_iso() - .to_any(); - - dtf.format(&datetime) - .expect("can't format value") - .to_string() + dtf.format(&datetime).to_string() } fn formatted_time(&self) -> String { @@ -471,22 +457,19 @@ impl Page { .next() .unwrap_or("en_US"); - let Ok(locale) = icu::locid::Locale::from_str(time_locale) else { + let Ok(locale) = Locale::from_str(time_locale) else { return String::new(); }; - let options = length::Bag::from_time_style(length::Time::Medium); + let prefs = DateTimeFormatterPreferences::from(locale); + let dtf = DateTimeFormatter::try_new(prefs, fieldsets::T::medium()).unwrap(); - let dtf = DateTimeFormatter::try_new_experimental(&locale.into(), options.into()).unwrap(); + let datetime = DateTime { + date: Date::try_new_gregorian(1776, 7, 4).unwrap(), + time: Time::try_new(13, 0, 0, 0).unwrap(), + }; - let datetime = DateTime::try_new_gregorian_datetime(1776, 7, 4, 13, 0, 0) - .unwrap() - .to_iso() - .to_any(); - - dtf.format(&datetime) - .expect("can't format value") - .to_string() + dtf.format(&datetime).to_string() } fn formatted_numbers(&self) -> String { @@ -499,13 +482,12 @@ impl Page { .next() .unwrap_or("en_US"); - let Ok(locale) = icu::locid::Locale::from_str(numerical_locale) else { + let Ok(locale) = Locale::from_str(numerical_locale) else { return String::new(); }; - let options = FixedDecimalFormatterOptions::default(); - let formatter = FixedDecimalFormatter::try_new(&locale.into(), options).unwrap(); - let mut value = FixedDecimal::from(123456789); + let formatter = DecimalFormatter::try_new(locale.into(), Default::default()).unwrap(); + let mut value = Decimal::from(123456789); value.multiply_pow10(-2); formatter.format(&value).to_string() @@ -967,24 +949,17 @@ fn get_default_24h(locale: String) -> bool { return false; }; - let test_time = icu::calendar::DateTime::try_new_gregorian_datetime(2024, 1, 1, 13, 0, 0) - .unwrap() - .to_iso(); + let test_time = DateTime { + date: Date::try_new_gregorian(2024, 1, 1).unwrap(), + time: Time::try_new(13, 0, 0, 0).unwrap(), + }; - let bag = icu::datetime::options::length::Bag::from_time_style( - icu::datetime::options::length::Time::Medium, - ); - - let Ok(dtf) = - icu::datetime::DateTimeFormatter::try_new_experimental(&locale.into(), bag.into()) - else { + let prefs = DateTimeFormatterPreferences::from(locale); + let Ok(dtf) = DateTimeFormatter::try_new(prefs, fieldsets::T::medium()) else { return false; }; - let formatted = match dtf.format(&test_time.to_any()) { - Ok(formatted) => formatted.to_string(), - Err(_) => return false, - }; + let formatted = dtf.format(&test_time).to_string(); // If we see "13" in the output, it's 24-hour format // If we see "1" (but not "13"), it's 12-hour format @@ -995,18 +970,18 @@ fn get_default_first_day(locale: String) -> usize { let Ok(locale) = parse_locale(locale) else { return 6; }; - let Ok(week_calc) = week::WeekCalculator::try_new(&locale.into()) else { + let Ok(week_info) = week::WeekInformation::try_new(week::WeekPreferences::from(&locale)) else { return 6; }; - match week_calc.first_weekday { - IsoWeekday::Monday => 0, - IsoWeekday::Tuesday => 1, - IsoWeekday::Wednesday => 2, - IsoWeekday::Thursday => 3, - IsoWeekday::Friday => 4, - IsoWeekday::Saturday => 5, - IsoWeekday::Sunday => 6, + match week_info.first_weekday { + Weekday::Monday => 0, + Weekday::Tuesday => 1, + Weekday::Wednesday => 2, + Weekday::Thursday => 3, + Weekday::Friday => 4, + Weekday::Saturday => 5, + Weekday::Sunday => 6, } }