Remove `std::io::Write` trait bound from `Localize`

finchie
May 20, 2025, 8:11 AM
LU6IFZFGPIKF3CBWZWITWVBSCYWF7Q4UXJDXVRWZ4XV7PKE5RSTQC

Dependencies

  • [2] GJMBIJOE Migrate to latest env_preferences version
  • [3] 7JPOCQEI Add explicit error handling for macro parsing
  • [4] MABGENI7 Refactor `fluent_embed_derive` tests
  • [5] WWDZWJTR Implement `Localize` for string types
  • [6] K3G4HK2J Track Fluent files using `include!`
  • [7] JWZT34UC Add `Localize`` trait bound for each field in the derived item
  • [8] UN2XEIEU Migrate from `locale_select` to `env_preferences`
  • [9] 3NMKD6I5 Refactor `Localize` trait to use `std::io::Write`
  • [10] 4BMW4JJO Add support for deriving items with generics
  • [11] CESJ4CTO Move macro-specific code into `macro_impl` module
  • [12] BFL2Y7GN Add relative timestamps using `jiff` and `icu_relativetime`
  • [13] C6W7N6N5 Implement `Localize` for `FixedDecimal` and primitive number types
  • [14] YZ6PVVQC Add error handling for common unsupported Rust code
  • [15] 7M4UI3TW Update dependencies to latest versions
  • [16] CFJKYXUX Remove newtype wrapper `RelativeTime` for `jiff::Timestamp`
  • [17] ATWBK622 Update style of the `_TRACKED_PATHS` variable
  • [18] 73C6NOJ7 Fix minimal `Localize` implementation on errors
  • [19] IRW6JACS Implement `Localize` for `RelativeTime`
  • [20] HHJDRLLN Create `fluent_embed_runtime` crate
  • [*] O77KA6C4 Create `fluent_embed` crate

Change contents

  • replacement in fluent_embed_derive/tests/common/mod.rs at line 4
    [4.3119][4.3119:3180]()
    pub fn compare_message<L: Localize<Vec<u8>>, S: AsRef<str>>(
    [4.3119]
    [4.3180]
    pub fn compare_message<L: Localize, S: AsRef<str>>(
  • replacement in fluent_embed_derive/src/macro_impl/mod.rs at line 5
    [5.162][5.1412:1475]()
    use syn::{parse_quote, parse_quote_spanned, spanned::Spanned};
    [5.162]
    [5.162]
    use syn::{parse_quote_spanned, spanned::Spanned};
  • replacement in fluent_embed_derive/src/macro_impl/mod.rs at line 153
    [5.2745][5.2745:2822]()
    parse_quote_spanned!(span=> #field: ::fluent_embed::Localize<W>)
    [5.2745]
    [5.2822]
    parse_quote_spanned!(span=> #field: ::fluent_embed::Localize)
  • edit in fluent_embed_derive/src/macro_impl/mod.rs at line 160
    [5.2933][5.2933:2994](),[5.2994][5.266:337](),[5.266][5.266:337](),[5.337][5.2995:3097]()
    // Define a parameter of `std::io::Write` for `Localize`
    // e.g. for MyStruct<'a, T>, it will be <'a, T, W: std::io::Write>
    generics
    .params
    .push(syn::GenericParam::Type(parse_quote!(W: std::io::Write)));
  • replacement in fluent_embed_derive/src/macro_impl/mod.rs at line 170
    [5.652][5.3272:3378]()
    impl #impl_generics ::fluent_embed::Localize<W> for #ident #initial_type_generics #where_clause {
    [5.652]
    [5.97]
    impl #impl_generics ::fluent_embed::Localize for #ident #initial_type_generics #where_clause {
  • replacement in fluent_embed_derive/src/macro_impl/mod.rs at line 178
    [5.1868][5.419:454]()
    fn message_for_locale(
    [5.1868]
    [5.454]
    fn message_for_locale<W: std::io::Write>(
  • replacement in fluent_embed_derive/src/lib.rs at line 45
    [3.2371][3.2371:2462]()
    impl<W: ::std::io::Write> ::fluent_embed::Localize<W> for #ident {
    [3.2371]
    [3.2462]
    impl ::fluent_embed::Localize for #ident {
  • replacement in fluent_embed_derive/src/lib.rs at line 53
    [3.2886][3.2886:2937]()
    fn message_for_locale(
    [3.2886]
    [3.2937]
    fn message_for_locale<W: std::io::Write>(
  • replacement in fluent_embed/src/time.rs at line 15
    [5.749][5.0:52]()
    impl<W: std::io::Write> Localize<W> for Timestamp {
    [5.749]
    [5.3849]
    impl Localize for Timestamp {
  • replacement in fluent_embed/src/time.rs at line 20
    [5.4061][5.4061:4115]()
    vec![<Self as Localize<W>>::CANONICAL_LOCALE]
    [5.4061]
    [5.4115]
    vec![Self::CANONICAL_LOCALE]
  • replacement in fluent_embed/src/time.rs at line 23
    [5.125][5.4122:4149]()
    fn message_for_locale(
    [5.125]
    [5.4149]
    fn message_for_locale<W: std::io::Write>(
  • replacement in fluent_embed/src/string.rs at line 16
    [5.314][5.314:366]()
    impl<W: std::io::Write> Localize<W> for type_name {
    [5.314]
    [5.366]
    impl Localize for type_name {
  • replacement in fluent_embed/src/string.rs at line 21
    [5.578][5.578:632]()
    vec![<Self as Localize<W>>::CANONICAL_LOCALE]
    [5.578]
    [5.632]
    vec![Self::CANONICAL_LOCALE]
  • replacement in fluent_embed/src/string.rs at line 24
    [5.639][5.639:666]()
    fn message_for_locale(
    [5.639]
    [5.666]
    fn message_for_locale<W: std::io::Write>(
  • replacement in fluent_embed/src/lib.rs at line 27
    [5.4645][5.4645:4685]()
    pub trait Localize<W: std::io::Write> {
    [5.4645]
    [5.4685]
    pub trait Localize {
  • replacement in fluent_embed/src/lib.rs at line 32
    [5.4813][5.4813:4840]()
    fn message_for_locale(
    [5.4813]
    [5.4840]
    fn message_for_locale<W: std::io::Write>(
  • replacement in fluent_embed/src/lib.rs at line 52
    [5.3447][5.4957:5031](),[5.4957][5.4957:5031]()
    fn localize(&self, writer: &mut W) -> Result<(), LocalizationError> {
    [5.3447]
    [2.321]
    fn localize<W: std::io::Write>(&self, writer: &mut W) -> Result<(), LocalizationError> {
  • replacement in fluent_embed/src/decimal.rs at line 29
    [5.3711][5.3711:3763]()
    impl<W: std::io::Write> Localize<W> for type_name {
    [5.3711]
    [5.3763]
    impl Localize for type_name {
  • replacement in fluent_embed/src/decimal.rs at line 34
    [5.3975][5.3975:4029]()
    vec![<Self as Localize<W>>::CANONICAL_LOCALE]
    [5.3975]
    [5.4029]
    vec![Self::CANONICAL_LOCALE]
  • replacement in fluent_embed/src/decimal.rs at line 37
    [5.4036][5.4036:4063]()
    fn message_for_locale(
    [5.4036]
    [5.4063]
    fn message_for_locale<W: std::io::Write>(
  • replacement in fluent_embed/src/decimal.rs at line 47
    [5.4293][5.4938:4988]()
    impl<W: std::io::Write> Localize<W> for Decimal {
    [5.4293]
    [5.4348]
    impl Localize for Decimal {
  • replacement in fluent_embed/src/decimal.rs at line 52
    [5.4560][5.4560:4614]()
    vec![<Self as Localize<W>>::CANONICAL_LOCALE]
    [5.4560]
    [5.4614]
    vec![Self::CANONICAL_LOCALE]
  • replacement in fluent_embed/src/decimal.rs at line 55
    [5.4621][5.4621:4648]()
    fn message_for_locale(
    [5.4621]
    [5.4648]
    fn message_for_locale<W: std::io::Write>(