swarm/src/lib: Remove Deref and DerefMut impls on Swarm (#1995)

Remove `Deref` and `DerefMut` implementations previously dereferencing
to the `NetworkBehaviour` on `Swarm`. Instead one can access the
`NetworkBehaviour` via `Swarm::behaviour` and `Swarm::behaviour_mut`.
Methods on `Swarm` can now be accessed directly, e.g. via
`my_swarm.local_peer_id()`.

Reasoning: Accessing the `NetworkBehaviour` of a `Swarm` through `Deref`
and `DerefMut` instead of a method call is an unnecessary complication,
especially for newcomers. In addition, `Swarm` is not a smart-pointer
and should thus not make use of `Deref` and `DerefMut`, see documentation
from the standard library below.

> Deref should only be implemented for smart pointers to avoid
confusion.

https://doc.rust-lang.org/std/ops/trait.Deref.html
This commit is contained in:
Max Inden
2021-03-18 14:55:33 +01:00
committed by GitHub
parent 5a45f93fc2
commit 63512e5f16
37 changed files with 313 additions and 274 deletions

View File

@ -60,7 +60,7 @@ fn main() -> Result<(), Box<dyn Error>> {
let mut swarm = Swarm::new(transport, relay_behaviour, local_peer_id);
// Listen on all interfaces and whatever port the OS assigns
Swarm::listen_on(&mut swarm, "/ip6/::/tcp/0".parse()?)?;
swarm.listen_on("/ip6/::/tcp/0".parse()?)?;
let mut listening = false;
block_on(futures::future::poll_fn(move |cx: &mut Context<'_>| {