With the current implementation of opening a new *mut xlib::Display via xlib::XOpenDisplay(ptr::null()) will result in the program to panic, once simulate has been called to often.
Panic message:
Maximum number of client reached
It seems that the maximum client is 256 by default, ref stackexchange link.
A better way to approach this, might be having a Struct named Rdev for example, which will hold the reference to 3 x11 display object, one for simulate, two for listen.
struct Rdev {
display: *mut xlib:Display,
...
}