Use `camino::Utf8PathBuf` instead of `std::path::PathBuf`

finchie
Jul 22, 2025, 2:25 AM
E64LCUDQCNPQGVV2YKZ4JKDFM56R65CWHPXBQYOSAM746B3JESRQC

Dependencies

  • [2] 7X4MEZJU Use Fluent AST when reporting error spans
  • [3] JUV7C6ET Create initial prototype of `fluent_embed_interaction`
  • [4] G6B6R3FC Improve error message when no glob matches are found
  • [5] HJMYJDC7 Simplify `fluent_embed::group` module
  • [6] NFV26FRQ Improve glob error handling
  • [7] VQBJBFEX Improve error handling for missing Fluent messages
  • [8] QFPQZR4K Refactor `fluent_embed`
  • [9] K3G4HK2J Track Fluent files using `include!`
  • [10] FF67HCOF Improve Fluent syntax error spans
  • [11] 5TEX4MNU Split `fluent_embed` into `group` and `parse` modules
  • [12] IALFWVXR Add explicit error handling for invalid locale names
  • [13] 7M4UI3TW Update dependencies to latest versions
  • [14] 7JPOCQEI Add explicit error handling for macro parsing
  • [15] OWXLFLRM Merge `cli_macros` shim into `fluent_embed`
  • [16] CESJ4CTO Move macro-specific code into `macro_impl` module
  • [17] 2SITVDYW Handle common errors in Fluent code
  • [18] F5LG7WEN Emit compilation errors from Fluent source code
  • [19] NO3PDO7P Refactor `fluent_embed` to support structs
  • [20] 2XQ6ZB4W Store multiple locales in a single `Group`
  • [*] O77KA6C4 Create `fluent_embed` crate
  • [*] XGRU7WZE Add `expand` feature for proc-macro debugging
  • [*] VZYZRAO4 Move `output-macros` crate into workspace
  • [*] UKFEFT6L Create basic `Output` proc-macro

