Improve glob error handling
Dependencies
- [2]
UN2XEIEUMigrate from `locale_select` to `env_preferences` - [3]
F5LG7WENEmit compilation errors from Fluent source code - [4]
6ABVDTXZImprove `fluent_embed_derive` test suite - [5]
JZXXFWQKAdd tests for `locale_select` backends on unix - [6]
ROSR4HD5Parse captured glob as locale - [7]
O77KA6C4Create `fluent_embed` crate - [8]
AL3CCMWZRemove deprecated `output-macros` crate - [9]
VNSHGQYNSupport using glob paths in `localize` macro - [10]
RLX6XPNZReturn an error when user provides an exact path - [11]
SHNZZSZGCreate `cli_macros` shim crate - [12]
KF65O6ODAdd tests for placeables - [13]
YNEOCYMGCreate `locale-select` crate - [14]
UKFEFT6LCreate basic `Output` proc-macro - [15]
OWXLFLRMMerge `cli_macros` shim into `fluent_embed` - [16]
BANMRGROSwitch `wax` to temporary fork - [17]
CESJ4CTOMove macro-specific code into `macro_impl` module - [18]
C6W7N6N5Implement `Localize` for `FixedDecimal` and primitive number types - [19]
V5S5K33AAdd basic error handling for invalid paths in proc_macro attribute - [20]
56F2YE6HUse `prettyplease` to format macro output - [21]
VZYZRAO4Move `output-macros` crate into workspace - [22]
WBI5HFOBAdd simple wrapper for `libc::settext()` to query system locale - [23]
BFL2Y7GNAdd relative timestamps using `jiff` and `icu_relativetime`
Change contents
- edit in fluent_embed_derive/src/macro_impl/mod.rs at line 25
// Set up a global Miette report handler to ensure consistent non-Rustc diagnosticsmiette::set_hook(Box::new(|_| {Box::new(miette::MietteHandlerOpts::new()// Force color output, even when printing using the debug formatter.color(true).build(),)})).unwrap(); - replacement in fluent_embed_derive/src/macro_impl/error.rs at line 37
attribute::Error::NoMatches {attribute::Error::NoMatchesInEntry { - edit in fluent_embed_derive/src/macro_impl/error.rs at line 46
help = "The attribute should use glob syntax to match against multiple files";note = "For example, you can:\n{}\n{}","- Match against directories: locale/**/errors.ftl","- Match against files: locale/*.ftl";};}attribute::Error::NoMatchesInGlob => {emit_error! { attribute_stream, "no matches found for glob"; - edit in fluent_embed_derive/src/macro_impl/error.rs at line 66
// This includes setting up a global report handler with some extra optionsmiette::set_hook(Box::new(|_| {Box::new(miette::MietteHandlerOpts::new()// Force color output, even when printing using the debug formatter.color(true).build(),)})).unwrap(); - replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 7
use wax::walk::Entry;use wax::{BuildError, Glob, WalkEntry, WalkError}; - replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 12
Build(#[from] wax::BuildError),Walk(#[from] wax::walk::WalkError),Build(#[from] BuildError),Walk(#[from] WalkError), - replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 15
NoMatches {NoMatchesInEntry { - edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 19
#[error("Glob did not match any valid files")]NoMatchesInGlob, - replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 30
let glob = wax::Glob::new(&attribute_glob)?;for potential_entry in glob.walk(&manifest_root) {// TODO: this assumes that the locale is the first capturelet entry = potential_entry?;let glob = Glob::new(&attribute_glob)?;let entries = glob.walk(&manifest_root).collect::<Result<Vec<WalkEntry>, WalkError>>()?; - edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 35
// Emit all glob-related diagnosticsfor diagnostic in glob.diagnose() {eprintln!("{diagnostic:?}");}for entry in &entries {// TODO: this assumes that the locale is the first capture - replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 45
return Err(Error::NoMatches {return Err(Error::NoMatchesInEntry { - replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 57
let previous_value = locales.insert(locale, entry.into_path());let previous_value = locales.insert(locale, entry.path().to_path_buf()); - edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 59
}// Make sure there was at least one file matchedif locales.is_empty() {return Err(Error::NoMatchesInGlob); - replacement in fluent_embed_derive/Cargo.toml at line 23
wax = { git = "https://github.com/Finchiedev/wax" }wax = { version = "0.6.0", features = ["miette"] } - replacement in Cargo.lock at line 3
version = 3version = 4 - replacement in Cargo.lock at line 85
version = "0.2.32"version = "0.2.34" - replacement in Cargo.lock at line 87
checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673"checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" - replacement in Cargo.lock at line 94
version = "0.2.32"version = "0.2.34" - replacement in Cargo.lock at line 96
checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500"checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" - replacement in Cargo.lock at line 229
"miette","miette 7.2.0", - edit in Cargo.lock at line 345
][[package]]name = "gimli"version = "0.29.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"[[package]]name = "glob"version = "0.3.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"[[package]]name = "hashbrown"version = "0.14.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"[[package]]name = "heck"version = "0.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"dependencies = ["unicode-segmentation",][[package]]name = "icu_collections"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"dependencies = ["displaydoc","yoke","zerofrom","zerovec",][[package]]name = "icu_decimal"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb"dependencies = ["displaydoc","fixed_decimal","icu_decimal_data","icu_locid_transform","icu_provider","writeable",][[package]]name = "icu_decimal_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8d424c994071c6f5644f999925fc868c85fec82295326e75ad5017bc94b41523"[[package]]name = "icu_experimental"version = "0.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7"dependencies = ["displaydoc","fixed_decimal","icu_collections","icu_decimal","icu_experimental_data","icu_locid","icu_locid_transform","icu_normalizer","icu_pattern","icu_plurals","icu_properties","icu_provider","litemap","num-bigint","num-rational","num-traits","smallvec","tinystr","writeable","zerofrom","zerotrie","zerovec",][[package]]name = "icu_experimental_data"version = "0.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9c178b9a34083fca5bd70d61f647575335e9c197d0f30c38e8ccd187babc69d0"[[package]]name = "icu_locid"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"dependencies = ["displaydoc","litemap","tinystr","writeable","zerovec",][[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","tinystr","zerovec",][[package]]name = "icu_locid_transform_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"[[package]]name = "icu_normalizer"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"dependencies = ["displaydoc","icu_collections","icu_normalizer_data","icu_properties","icu_provider","smallvec","utf16_iter","utf8_iter","write16","zerovec",][[package]]name = "icu_normalizer_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"[[package]]name = "icu_pattern"version = "0.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4"dependencies = ["displaydoc","either","writeable","yoke","zerofrom",][[package]]name = "icu_plurals"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ba5a70e7c025dbd5c501b0a5c188cd11666a424f0dadcd4f0a95b7dafde3b114"dependencies = ["displaydoc","fixed_decimal","icu_locid_transform","icu_plurals_data","icu_provider","zerovec",][[package]]name = "icu_plurals_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9e3e8f775b215d45838814a090a2227247a7431d74e9156407d9c37f6ef0f208"[[package]]name = "icu_properties"version = "1.5.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"dependencies = ["displaydoc","icu_collections","icu_locid_transform","icu_properties_data","icu_provider","tinystr","zerovec",][[package]]name = "icu_properties_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"[[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","writeable","yoke","zerofrom","zerovec",][[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.71",][[package]]name = "indexmap"version = "2.2.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"dependencies = ["equivalent","hashbrown",][[package]]name = "is_ci"version = "1.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"[[package]]name = "itertools"version = "0.11.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"dependencies = ["either",][[package]]name = "jiff"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0c33f2189d126c374d29641af39a0dc73daa1c8292403645575ce32e22e768a4"[[package]]name = "libc"version = "0.2.155"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"[[package]]name = "linux-raw-sys"version = "0.4.14"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"[[package]]name = "litemap"version = "0.7.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"[[package]]name = "memchr"version = "2.7.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"[[package]]name = "miette"version = "5.10.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "59bb584eaeeab6bd0226ccf3509a69d7936d148cf3d036ad350abe35e8c6856e"dependencies = ["miette-derive 5.10.0","once_cell","thiserror","unicode-width", - edit in Cargo.lock at line 649
name = "miette"version = "7.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1"dependencies = ["backtrace","backtrace-ext","cfg-if","miette-derive 7.2.0","owo-colors","supports-color","supports-hyperlinks","supports-unicode","terminal_size","textwrap","thiserror","unicode-width",][[package]]name = "miette-derive"version = "5.10.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "49e7bc1560b95a3c4a25d03de42fe76ca718ab92d1a22a55b9b4cf67b3ae635c"dependencies = ["proc-macro2","quote","syn 2.0.71",][[package]]name = "miette-derive"version = "7.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c"dependencies = ["proc-macro2","quote","syn 2.0.71",][[package]]name = "minimal-lexical"version = "0.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"[[package]]name = "miniz_oxide"version = "0.7.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"dependencies = ["adler",][[package]]name = "nom"version = "7.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"dependencies = ["memchr","minimal-lexical",][[package]]name = "num-bigint"version = "0.4.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"dependencies = ["num-integer","num-traits",][[package]]name = "num-integer"version = "0.1.46"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"dependencies = ["num-traits",][[package]]name = "num-rational"version = "0.4.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"dependencies = ["num-bigint","num-integer","num-traits",][[package]]name = "num-traits"version = "0.2.19"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"dependencies = ["autocfg",][[package]]name = "object"version = "0.36.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"dependencies = ["memchr",][[package]]name = "once_cell"version = "1.20.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e"[[package]] - edit in Cargo.lock at line 1122
name = "tardar"version = "0.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "900c942f83b6a8b9998cc8f74ad3ffa24b7ff3c4279ea1c1c52d95dced9f3516"dependencies = ["miette 5.10.0","vec1",][[package]] - replacement in Cargo.lock at line 1225
version = "0.2.4"version = "0.2.6" - replacement in Cargo.lock at line 1227
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - edit in Cargo.lock at line 1242
name = "vec1"version = "1.12.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "eab68b56840f69efb0fefbe3ab6661499217ffdc58e2eef7c3f6f69835386322"[[package]] - replacement in Cargo.lock at line 1272
source = "git+https://github.com/Finchiedev/wax#0f96f50433e90e5ae01a29c84b6be9852c5c1d59"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8d12a78aa0bab22d2f26ed1a96df7ab58e8a93506a3e20adb47c51a93b4e1357" - edit in Cargo.lock at line 1277
"miette 5.10.0", - edit in Cargo.lock at line 1281
"tardar", - replacement in Cargo.lock at line 1288
version = "0.1.8"version = "0.1.9" - replacement in Cargo.lock at line 1290
checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b"checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" - edit in Cargo.lock at line 1614[3.3789]→[3.6967:6969](∅→∅),[3.13800]→[3.6967:6969](∅→∅),[3.6967]→[3.6967:6969](∅→∅),[3.4394]→[3.15021:15211](∅→∅),[3.15211]→[3.3356:3738](∅→∅),[3.3738]→[3.1989:2206](∅→∅),[3.15211]→[3.1989:2206](∅→∅),[3.4394]→[3.1989:2206](∅→∅),[3.2206]→[3.5414:6004](∅→∅)
]name = "gimli"version = "0.29.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd"[[package]]name = "glob"version = "0.3.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"[[package]]name = "hashbrown"version = "0.14.5"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1"[[package]]name = "heck"version = "0.4.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8"dependencies = ["unicode-segmentation",][[package]]name = "icu_collections"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526"dependencies = ["displaydoc","yoke","zerofrom","zerovec",][[package]]name = "icu_decimal"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fb8fd98f86ec0448d85e1edf8884e4e318bb2e121bd733ec929a05c0a5e8b0eb"dependencies = ["displaydoc","fixed_decimal","icu_decimal_data","icu_locid_transform","icu_provider","writeable", - resolve order conflict in Cargo.lock at line 1614
- edit in Cargo.lock at line 1615[3.1736]→[3.1736:1749](∅→∅),[3.1749]→[3.6005:6985](∅→∅),[3.6985]→[3.1749:1768](∅→∅),[3.1749]→[3.1749:1768](∅→∅),[3.1768]→[3.6986:7004](∅→∅),[3.7004]→[3.1786:1851](∅→∅),[3.1786]→[3.1786:1851](∅→∅),[3.1851]→[3.7005:7083](∅→∅),[3.7083]→[3.1929:2055](∅→∅),[3.1929]→[3.1929:2055](∅→∅),[3.2055]→[3.7084:7102](∅→∅),[3.7102]→[3.2073:2138](∅→∅),[3.2073]→[3.2073:2138](∅→∅),[3.2138]→[3.7103:7181](∅→∅),[3.7181]→[3.2216:2381](∅→∅),[3.2216]→[3.2216:2381](∅→∅),[3.2381]→[3.7182:7976](∅→∅),[3.7976]→[3.2399:2464](∅→∅),[3.2399]→[3.2399:2464](∅→∅),[3.2464]→[3.7977:8136](∅→∅),[3.8136]→[3.2542:2555](∅→∅),[3.2542]→[3.2542:2555](∅→∅),[3.2555]→[3.2555:2576](∅→∅),[3.2576]→[3.8137:8155](∅→∅),[3.8155]→[3.2594:2659](∅→∅),[3.2594]→[3.2594:2659](∅→∅),[3.2659]→[3.8156:8234](∅→∅),[3.8234]→[3.2737:2787](∅→∅),[3.2737]→[3.2737:2787](∅→∅),[3.2801]→[3.2801:2916](∅→∅),[3.2916]→[3.8235:8253](∅→∅),[3.8253]→[3.2934:2999](∅→∅),[3.2934]→[3.2934:2999](∅→∅),[3.2999]→[3.8254:8876](∅→∅),[3.8876]→[3.3077:3112](∅→∅),[3.3077]→[3.3077:3112](∅→∅),[3.3112]→[3.8877:8895](∅→∅),[3.8895]→[3.3130:3195](∅→∅),[3.3130]→[3.3130:3195](∅→∅),[3.3195]→[3.8896:8974](∅→∅),[3.8974]→[3.3273:3426](∅→∅),[3.3273]→[3.3273:3426](∅→∅),[3.3426]→[3.2206:2221](∅→∅),[3.2206]→[3.2206:2221](∅→∅),[3.2221]→[3.3427:3456](∅→∅),[3.3456]→[3.8975:8993](∅→∅),[3.8993]→[3.3474:3539](∅→∅),[3.3474]→[3.3474:3539](∅→∅),[3.3539]→[3.8994:9072](∅→∅),[3.9072]→[3.3617:3660](∅→∅),[3.3617]→[3.3617:3660](∅→∅),[3.3660]→[3.9073:9088](∅→∅),[3.9088]→[3.3739:3979](∅→∅),[3.2449]→[3.1961:1963](∅→∅),[3.3979]→[3.1961:1963](∅→∅),[3.9088]→[3.1961:1963](∅→∅),[3.3668]→[3.1961:1963](∅→∅),[3.1963]→[3.15212:15401](∅→∅),[3.15401]→[3.1963:2185](∅→∅),[3.1963]→[3.1963:2185](∅→∅),[3.2185]→[3.3668:3670](∅→∅),[3.3668]→[3.3668:3670](∅→∅),[3.3670]→[3.9089:9277](∅→∅),[3.1056]→[3.19:46](∅→∅),[3.3670]→[3.19:46](∅→∅),[3.46]→[3.9278:9298](∅→∅),[3.9298]→[3.66:131](∅→∅),[3.66]→[3.66:131](∅→∅),[3.131]→[3.9299:9377](∅→∅),[3.9377]→[3.15402:15600](∅→∅),[3.209]→[3.15402:15600](∅→∅),[3.209]→[3.3670:3683](∅→∅),[3.15600]→[3.3670:3683](∅→∅),[3.3670]→[3.3670:3683](∅→∅),[3.3683]→[3.3683:3700](∅→∅),[3.3700]→[3.9378:9396](∅→∅),[3.9396]→[3.3718:3783](∅→∅),[3.3718]→[3.3718:3783](∅→∅),[3.3783]→[3.9397:9475](∅→∅),[3.9475]→[3.1057:1070](∅→∅),[3.3861]→[3.1057:1070](∅→∅),[3.5744]→[3.2199:2215](∅→∅),[3.2199]→[3.2199:2215](∅→∅),[3.2215]→[3.9476:9494](∅→∅),[3.9494]→[3.2233:2298](∅→∅),[3.2233]→[3.2233:2298](∅→∅),[3.2298]→[3.9495:9573](∅→∅),[3.9573]→[3.2376:2389](∅→∅),[3.2376]→[3.2376:2389](∅→∅),[3.2389]→[3.15601:15838](∅→∅),[3.15838]→[3.15838:15856](∅→∅),[3.15856]→[3.15856:15998](∅→∅),[3.15998]→[3.15998:16240](∅→∅),[3.16240]→[3.9574:9589](∅→∅),[3.9589]→[3.16255:16270](∅→∅),[3.16255]→[3.16255:16270](∅→∅),[3.16270]→[3.2389:2575](∅→∅),[3.2389]→[3.2389:2575](∅→∅),[3.2575]→[3.16271:16495](∅→∅),[3.16495]→[3.2575:2810](∅→∅),[3.2575]→[3.2575:2810](∅→∅),[3.2810]→[3.9590:10551](∅→∅),[3.10551]→[3.1579:1594](∅→∅),[3.2810]→[3.1579:1594](∅→∅),[3.3874]→[3.16496:16512](∅→∅),[3.16512]→[3.10552:10571](∅→∅),[3.10571]→[3.16531:16596](∅→∅),[3.16531]→[3.16531:16596](∅→∅),[3.16596]→[3.10572:10650](∅→∅),[3.10650]→[3.16674:16717](∅→∅),[3.16674]→[3.16674:16717](∅→∅)
[[package]]name = "icu_decimal_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "8d424c994071c6f5644f999925fc868c85fec82295326e75ad5017bc94b41523"[[package]]name = "icu_experimental"version = "0.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "844ad7b682a165c758065d694bc4d74ac67f176da1c499a04d85d492c0f193b7"dependencies = ["displaydoc","fixed_decimal","icu_collections","icu_decimal","icu_experimental_data","icu_locid","icu_locid_transform","icu_normalizer","icu_pattern","icu_plurals","icu_properties","icu_provider","litemap","num-bigint","num-rational","num-traits","smallvec","tinystr","writeable","zerofrom","zerotrie","zerovec",][[package]]name = "icu_experimental_data"version = "0.1.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9c178b9a34083fca5bd70d61f647575335e9c197d0f30c38e8ccd187babc69d0"[[package]]name = "icu_locid"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637"dependencies = ["displaydoc","litemap","tinystr","writeable","zerovec",][[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","tinystr","zerovec",][[package]]name = "icu_locid_transform_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e"[[package]]name = "icu_normalizer"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f"dependencies = ["displaydoc","icu_collections","icu_normalizer_data","icu_properties","icu_provider","smallvec","utf16_iter","utf8_iter","write16","zerovec",][[package]]name = "icu_normalizer_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516"[[package]]name = "icu_pattern"version = "0.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "cb7f36aafd098d6717de34e668a8120822275c1fba22b936e757b7de8a2fd7e4"dependencies = ["displaydoc","either","writeable","yoke","zerofrom",][[package]]name = "icu_plurals"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "ba5a70e7c025dbd5c501b0a5c188cd11666a424f0dadcd4f0a95b7dafde3b114"dependencies = ["displaydoc","fixed_decimal","icu_locid_transform","icu_plurals_data","icu_provider","zerovec",][[package]]name = "icu_plurals_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "9e3e8f775b215d45838814a090a2227247a7431d74e9156407d9c37f6ef0f208"[[package]]name = "icu_properties"version = "1.5.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5"dependencies = ["displaydoc","icu_collections","icu_locid_transform","icu_properties_data","icu_provider","tinystr","zerovec",][[package]]name = "icu_properties_data"version = "1.5.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569"[[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","writeable","yoke","zerofrom","zerovec",][[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.71",][[package]]name = "indexmap"version = "2.2.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26"dependencies = ["equivalent","hashbrown",][[package]]name = "is_ci"version = "1.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45"[[package]]name = "itertools"version = "0.11.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"dependencies = ["either",][[package]]name = "jiff"version = "0.1.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "0c33f2189d126c374d29641af39a0dc73daa1c8292403645575ce32e22e768a4"[[package]]name = "libc"version = "0.2.155"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"[[package]]name = "linux-raw-sys"version = "0.4.14"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89"[[package]]name = "litemap"version = "0.7.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704"[[package]]name = "memchr"version = "2.7.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"[[package]]name = "miette"version = "7.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "4edc8853320c2a0dab800fbda86253c8938f6ea88510dc92c5f1ed20e794afc1"dependencies = ["backtrace","backtrace-ext","cfg-if","miette-derive","owo-colors","supports-color","supports-hyperlinks","supports-unicode","terminal_size","textwrap","thiserror","unicode-width",][[package]]name = "miette-derive"version = "7.2.0"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "dcf09caffaac8068c346b6df2a7fc27a177fd20b39421a39ce0a211bde679a6c"dependencies = ["proc-macro2","quote","syn 2.0.71",][[package]]name = "minimal-lexical"version = "0.2.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a"[[package]]name = "miniz_oxide"version = "0.7.4"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08"dependencies = ["adler",][[package]]name = "nom"version = "7.1.3"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a"dependencies = ["memchr","minimal-lexical",][[package]]name = "num-bigint"version = "0.4.6"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9"dependencies = ["num-integer","num-traits",][[package]]name = "num-integer"version = "0.1.46"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f"dependencies = ["num-traits",][[package]]name = "num-rational"version = "0.4.2"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824"dependencies = ["num-bigint","num-integer","num-traits",][[package]]name = "num-traits"version = "0.2.19"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"dependencies = ["autocfg",][[package]]name = "object"version = "0.36.1"source = "registry+https://github.com/rust-lang/crates.io-index"checksum = "081b846d1d56ddfc18fdf1a922e4f6e07a11768ea1b92dec44e42b72712ccfce"dependencies = ["memchr",][[package]]