On Wed, Sep 28, 2022 at 7:54 PM Bartosz Golaszewski <brgl@xxxxxxxx> wrote: > > I'm a Rust beginner but my understanding is that the whole idea of the > language design is to *not* allow a situation where the program can > crash. It should be detected at build-time. We must not rely on More precisely, it needs to avoid UB (which is defined similarly as in C++, and of course UB may lead to a crash if one is lucky). > Is there a way to invalidate a reference in Rust? Have a small (cheap) > object in the buffer which the event references and which would get > dropped when reading into the buffer? >From your C++ example above: const edge_event& ev = buffer.get_event(0); request.read_edge_event(buffer); std::cout << ev << std::endl; It looks like a container whose elements get invalidated, so `read_edge_event` could require an exclusive reference to `buffer` in Rust, that way you cannot keep borrows to its elements like `ev` if you want to call it. But of course this requires tying the lifetime of the events to that of the buffer. Cheers, Miguel