Collective bikeshed of `#[marker] trait Foo { .. }`

About #[marker]… I do think that marker entails a trait with zero items; this is noted in @killercup’s blog post Trait Driven Development, by @nikomatsakis here and it is a true statement about every trait in std::marker (well, Copy implies Clone but that is indirect as previously noted).

Furthermore, if you have a trait Foo {} which has zero items (and so it will be seen as a marker trait…) but without #[marker], then all marker traits are not #[marker] traits which results in a somewhat confusing situation.

Finally I think that what I described above wrt. #[marker] not telling the reader what effect it has on the trait is somewhat of a problem. The effect of the attribute is really all about overlap and coincidentally it is sound for there to be overlap with traits that have zero items (marker traits) or traits with provided definitions that can’t be overridden (not marker traits, I think). However, one could perhaps (and I want to stress that this is quite hypothetical) imagine a broader system of traits where it could work. Naming it #[marker] would make that difficult.