对不起,如果以下答案是直截了当的,但我似乎无法理解。
我需要创建一个 swarm 并将 swarm 返回到主函数,但我不知道如何返回一个通用结构,例如“P2p”结构。
特征用于抽象方法,因此我不能声明一个来抽象结构的属性。
ps: swarm 是 struct ExpandedSwarm<"依赖于行为和传输的东西">
pps:感谢您的任何意见。
fn create_swarm<T>() -> Result<T, Box<dyn Error>> {
let local_key = identity::Keypair::generate_ed25519();
let local_peer_id = PeerId::from(local_key.public());
println!("Local peer id --> {}", local_peer_id);
let transport = block_on(libp2p::development_transport(local_key))?;
let behaviour = Ping::new(PingConfig::new().with_keep_alive(true));
let local_swarm = Swarm::new(transport, behaviour, local_peer_id);
let p = P2p::new(local_swarm);
Ok(p)
}
struct P2p <T> {
swarm: T
}
impl <T> P2p<T> {
pub fn new(swarm: T) -> Self {
return Self{swarm}
}
}