| mod a { |
| use std::fmt::{Debug, Formatter, Result}; |
| struct Inner<T>(T); |
| |
| impl Debug for Inner<()> { |
| fn fmt(&self, f: &mut Formatter<'_>) -> Result { |
| todo!() |
| } |
| } |
| |
| #[derive(Debug)] |
| struct Outer<T>(Inner<T>); //~ ERROR `a::Inner<T>` doesn't implement `Debug` |
| } |
| |
| mod b { |
| use std::fmt::{Debug, Formatter, Result}; |
| struct Inner<T>(T); |
| |
| impl<T: Debug> Debug for Inner<T> { |
| fn fmt(&self, f: &mut Formatter<'_>) -> Result { |
| todo!() |
| } |
| } |
| |
| #[derive(Debug)] |
| struct Outer<T>(Inner<T>); |
| } |
| |
| mod c { |
| use std::fmt::{Debug, Formatter, Result}; |
| struct Inner<T>(T); |
| trait Trait {} |
| |
| impl<T: Debug + Trait> Debug for Inner<T> { |
| fn fmt(&self, f: &mut Formatter<'_>) -> Result { |
| todo!() |
| } |
| } |
| |
| #[derive(Debug)] |
| struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: c::Trait` is not satisfied |
| } |
| |
| mod d { |
| use std::fmt::{Debug, Formatter, Result}; |
| struct Inner<T>(T); |
| trait Trait {} |
| |
| impl<T> Debug for Inner<T> where T: Debug, T: Trait { |
| fn fmt(&self, f: &mut Formatter<'_>) -> Result { |
| todo!() |
| } |
| } |
| |
| #[derive(Debug)] |
| struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: d::Trait` is not satisfied |
| } |
| |
| mod e { |
| use std::fmt::{Debug, Formatter, Result}; |
| struct Inner<T>(T); |
| trait Trait {} |
| |
| impl<T> Debug for Inner<T> where T: Debug + Trait { |
| fn fmt(&self, f: &mut Formatter<'_>) -> Result { |
| todo!() |
| } |
| } |
| |
| #[derive(Debug)] |
| struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: e::Trait` is not satisfied |
| } |
| |
| mod f { |
| use std::fmt::{Debug, Formatter, Result}; |
| struct Inner<T>(T); |
| trait Trait {} |
| |
| impl<T: Debug> Debug for Inner<T> where T: Trait { |
| fn fmt(&self, f: &mut Formatter<'_>) -> Result { |
| todo!() |
| } |
| } |
| |
| #[derive(Debug)] |
| struct Outer<T>(Inner<T>); //~ ERROR the trait bound `T: f::Trait` is not satisfied |
| } |
| |
| fn main() {} |