It’s easy to trigger undefined behavior with this code. Imagin that Box<dyn FnOnce()> is a closure that contains Rc and clone it on execution. You can send it to another thread in safe code due to your unsafe impl Send for Subscription, and calling it in there is UB. To fix it, try this impl.

thank you, think about this before, but it will be followed by many change effect by others (cause not only this struct has this kind of structure). I assume the FnOnce only contains 'static and be sent once.
but seem like I have to change it anw