Is it possible to explicitly mark a type with unimplemented Send or Sync marker traits without some redundant fields? This can be an alternative:
struct T {
_marker: PhantomData<*const ()>,
}
but again, it has a redundant field, is super cryptic (you need to remember that a pointer is !Send + !Sync) and might be nontrivial to get a proper combination (consider !Sync + Send). I believe negative trait might be a solution, but they are not available at stable yet:
// error[E0658]: negative trait bounds are not yet fully implemented
impl !Send for T {}