Program crash: GC destroys an object unexpectedly

eugene dee0xeed at gmail.com
Tue Sep 14 13:10:52 UTC 2021


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:

```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...




More information about the Digitalmars-d-learn mailing list