Rust libp2p库报错:无法找到development_transport函数求助
问题
我的Rust代码一直报错:cannot find function development_transport in crate 'libp2p'。但在编辑器中点击导入语句查看libp2p的lib.rs文件时,明明能看到该函数。使用的libp2p版本为0.49.0,相关代码及Cargo.toml配置如下:
use libp2p::futures::StreamExt; use libp2p::swarm::dummy::Behaviour; use libp2p::swarm::{Swarm, SwarmEvent}; use libp2p::{identity, PeerId}; use std::error::Error; #[tokio::main] async fn main() -> Result<(), Box<dyn Error>> { let local_key = identity::Keypair::generate_ed25519(); let local_peer_id = PeerId::from(local_key.public()); println!("Local peer id is: {}", local_peer_id); let behaviour = Behaviour; let transport = libp2p::development_transport(local_key)?; let mut swarm = Swarm::new(transport, behaviour, local_peer_id); swarm.listen_on("/ip4/0.0.0.0/tcp/0".parse()?)?; loop { match swarm.select_next_some().await { SwarmEvent::NewListenAddr { address, .. } => { println!("Listening on local address {:?}", address) } _ => {} } } }
Cargo.toml内容:
[dependencies] libp2p = "0.49.0" tokio = { version = "1.21.2", features = ["full"] }
解决方法
development_transport函数属于libp2p的development可选特性,默认未启用,必须显式开启才能调用。- 修改Cargo.toml中的libp2p依赖配置,添加
development特性:
[dependencies] libp2p = { version = "0.49.0", features = ["development"] } tokio = { version = "1.21.2", features = ["full"] }
- 核心原因:libp2p将调试、开发类的便捷工具函数放在可选特性中,默认不编译这类代码以优化编译体积和最终二进制大小,因此使用这类函数前需要手动开启对应特性。
内容的提问来源于stack exchange,提问作者Tjardo
相关产品推荐
相关产品推荐

