//@ in our list of callbacks indefinitely. If the closure contained a pointer to our caller's stackframe, that pointer
//@ could be invalid by the time the closure is called. We can mitigate this by bounding `F` by a *lifetime*: `F: 'a` says
//@ that all data of type `F` will *outlive* (i.e., will be valid for at least as long as) lifetime `'a`.
//@ in our list of callbacks indefinitely. If the closure contained a pointer to our caller's stackframe, that pointer
//@ could be invalid by the time the closure is called. We can mitigate this by bounding `F` by a *lifetime*: `F: 'a` says
//@ that all data of type `F` will *outlive* (i.e., will be valid for at least as long as) lifetime `'a`.