V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
tarscoding545
V2EX  ›  程序员

rust 版本 libp2p 的长相不太行

  •  
  •   tarscoding545 · 1 天前 · 931 次点击
    // 创建传输层(QUIC 和 TCP)
    fn create_transport(keypair: &identity::Keypair) -> Result<libp2p::core::transport::Boxed<(PeerId, libp2p::core::muxing::StreamMuxerBox)>, Box<dyn Error>> {
        // 配置 QUIC 传输
        let quic_transport = quic::async_std::Transport::new(quic::Config::new(keypair))
            .map(|(peer_id, conn), _| (peer_id, libp2p::core::muxing::StreamMuxerBox::new(conn)));
    
        // 配置 TCP 传输(带 Noise 加密和 Yamux 多路复用)
        let tcp_transport = tcp::async_io::Transport::new(tcp::Config::default().nodelay(true))
            .upgrade(libp2p::core::upgrade::Version::V1)
            .authenticate(noise::Config::new(keypair)?)
            .multiplex(libp2p::yamux::Config::default())
            .map(|(peer_id, conn), _| (peer_id, libp2p::core::muxing::StreamMuxerBox::new(conn)));
    
        // 组合两种传输方式(QUIC 优先,TCP 作为备选)
        Ok(libp2p::core::transport::OrTransport::new(quic_transport, tcp_transport)
            .map(|either, _| match either {
                libp2p::futures::future::Either::Left((peer_id, conn)) => (peer_id, conn),
                libp2p::futures::future::Either::Right((peer_id, conn)) => (peer_id, conn),
            })
            .boxed())
    }
    
    4 条回复    2025-04-03 09:41:56 +08:00
    tarscoding545
        1
    tarscoding545  
    OP
       1 天前
    QUIC 和 TCP 的俩 map 是真难看啊
    InkStone
        2
    InkStone  
       23 小时 22 分钟前   ❤️ 1
    没必要每个变量都用全称吧……import+alias 一下可以整洁很多。而且都 Box<dyn Error>了,不如直接 anyhow 得了。

    另外你这俩 map 是一样的吧,完全可以封个函数。
    ns09005264
        3
    ns09005264  
       11 小时 55 分钟前
    你为什么用这么长的包名,看花眼了。
    sunnysab
        4
    sunnysab  
       6 小时 19 分钟前
    终于有人说了!整半天没整明白这个库,而且 Rust 版的更新慢一点
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5284 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 08:01 · PVG 16:01 · LAX 01:01 · JFK 04:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.