## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# Error code E0328

The Unsize trait should not be implemented directly. All implementations of Unsize are provided automatically by the compiler.

Erroneous code example:

    #![allow(unused)]
    #![feature(unsize)]

    fn main() {
    use std::marker::Unsize;

    pub struct MyType;

    impl<T> Unsize<T> for MyType {}
    }

If you are defining your own smart pointer type and would like to enable conversion from a sized to an unsized type with the DST coercion system, use `CoerceUnsized` instead.

    #![allow(unused)]
    #![feature(coerce_unsized)]

    fn main() {
    use std::ops::CoerceUnsized;

    pub struct MyType<T: ?Sized> {
        field_with_unsized_type: T,
    }

    impl<T, U> CoerceUnsized<MyType<U>> for MyType<T>
        where T: CoerceUnsized<U> {}
    }