- //@ in our list of callbacks indefinitely. `'static` is a lifetime, the lifetime of the entire program. We can use lifetimes
- //@ as bounds on types, to demand that anything in (an element of) the type lives at least as long as this lifetime. That bound was implicit in the `Box`
- //@ above, and it is the reason we could not have the borrowed `count` in the closure in `demo`.
+ //@ 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*: `T: 'a` says
+ //@ that all data of type `T` will *outlive* (i.e., will be valid for at least as long as) lifetime `'a`.
+ //@ Here, we use the special lifetime `'static`, which is the lifetime of the entire program.
+ //@ The same bound has been implicitly added in the version of `register` above, and in the definition of
+ //@ `Callbacks`. This is the reason we could not have the borrowed `count` in the closure in `demo` previously.