1 An evaluation of a trait requirement overflowed.
3 Erroneous code example:
10 impl<T> Foo for T where Bar<T>: Foo {}
13 This error occurs when there was a recursive trait requirement that overflowed
14 before it could be evaluated. This often means that there is an unbounded
15 recursion in resolving some type bounds.
17 To determine if a `T` is `Foo`, we need to check if `Bar<T>` is `Foo`. However,
18 to do this check, we need to determine that `Bar<Bar<T>>` is `Foo`. To
19 determine this, we check if `Bar<Bar<Bar<T>>>` is `Foo`, and so on. This is
20 clearly a recursive requirement that can't be resolved directly.
22 Consider changing your trait bounds so that they're less self-referential.