Currently we have circular dependencies in our workspace.
This is problematic because:
Getting rid of the circular dependencies is almost easily solvable, except for the NetworkBehaviour custom derive.
That one emits code that assumes that a crate libp2p is in scope where it can import items from. That is an issue because it means we can't use the macro in our workspace without depending on the libp2p meta crate which is a circular dependency again.
The real solution here is being discussed over at rust-lang/rust: rust-lang/rust#54363.
We can't wait for that to be implemented though, so we need to find a workaround.
Currently we have circular dependencies in our workspace.
This is problematic because:
Getting rid of the circular dependencies is almost easily solvable, except for the
NetworkBehaviourcustom derive.That one emits code that assumes that a crate
libp2pis in scope where it can import items from. That is an issue because it means we can't use the macro in our workspace without depending on thelibp2pmeta crate which is a circular dependency again.The real solution here is being discussed over at rust-lang/rust: rust-lang/rust#54363.
We can't wait for that to be implemented though, so we need to find a workaround.