diff options
Diffstat (limited to 'src/test/ui/unsized/unsized-struct.stderr')
-rw-r--r-- | src/test/ui/unsized/unsized-struct.stderr | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/test/ui/unsized/unsized-struct.stderr b/src/test/ui/unsized/unsized-struct.stderr new file mode 100644 index 000000000..c9510e92f --- /dev/null +++ b/src/test/ui/unsized/unsized-struct.stderr @@ -0,0 +1,53 @@ +error[E0277]: the size for values of type `T` cannot be known at compilation time + --> $DIR/unsized-struct.rs:6:36 + | +LL | fn foo2<T: ?Sized>() { not_sized::<Foo<T>>() } + | - ^^^^^^ doesn't have a size known at compile-time + | | + | this type parameter needs to be `std::marker::Sized` + | +note: required by a bound in `Foo` + --> $DIR/unsized-struct.rs:4:12 + | +LL | struct Foo<T> { data: T } + | ^ required by this bound in `Foo` +help: you could relax the implicit `Sized` bound on `T` if it were used through indirection like `&T` or `Box<T>` + --> $DIR/unsized-struct.rs:4:12 + | +LL | struct Foo<T> { data: T } + | ^ - ...if indirection were used here: `Box<T>` + | | + | this could be changed to `T: ?Sized`... +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +LL - fn foo2<T: ?Sized>() { not_sized::<Foo<T>>() } +LL + fn foo2<T>() { not_sized::<Foo<T>>() } + | + +error[E0277]: the size for values of type `T` cannot be known at compilation time + --> $DIR/unsized-struct.rs:13:24 + | +LL | fn bar2<T: ?Sized>() { is_sized::<Bar<T>>() } + | - ^^^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time + | | + | this type parameter needs to be `std::marker::Sized` + | +note: required because it appears within the type `Bar<T>` + --> $DIR/unsized-struct.rs:11:8 + | +LL | struct Bar<T: ?Sized> { data: T } + | ^^^ +note: required by a bound in `is_sized` + --> $DIR/unsized-struct.rs:1:13 + | +LL | fn is_sized<T:Sized>() { } + | ^ required by this bound in `is_sized` +help: consider removing the `?Sized` bound to make the type parameter `Sized` + | +LL - fn bar2<T: ?Sized>() { is_sized::<Bar<T>>() } +LL + fn bar2<T>() { is_sized::<Bar<T>>() } + | + +error: aborting due to 2 previous errors + +For more information about this error, try `rustc --explain E0277`. |