2 ms·
I'm not clear on how it being implicit or explicit changes this issue. Sure, it is a benefit for the library writer that they can be told that their library is
by stormbrew 13y ago
I'm not clear on how it being implicit or explicit changes this issue. Sure, it is a benefit for the library writer that they can be told that their library is breaking a contract that it previously held to, but if they change it anyway the downstream user is still shit outta luck either way.
If it's just about making sure library writers don't accidentally fail a changed contract just make it so that they can declare an explicit contract that will cause an error if they don't meet and thus make clear the contracts they intend to continue honoring.
This makes the error explicit for exactly the right person in the event of a contract change: the library writer if they break without intending to and the user of the library if they are using the library in a way that they expect to work but were not guaranteed to by the library writer.
> impl<T: Freeze> Freeze for Cell<T> { }
I see. Is it multiple statements for multiple traits or can theybe combined into one statement? Forgive the newbish question.
- chrismorgan 13y agoIt makes it clear that a contract is being broken, which, if one is following semver, would necessitate a new major version number. As it is, an expert could easily miss the change; making this explicit is a Very Good Thing™. On the Cell Freeze matter: I don't understand your question. Can you clarify what you mean?
- jruderman 13y agoDo you need multiple statements if you want your type to be "Freeze if T is Freeze", "Share if T is Share", etc?
- chrismorgan 13y agoYes, you do. But that's not arduous.