StartedEvent is returned from Event::start() but not exposed in the public API, which makes it impossible to name and store inside other data structures.
Additionally, the lifetime seems unnecessarily prohibitive - it is not tied to the original event by reference, but rather contains it, so it shouldn't require user to keep the original Event object around - both Event and StartedEvent should be 'static structs with no references or lifetimes.