rust/tests/ui/sized-hierarchy/elaboration-opt-regions.rs
David Wood 607eb322a8
trait_sel: skip elaboration of sizedness supertrait
As a performance optimization, skip elaborating the supertraits of
`Sized`, and if a `MetaSized` obligation is being checked, then look for
a `Sized` predicate in the parameter environment. This makes the
`ParamEnv` smaller which should improve compiler performance as it avoids
all the iteration over the larger `ParamEnv`.
2025-06-16 23:04:36 +00:00

19 lines
408 B
Rust

//@ check-pass
//@ compile-flags: --crate-type=lib
//@ revisions: old next
//@[next] compile-flags: -Znext-solver
#![feature(sized_hierarchy)]
use std::marker::{PhantomData, MetaSized, PointeeSized};
struct Foo<'a, T: PointeeSized>(PhantomData<&'a T>, T);
fn requires_metasized<T: MetaSized>() {}
fn foo<'a, T: 'a + PointeeSized>()
where
Foo<'a, T>: Sized
{
requires_metasized::<Foo<'_, T>>();
}