use std::sync::mpsc; use egui::Id; use rand::{Rng, rng}; pub fn random_id() -> Id { Id::new(rng().random::()) } /// An [mpsc::Sender] where the receiver is the GUI. #[derive(Clone)] pub struct GuiSender { tx: mpsc::Sender, ctx: egui::Context, } impl GuiSender { pub fn new(tx: mpsc::Sender, ctx: &egui::Context) -> Self { Self { tx, ctx: ctx.clone(), } } pub fn send(&self, t: T) -> Result<(), mpsc::SendError> { self.tx.send(t)?; self.ctx.request_repaint(); Ok(()) } }