Error code E0391

A type dependency cycle has been encountered.

Erroneous code example:

#![allow(unused)]
fn main() {
trait FirstTrait : SecondTrait {

}

trait SecondTrait : FirstTrait {

}
}

The previous example contains a circular dependency between two traits: FirstTrait depends on SecondTrait which itself depends on FirstTrait.

See https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information.