Help wanted with network behaviour, and some questions

Hi, I’m new to libp2p-rs and I’m building p2p protocol and I need help with creating network behavior.
What do I need?
I need to have struct and impl in rust with swarm so I can launch a node and peers can connect to it and like this EG. let node = p2p::node_init();
And in some other function do like node.broadcast(&encoded_message)
For my network behavior I just need send_message, broadcast message and message handler. Do you think you can help me?
I want to thank you in advance as I think this is the best rust p2p lib :slight_smile:

Code I have:

use libp2p::{
    mdns::{Mdns, MdnsConfig, MdnsEvent},
    swarm::{Swarm, SwarmEvent},
use std::error::Error;

pub async fn start() -> Result<(), Box<dyn Error>> {
    let id_keys = identity::Keypair::generate_ed25519();
    let peer_id = PeerId::from(id_keys.public());
    println!("Local peer id: {:?}", peer_id);

    let transport = libp2p::development_transport(id_keys).await?;

    let behaviour = Mdns::new(MdnsConfig::default()).await?;

    let mut swarm = Swarm::new(transport, behaviour, peer_id);

    loop {
        match swarm.select_next_some().await {
            SwarmEvent::NewListenAddr { address, .. } => {
                println!("Listening on local address {:?}", address)
            SwarmEvent::Behaviour(MdnsEvent::Discovered(peers)) => {
                for (peer, addr) in peers {
                    println!("discovered {} {}", peer, addr);
            SwarmEvent::Behaviour(MdnsEvent::Expired(expired)) => {
                for (peer, addr) in expired {
                    println!("expired {} {}", peer, addr);
            _ => {}


You would need to use something like GossipSub or Request Response.