// Tests for RFC 1268: we allow overlapping impls of marker traits, // that is, traits with #[marker]. In this case, a type `T` is // `MyMarker` if it is either `Debug` or `Display`. #![feature(marker_trait_attr)] use std::fmt::{Debug, Display}; #[marker] trait MyMarker {} impl MyMarker for T {} impl MyMarker for T {} fn foo(t: T) -> T { t } fn main() { // Debug && Display: assert_eq!(1, foo(1)); assert_eq!(2.0, foo(2.0)); // Debug && !Display: assert_eq!(vec![1], foo(vec![1])); }