pub trait SetTarget<C> {
// Required methods
fn add_ref(&self) -> Box<dyn SetTarget<C>>;
fn set_target(&self, target: C);
}Expand description
Trait implemented by the reconnecting client to set new connection out-of-band.
When using auto_reconnect or lazy_auto_reconnect it is not always optimal
to wait for a call to fail with Disconnected
before replacing the client that is wrapped with a new fresh one.
Sometimes we know by other means that a client has gone away. It could be that we have clients that automatically sends us a new capability when it reconnects to us.
For these situations you can use the implementation of this trait that you get from
auto_reconnect or lazy_auto_reconnect to manually set the target of the
wrapped client.
§Example
// The reconnecting client that automatically calls connect
let (foo_client, set_target) = auto_reconnect(|| {
Ok(new_future_client(connect()))
})?;
// do work with foo_client
...
// We become aware that the client has gone so reconnect manually
set_target.set_target(new_future_client(connect()));
// do more work with foo_client
...Required Methods§
Sourcefn add_ref(&self) -> Box<dyn SetTarget<C>>
fn add_ref(&self) -> Box<dyn SetTarget<C>>
Adds a new reference to this implementation of SetTarget.
This is mostly to get around that Clone requires Sized and so you need this
trick to get a copy of the Box<dyn SetTarget<C>> you got from making the
reconnecting client.
Sourcefn set_target(&self, target: C)
fn set_target(&self, target: C)
Sets the target client of the reconnecting client that this trait implementation is for.
Trait Implementations§
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".