On Tuesday, 14 September 2021 at 12:53:27 UTC, Adam D Ruppe wrote:
>I had a problem just like this before because I was sending objects through the pipe.
This reminds my (not very successfull) attempts to implement the idea in Rust:
pub struct Edsm {
name: String,
pub states: Vec<State>,
current: usize,
// pub state : *mut State, (?)
pub data: *const void, // long live void* !!!
// pub buddy : &'a Edsm, // ... and a hell begins...
mb: Option<Box<EventSource>>,
/* self-pipe write end fd, for sending internal events to this machine */
mxfd: i32,
io: Option<Box<EventSource>>,
pub tm: Vec<EventSource>,
sg: Vec<EventSource>,
// pub fs : Option<Box<EventSource>>,
// pub ecap : &'a mut Ecap, // Welcome to <'x> HELL again!!!
ecap: *mut Ecap,
running: bool, /* self.run() has been invoked */
}
When something (a struct, for ex.) goes to a queue (DList for ex.),
it is out of ANY scope and clever things like borrow checker
can not analyze it's lifetime, oops...