Remove our own error types from crossbeam-queue #548
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently,
crossbeam-queue
has two error types:PopError
,PushError
.PopError
is a unit struct with no field, and is returned byArrayQueue::pop
andSegQueue::pop
if the queue is empty.PushError
is a tuple struct with a public field that stores the element that user tried to push, and is returned byArrayQueue::push
if the queue is full.I guess the current API was influenced by channels, but there is only one kind(variant) of error in each, and unlike channels, multiple kinds(variants) of errors do not occur.
And, neither of these provides additional information about the error (fields are all public, so it doesn't seem like they are going to provide them in the future).
So, APIs that return
Option
(onpop
methods) andResult
(onArrayQueue::push
) without our own errors are simple, and I think it is preferable.(Especially for the
pop
methods, it will be more consistent, because all other publicpop
methods in crossbeam returnOption
.)(Of course, this is a breaking change, but the master already has some breaking changes.)