rust-lang-deprecated / error-chain

Error boilerplate for Rust
Apache License 2.0
730 stars 111 forks source link

Consider using dltonay's semver trick to prevent State from breaking #220

Open golddranks opened 7 years ago

golddranks commented 7 years ago

One can't use the link functionality between two crates that use different versions of error-chain. (At the moment 0.10 and 0.11 being the commonest ones.) In my experience, it's the internal State type that causes this incompatibility.

Consider using dtolnay's semver trick to allow linking two different versions together: https://github.com/dtolnay/semver-trick

Since the State is an internal type, changing it doesn't cause any API breakage. Thus, you should be allowed to import the State from the newer versions of error-chain. You can thus publish 0.10.1 and 0.9.1 that are not breaking changes to their respective branches, and still are compatible with 0.11.

Yamakaky commented 7 years ago

Hum, nice! Do you want to try a PR?

golddranks commented 7 years ago

I already tried for a bit, there were some problems, but they aren't necessarily insurmountable. The problem was that 0.11's State depends on a trait ChainedError of 0.11. I tried to implement that trait for a type from 0.10, but the type Iter was private and I couldn't do it. Might take some thinking, and possibly publishing Iter, with doc hidden option.

kw217 commented 7 years ago

+1 this just bit me too.