deranged `PartialOrd` type implementation conflicts with plist implementation

2 min read Original article ↗

Hi @jhpratt , I've been trying to do a fresh install of Tauri v2, which relies on time, plist and deranged, I know that you've recently implemented some changes to deranged that have caused issues with time v0.34.0, it seems that in the process you also implemented a conflict with plist when requiring the new version of deranged for time, this has broken Tauri at least on Mac OS aarch64-darwin

I know we're at least 2 ppl experiencing this issue from the Tauri discord.

 rustc --version
rustc 1.85.1 (4eb161250 2025-03-15)

 cargo --version   
cargo 1.85.1 (d73d2caf9 2024-12-31)

 node --version  
v20.11.1

Related issues:
time-rs/time#736
#17

Error log:

error[E0283]: type annotations needed
   --> /Users/me/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/plist-1.7.0/src/stream/binary_reader.rs:252:58
    |
252 |                 if value < 0 || value > u64::max_value().into() {
    |                                       -                  ^^^^
    |                                       |
    |                                       type must be known at this point
    |
    = note: multiple `impl`s satisfying `i128: PartialOrd<_>` found in the following crates: `core`, `deranged`:
            - impl PartialOrd for i128;
            - impl<MIN, MAX> PartialOrd<deranged::RangedI128<MIN, MAX>> for i128
              where the constant `MIN` has type `i128`, the constant `MAX` has type `i128`;
help: try using a fully qualified path to specify the expected types
    |
252 |                 if value < 0 || value > <u64 as Into<T>>::into(u64::max_value()) {
    |                                         +++++++++++++++++++++++                ~

error[E0283]: type annotations needed
   --> /Users/me/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/plist-1.7.0/src/stream/binary_reader.rs:252:58
    |
252 |                 if value < 0 || value > u64::max_value().into() {
    |                                                          ^^^^
    |
note: multiple `impl`s satisfying `_: From<u64>` found
   --> /Users/me/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/plist-1.7.0/src/integer.rs:91:1
    |
91  | impl From<u64> for Integer {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
   ::: /Users/me/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/plist-1.7.0/src/value.rs:552:1
    |
552 | impl From<u64> for Value {
    | ^^^^^^^^^^^^^^^^^^^^^^^^
    = note: and more `impl`s found in the following crates: `core`:
            - impl From<u64> for AtomicU64;
            - impl From<u64> for i128;
            - impl From<u64> for u128;
    = note: required for `u64` to implement `Into<_>`
help: try using a fully qualified path to specify the expected types
    |
252 |                 if value < 0 || value > <u64 as Into<T>>::into(u64::max_value()) {
    |                                         +++++++++++++++++++++++                ~

   Compiling url v2.5.4
For more information about this error, try `rustc --explain E0283`.
error: could not compile `plist` (lib) due to 2 previous errors
warning: build failed, waiting for other jobs to finish...
error: script "tauri" exited with code 101

Could you please look into it, especially given plist is not seeing active development ? thanks!