Make ClientBuilder
directly accept boxed handler types
#3431
+99
−64
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.
Rather than having the
ClientBuilder
acceptimpl Into<Arc<H>> where H: HandlerTrait
, directly accept the correspondingArc<dyn HandlerTrait>
.This allows accepting non-concrete handler types (f.e. if constructed by a function that returns
Arc<dyn HandlerTrait>
already) and fixes type inference failures when passing anArc<H>
rather thanH
.This affects the setters for
EventHandler
,RawEventHandler
,Framework
, andVoiceGatewayManager
.Framework
is in a bit of a weird spot because it is only put in anArc
afterFramework::init
has been called, so a&mut
can be taken to it for that call, so this PR hasClientBuilder
acceptBox<dyn Framework>
for it.Most of the PR diff is related to fixing examples.