fn add(&mut self, add: AddMsg<P, R>) -> (P, Receiver<R>) {
        let (pid, tx, rx) = add;
        self.demux.txs.insert(pid, tx);
        (pid, rx)
    }
/// Add a new session, which is the client side of a protocol this side initiated.
///
/// If a session with the same ID already exists it is overwritten.
/// This should cause a disconnection error to be raised in the session,
/// which is why we have to ignore those, and not abort all other sessions
/// when such an error is reported.
///
/// Returns the receiver we need to register with the multiplexer.
Add a new session, which is the client side of a protocol this side initiated.
If a session with the same ID already exists it is overwritten.
This should cause a disconnection error to be raised in the session,
which is why we have to ignore those, and not abort all other sessions
when such an error is reported.

Returns the receiver we need to register with the multiplexer.
Add a new session which is the client side of a protocol this side initiated . If a session with the same ID already exists it is overwritten . This should cause a disconnection error to be raised in the session which is why we have to ignore those and not abort all other sessions when such an error is reported . Returns the receiver we need to register with the multiplexer .
fn add(&mut self, add: AddMsg<P, R>) -> (P, Receiver<R>) {
        let (pid, tx, rx) = add;
        self.demux.txs.insert(pid, tx);
        (pid, rx)
    }
fn add ( & mut self , add : AddMsg < P , R > ) -> ( P , Receiver < R > ) { let ( pid , tx , rx ) = add ; self . demux . txs . insert ( pid , tx ) ; ( pid , rx ) }
Add a new session, which is the client side of a protocol this side initiated.
Add a new session which is the client side of a protocol this side initiated .
&mut self
add
AddMsg<P, R>