forked from ROMEO/nexosim

From Rust 1.78, `Waker::will_wake` tests equality by comparing the VTable pointers rather than the content of the VTable. Unfortunately, this exposes some instability in the code generation which sometimes causes several VTables to be instantiated in memory for the same generic parameters. This can in turn defeat `Waker::will_wake` if e.g. `Waker::clone` and `Waker::wake_by_*` end up with different pointers. The problemt is hopefully addressed by preventing inlining of the VTable generation function. A test has been added to try to detect regression, though the test may not be 100% reliable.