-
Notifications
You must be signed in to change notification settings - Fork 138
Should failure
be split into separate crates?
#224
Comments
See also #209 where there is some discussion about potentially moving the |
I'm glad you at least said "minimize". Personally, I have found the stability concerns during |
@epage I don't necessarily disagree. I'd appreciate if we all assumed good faith though, and not insinuate that anyone is trying to "shutdown the conversation." It's one thing to warn people that But yes, this is why I said "minimize." I do think it needs to be a strong consideration in whatever action we take. People have limited patience to deal with this sort of thing; we should respect that. |
I'm sorry; it was not my intention to prescribe motivation. My intention was more so to describe how it comes across and impacts people's perception, their trust of the process, and their willingness to give feedback. Honestly, it is one of the reasons I've generally steered clear of the conversations here even though I think the goals are admirable and want to see those goals achieved. |
2¢: The project going dormant for ~6 months has lowered my expectations, such that I'd view breaking changes actually merged to master, for sound reasons, as progress here! Just respect semvar (0.2 is sufficient) when breaking it, and be open to possibility of back-porting some non-breaking fixes or transitional aids to 0.1.x as well. |
@mitsuhiko Has taken ownership of the project as of a few days ago. So development has resumed. |
I'm going to close this now. Failure right now will continue to be what it is until it's clear what happens with the new error trait in std. The conversation about this can be found here: rust-lang/rfcs#2504 |
I used
failure
when prototyping 3 crates and recently had to rip it out on the path to 1.0. I suspect splitting failure up will help aid in the path to a stableFail
trait that doesn't need to be ripped out.failure
today provides a ecosystem wide vocabulary term (Fail
), implementation helpers (failure-derive,
bail, etc), and a catch-all
Failimplementation (
Error) that imo atm is best suited for
bins and prototyping. The compatibility guarantees for each of these set of tools is different. In addition, I feel that a simplified version of
Fail` would not be contentious on its own and could be stablized quickly. These combined provide a path to stablization.RE
Fail
When I evaluated
Fail
, I found most of my concerns to be withContext
andError
.Context
doesn't feel essential to the trait (could be an extension trait) and feels tied toError
(creates complex types that people will probably not return but instead return erased versions).RE Ripping
failure
outOnly 2 of the crates are moving to 1.0 but I had to at least remove
failure::Error
from the third becauseError
doesn't play nice with being acause
.My proposal
Split the crate into:
failure-fail
:Fail
trait withoutContext
supportCompat
and/orSyncFailure
failure-derive
failure-error
failure
as a facade that integrates the pieces together?Potential areas to still resolve in
Fail
causes
including the current error or not (name implies it doesn't, implementation does)root_cause
could be the current errorTermination
traitfn
s duplicated betweentrait
andimpl
Sync
requirementThe text was updated successfully, but these errors were encountered: