//@ anymore, and hence no way to race on the data with someone else.
//@
//@ There is a little more to this. Remember the `'static` bound we had to add to `register` in the previous parts, to make
//@ sure that the callbacks do not reference any pointers that might become invalid? This is just as crucial for spawning
//@ a thread: In general, that thread could last for much longer than the current stack frame. Thus, it must not use
//@ any pointers to data in that stack frame. This is achieved by requiring the `FnOnce` closure passed to `thread::spawn`
//@ anymore, and hence no way to race on the data with someone else.
//@
//@ There is a little more to this. Remember the `'static` bound we had to add to `register` in the previous parts, to make
//@ sure that the callbacks do not reference any pointers that might become invalid? This is just as crucial for spawning
//@ a thread: In general, that thread could last for much longer than the current stack frame. Thus, it must not use
//@ any pointers to data in that stack frame. This is achieved by requiring the `FnOnce` closure passed to `thread::spawn`