 The `!Sync` implementations and the `Sync` implementations really ought to be separated apart, otherwise it makes it harder to skim. https://doc.rust-lang.org/stable/std/marker/trait.Sync.html#implementors