The Rust team's answer to this is "crater runs", where they build the current versions of all packages on crates.io with the new compiler to predict the ecosystem impact of a potential change.
> The Rust team's answer to this is "crater runs", where they build the current versions of all packages on crates.io with the new compiler to predict the ecosystem impact of a potential change.
Wow! I never knew this. What a fantastic use case for good, automatic, CI.
https://github.com/rust-lang/rust/issues/88967: they've delayed adding an `Iterator::intersperse()` method to the standard library, since it conflicts with the `Itertools::intersperse()` method from the popular `itertools` crate.
It is possible. If you implement a trait with a function “foo” on some stdlib type, then “foo” is added to the type’s inherent impl, the inherent function will now be called instead of the one in your trait when doing x.foo()
jmillikin|3 years ago
Say you had the following code:
This is totally valid, it'll compile, and it's not an unreasonable use case to want to extend standard traits like `io::Write`.The problem is that a newer version of the standard library might have this:
And now that existing code will fail to compile.The Rust team's answer to this is "crater runs", where they build the current versions of all packages on crates.io with the new compiler to predict the ecosystem impact of a potential change.
physPop|3 years ago
Wow! I never knew this. What a fantastic use case for good, automatic, CI.
LegionMammal978|3 years ago
umanwizard|3 years ago