error[E0277]: the size for values of type `Self` cannot be known at compilation time --> $DIR/adt-param-with-implicit-sized-bound.rs:2:19 | LL | fn func1() -> Struct1; | ^^^^^^^^^^^^^ doesn't have a size known at compile-time ... LL | struct Struct1{ | - required by this bound in `Struct1` | help: consider further restricting `Self` | LL | fn func1() -> Struct1 where Self: Sized; | ^^^^^^^^^^^^^^^^^ help: consider relaxing the implicit `Sized` restriction | LL | struct Struct1{ | ^^^^^^^^ error[E0277]: the size for values of type `Self` cannot be known at compilation time --> $DIR/adt-param-with-implicit-sized-bound.rs:3:23 | LL | fn func2<'a>() -> Struct2<'a, Self>; | ^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time ... LL | struct Struct2<'a, T>{ | - required by this bound in `Struct2` | help: consider further restricting `Self` | LL | fn func2<'a>() -> Struct2<'a, Self> where Self: Sized; | ^^^^^^^^^^^^^^^^^ help: consider relaxing the implicit `Sized` restriction | LL | struct Struct2<'a, T: ?Sized>{ | ^^^^^^^^ error[E0277]: the size for values of type `Self` cannot be known at compilation time --> $DIR/adt-param-with-implicit-sized-bound.rs:4:19 | LL | fn func3() -> Struct3; | ^^^^^^^^^^^^^ doesn't have a size known at compile-time ... LL | struct Struct3{ | - required by this bound in `Struct3` | help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box` --> $DIR/adt-param-with-implicit-sized-bound.rs:14:16 | LL | struct Struct3{ | ^ this could be changed to `T: ?Sized`... LL | _t: T, | - ...if indirection were used here: `Box` help: consider further restricting `Self` | LL | fn func3() -> Struct3 where Self: Sized; | ^^^^^^^^^^^^^^^^^ error[E0277]: the size for values of type `Self` cannot be known at compilation time --> $DIR/adt-param-with-implicit-sized-bound.rs:5:19 | LL | fn func4() -> Struct4; | ^^^^^^^^^^^^^ doesn't have a size known at compile-time ... LL | struct Struct4{ | - required by this bound in `Struct4` | help: consider further restricting `Self` | LL | fn func4() -> Struct4 where Self: Sized; | ^^^^^^^^^^^^^^^^^ help: consider relaxing the implicit `Sized` restriction | LL | struct Struct4{ | ^^^^^^^^ error[E0277]: the size for values of type `T` cannot be known at compilation time --> $DIR/adt-param-with-implicit-sized-bound.rs:25:9 | LL | struct X(T); | - required by this bound in `X` ... LL | struct Struct5{ | - this type parameter needs to be `std::marker::Sized` LL | _t: X, | ^^^^ doesn't have a size known at compile-time | help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box` --> $DIR/adt-param-with-implicit-sized-bound.rs:18:10 | LL | struct X(T); | ^ - ...if indirection were used here: `Box` | | | this could be changed to `T: ?Sized`... help: consider removing the `?Sized` bound to make the type parameter `Sized` | LL | struct Struct5{ | -- error: aborting due to 5 previous errors For more information about this error, try `rustc --explain E0277`.