Rust errors / Types and traits
Rust compiler error · checked with rustc 1.99.0
Rust error E0328: explicit impls for the `Unsize` trait are not permitted
What it meansThe Unsize trait should not be implemented directly. All implementations of Unsize are provided automatically by the compiler.
What rustc prints
error[E0328]: explicit impls for the `Unsize` trait are not permitted
--> main.rs:7:1
|
7 | impl<T> Unsize<T> for MyType {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ impl of `Unsize` not allowedReal output of rustc 1.99.0 compiling the official example below (2021 edition). Your names and line numbers will differ; the first line is the part to match.
The compiler team's explanation
The Unsize trait should not be implemented directly. All implementations of Unsize are provided automatically by the compiler.
Erroneous code example:
#![feature(unsize)]
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.
#![feature(coerce_unsized)]
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> {}From rustc --explain E0328 (1.99.0), part of the Rust project, MIT or Apache-2.0. Official page.
Related errors
- E0308mismatched types
- E0277the trait bound is not satisfied
- E0599no method named X found in the current scope
- E0433failed to resolve
- E0325item `N` is an associated type, which doesn't match its trait `Foo`
- E0326implemented const `BAR` has an incompatible type for trait
- E0364`foo` is private, and cannot be re-exported
- E0366`Drop` impls cannot be specialized
Up next
Often hit nextE0308: mismatched typesA related error from the same family.Read it next →Did this answer your question?