Rust Just Failed an Important Test

by: Ethan McCue

I have two Rust projects I maintain.

The first is a parser for the EDN Data Format. I haven't had to touch that one in a while. Best I can tell it's all still working.

The second is a fork of the Rust Playground for running Java code. I also haven't had to touch that one in a while, but I did today to update the versions of Java available and include updated early access builds.

When I did that, despite having not changed any dependencies, I got a build error in CI/CD. Build log is here if anyone wants to see.

   Compiling io-lifetimes v1.0.11
   Compiling doc-comment v0.3.3
   Compiling smallvec v1.10.0
   Compiling pin-project v1.1.0
   Compiling miniz_oxide v0.6.2
   Compiling time v0.3.22
error[E0282]: type annotations needed for `Box<_>`
  --> /usr/local/cargo/registry/src/index.crates.io-6f17d22bba15001f/time-0.3.22/src/format_description/parse/mod.rs:83:9
   |
83 |     let items = format_items
   |         ^^^^^
...
86 |     Ok(items.into())
   |              ---- type must be known at this point
   |
help: consider giving `items` an explicit type, where the placeholders `_` are specified
   |
83 |     let items: Box<_> = format_items
   |              ++++++++

For more information about this error, try `rustc --explain E0282`.

And just like that, I've lost trust in Rust's resiliency to bit-rot.

It's not that deep an error and I resolved it by pinning a higher version of the time library, but it still sucks.

To me, whether code will "just work" into the future is an important property of a language and ecosystem. Maybe I had inflated expectations because of Rust editions, and maybe I'm being too harsh, but I now have this feeling of unease that I didn't before.


<- Index