The trait `CoerceUnsized` may only be implemented for a coercion between structures with the same definition. Example of erroneous code: ```compile_fail,E0377 #![feature(coerce_unsized)] use std::ops::CoerceUnsized; pub struct Foo { field_with_unsized_type: T, } pub struct Bar { field_with_unsized_type: T, } // error: the trait `CoerceUnsized` may only be implemented for a coercion // between structures with the same definition impl CoerceUnsized> for Foo where T: CoerceUnsized {} ``` When attempting to implement `CoerceUnsized`, the `impl` signature must look like: `impl CoerceUnsized> for Type where T: CoerceUnsized`; the *implementer* and *`CoerceUnsized` type parameter* must be the same type. In this example, `Bar` and `Foo` (even though structurally identical) are *not* the same type and are rejected. Learn more about the `CoerceUnsized` trait and DST coercion in [the `CoerceUnsized` docs](../std/ops/trait.CoerceUnsized.html).