2025-01-16 11:30:39 +00:00
|
|
|
#![feature(extern_types)]
|
|
|
|
|
#![feature(sized_hierarchy)]
|
|
|
|
|
|
|
|
|
|
use std::marker::{MetaSized, PointeeSized};
|
|
|
|
|
|
2025-02-27 21:19:51 +00:00
|
|
|
fn needs_pointeesized<T: PointeeSized>() {}
|
|
|
|
|
fn needs_metasized<T: MetaSized>() {}
|
2025-01-16 11:30:39 +00:00
|
|
|
fn needs_sized<T: Sized>() {}
|
|
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
|
needs_pointeesized::<u8>();
|
|
|
|
|
needs_metasized::<u8>();
|
|
|
|
|
needs_sized::<u8>();
|
|
|
|
|
|
|
|
|
|
needs_pointeesized::<str>();
|
|
|
|
|
needs_metasized::<str>();
|
|
|
|
|
needs_sized::<str>();
|
|
|
|
|
//~^ ERROR the size for values of type `str` cannot be known at compilation time
|
|
|
|
|
|
|
|
|
|
extern "C" {
|
|
|
|
|
type Foo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
needs_pointeesized::<Foo>();
|
|
|
|
|
needs_metasized::<Foo>();
|
|
|
|
|
//~^ ERROR the size for values of type `main::Foo` cannot be known
|
|
|
|
|
needs_sized::<Foo>();
|
|
|
|
|
//~^ ERROR the size for values of type `main::Foo` cannot be known at compilation time
|
|
|
|
|
}
|