Change contents

  • replacement in fluent_embed_derive/src/macro_impl/mod.rs at line 71
    [5.84][5.84:197]()
    let tracked_paths = tracked_paths
    .values()
    .map(|path| path.to_string_lossy().to_string());
    [5.84]
    [5.197]
    let tracked_paths = tracked_paths.values().map(|path| path.to_string());
  • replacement in fluent_embed_derive/src/macro_impl/error.rs at line 46
    [5.3505][5.3505:3569]()
    assert_eq!(path.to_string_lossy(), complete_match);
    [5.3505]
    [5.3569]
    assert_eq!(path.to_string(), complete_match);
  • replacement in fluent_embed_derive/src/macro_impl/error.rs at line 57
    [5.827][4.62:145]()
    help = "Failed to match in path: {}", base_path.to_string_lossy();
    [5.827]
    [5.3747]
    help = "Failed to match in path: {}", base_path.to_string();
  • replacement in fluent_embed_derive/src/macro_impl/error.rs at line 69
    [5.200][5.200:315]()
    help = "Expected `{}` to be a valid locale identifier while reading `{}`", locale, path.display();
    [5.200]
    [5.315]
    help = "Expected `{}` to be a valid locale identifier while reading `{}`", locale, path;
  • edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 2
    [5.3370][5.3370:3394]()
    use std::path::PathBuf;
  • edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 3
    [5.3395]
    [5.641]
    use camino::Utf8PathBuf;
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 16
    [5.964][5.3728:3751](),[5.3728][5.3728:3751]()
    path: PathBuf,
    [5.964]
    [5.3751]
    path: Utf8PathBuf,
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 21
    [4.301][4.301:329]()
    base_path: PathBuf,
    [4.301]
    [4.329]
    base_path: Utf8PathBuf,
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 25
    [5.423][5.423:446]()
    path: PathBuf,
    [5.423]
    [5.446]
    path: Utf8PathBuf,
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 31
    [5.3793][5.3793:3878]()
    pub fn locales(attribute: &syn::LitStr) -> Result<HashMap<Locale, PathBuf>, Error> {
    [5.3793]
    [5.3878]
    pub fn locales(attribute: &syn::LitStr) -> Result<HashMap<Locale, Utf8PathBuf>, Error> {
  • edit in fluent_embed_derive/src/macro_impl/attribute.rs at line 49
    [5.1347]
    [5.1347]
    let path = Utf8PathBuf::from_path_buf(entry.path().to_path_buf()).unwrap();
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 55
    [5.1464][5.4447:4497](),[5.4447][5.4447:4497]()
    path: entry.path().to_path_buf(),
    [5.1464]
    [5.4497]
    path,
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 64
    [5.629][5.629:679]()
    path: entry.path().to_path_buf(),
    [5.629]
    [5.679]
    path: path.clone(),
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 70
    [5.4938][5.1465:1546]()
    let previous_value = locales.insert(locale, entry.path().to_path_buf());
    [5.4938]
    [5.5010]
    let previous_value = locales.insert(locale, path);
  • replacement in fluent_embed_derive/src/macro_impl/attribute.rs at line 77
    [4.381][4.381:434]()
    base_path: PathBuf::from(manifest_root),
    [4.381]
    [4.434]
    base_path: Utf8PathBuf::from(manifest_root),
  • edit in fluent_embed_derive/src/fluent/mod.rs at line 3
    [5.1058][5.1058:1082]()
    use std::path::PathBuf;
  • edit in fluent_embed_derive/src/fluent/mod.rs at line 4
    [5.1083]
    [2.0]
    use camino::Utf8PathBuf;
  • replacement in fluent_embed_derive/src/fluent/mod.rs at line 69
    [5.1806][5.1806:1857]()
    fn new(path: PathBuf) -> Result<Self, Error> {
    [5.1806]
    [5.1857]
    fn new(path: Utf8PathBuf) -> Result<Self, Error> {
  • replacement in fluent_embed_derive/src/fluent/mod.rs at line 72
    [5.1625][2.92:184]()
    let named_source = NamedSource::new(path.to_string_lossy(), file_contents.clone());
    [5.1625]
    [2.184]
    let named_source = NamedSource::new(path.to_string(), file_contents.clone());
  • replacement in fluent_embed_derive/src/fluent/mod.rs at line 86
    [5.2225][5.2225:2315]()
    source_code: NamedSource::new(path.to_string_lossy(), file_contents),
    [5.2225]
    [5.2315]
    source_code: NamedSource::new(path.to_string(), file_contents),
  • replacement in fluent_embed_derive/src/fluent/group.rs at line 1
    [5.3543][5.2273:2341]()
    use super::{ast, Error as FluentError, MessageContext, SourceFile};
    [5.3543]
    [5.6111]
    use super::{Error as FluentError, MessageContext, SourceFile, ast};
  • edit in fluent_embed_derive/src/fluent/group.rs at line 4
    [5.3971][5.4118:4142](),[5.4118][5.4118:4142]()
    use std::path::PathBuf;
  • edit in fluent_embed_derive/src/fluent/group.rs at line 5
    [5.460]
    [5.2342]
    use camino::Utf8PathBuf;
  • replacement in fluent_embed_derive/src/fluent/group.rs at line 39
    [5.7697][5.4186:4234]()
    locale_paths: HashMap<Locale, PathBuf>,
    [5.7697]
    [5.2957]
    locale_paths: HashMap<Locale, Utf8PathBuf>,
  • edit in fluent_embed_derive/Cargo.toml at line 13
    [22.1410]
    [23.3335]
    camino.workspace = true
  • edit in Cargo.toml at line 12
    [5.5579]
    [3.11693]
    camino = "1.1.10"
  • edit in Cargo.lock at line 100
    [5.5582]
    [5.5582]
    name = "camino"
    version = "1.1.10"
    source = "registry+https://github.com/rust-lang/crates.io-index"
    checksum = "0da45bc31171d8d6960122e222a67740df867c1dd53b4d51caa297084c185cab"
    [[package]]
  • edit in Cargo.lock at line 337
    [5.9516]
    [23.1500]
    "camino",