I pre-emptively apologize for not providing full picture -- I'm not sure what info is relevant, and this is a proprietary codebase so I can't just post a tar.bz2
I have a workspace containing many crates. In all crates, if I request bincode, I request it as:
bincode = "1.0.1"
Now, from a crate that requests bincode -- when I try to build it, it decides to (1) load bincode 1.1.1 instead, and then give me an error about read_u128. In particular, the Cargo.toml looks like:
Compiling bincode v1.1.1
error[E0599]: no method named `read_u128` found for type `R` in the current scope
...
|
112 | impl_nums!(u128, deserialize_u128, visit_u128, read_u128);
|
so there's two separate issues here: (1) why is bincode-1.1.1 not building fo rme and (2) why is Cargo directly ignoring my request for 1.0.1 and loading 1.1.1 ?
You said "1.0.1" which is the same as "^1.0.1" which means "latest compatible version", not "exactly this version". If you want exactly1.0.1 and nothing else, you need to use "=1.0.1".
As for the compile error, I would assume it's because bincode doesn't properly guard using the 128-bit integer types whilst byteorder does, combined with you using an older compiler. Or maybe it just doesn't support your compiler version. Or maybe they're in the "requiring newer compilers doesn't count as breaking compatibility" camp. *shrug*