An inherent impl was written on a dyn auto trait.
Erroneous code example:
#![allow(unused)]
#![feature(auto_traits)]
fn main() {
auto trait AutoTrait {}
impl dyn AutoTrait {}
} Dyn objects allow any number of auto traits, plus at most one non-auto trait. The non-auto trait becomes the "principal trait".
When checking if an impl on a dyn trait is coherent, the principal trait is normally the only one considered. Since the erroneous code has no principal trait, it cannot be implemented at all.
Working example:
#![allow(unused)]
#![feature(auto_traits)]
fn main() {
trait PrincipalTrait {}
auto trait AutoTrait {}
impl dyn PrincipalTrait + AutoTrait + Send {}
}
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/error_codes/E0785.html