1.15 contained a new feature that was seriously awaited, so a lot of libraries pushed out a new version using that feature. Even with that, though, Cargo _should_ have saved you here, via the lockfile.
It shouldn't have been the standard library though. If it was, that'd be a serious bug! If you do figure it out, and it is the standard library, please file a bug. And if you need any help, feel free to reach out. I'm here to help.
This was using the latest toml and serde releases, which I think does use that new attribute stuff (which is fucking cool btw). But no warning from cargo until it was compiling the dependencies.
Yeah, that makes sense, they would totally be using it.
Still, upgrading to those releases _should_ have taken manual intervention; how were you depending on them in your Cargo.toml? And I guess you had no Cargo.lock for some reason?
Brand new project. I added them by putting the dependencies into the cargo.toml file (with the current version), is that how you're meant to add them or is there some kind of "cargo install" command?
Ah ha! Yeah, so it makes sense that the latest version would need the latest version of the compiler. You could use the previous version and it should still work. Usually, when a project requires a new Rust version, there's a bump to whichever version determines compatibility. (for x.y.z, x if x != and y if x == 0) Given that you said it was breaking, I thought you meant you had a project that suddenly stopped working, my bad.
For now, that's the standard way, at some point, we might pull a "cargo add" command into core, but there's some blocking on parsing.
It shouldn't have been the standard library though. If it was, that'd be a serious bug! If you do figure it out, and it is the standard library, please file a bug. And if you need any help, feel free to reach out. I'm here to help.