bcode_client 0.0.1-alpha.0

Programmatic client API for bcode
#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn settled_controls_do_not_exhaust_lifetime_or_retarget_stale_senders() {
        let controls = Controls::default();
        for index in 0..5000 {
            let id = format!("search-{index}");
            let (sender, receiver) = mpsc::channel(1);
            controls.0.lock().unwrap().insert(id.clone(), Some(sender));
            let registration = Registration {
                controls: controls.clone(),
                id,
            };
            drop(receiver);
            drop(registration);
        }
        assert!(controls.0.lock().unwrap().is_empty());
        let (old_sender, old_receiver) = mpsc::channel::<CancelReply>(1);
        drop(old_receiver);
        let (current, mut receiver) = mpsc::channel(1);
        controls
            .0
            .lock()
            .unwrap()
            .insert("reused".into(), Some(current));
        let (reply, _) = oneshot::channel();
        assert!(old_sender.try_send(reply).is_err());
        assert!(receiver.try_recv().is_err());
    }
}