全局使用的 tokio 运行时,但是框架很多库对 tokio 的支持层级不太统一,主要是 quic 协议这块,不过其他协议也有类似的问题给老哥们看下目前几个协议 tokio 特性的配置:
libp2p = { version = "0.55.0", features = [
"quic",
"gossipsub",
"tls",
"kad",
"ping",
"tcp",
"yamux",
"noise",
"macros",
"mdns",
], default-features = false }
libp2p-mdns = { version = "0.47.0", features = ["tokio"] }
libp2p-tcp = { version = "0.43.0", features = ["tokio"] }
libp2p-quic = { version = "0.12.0", features = ["tokio"]}
libp2p-swarm = { version = "0.46.0", features = ["tokio"] }
tokio = { version = "1.44.2", features = ["full"] },有不合理的地方老哥们指摘.
老哥们,改了:
pub fn create_swarm(
peer_id: PeerId,
transport: Boxed<(PeerId, StreamMuxerBox)>
) -> Result<Swarm<SwarmBehaviour>> {
let behavior = Behaviour::new(&peer_id)?;
let config = Config::with_tokio_executor();
let swarm = Swarm::new(transport, behavior, peer_id, config);
Ok(swarm)
}