mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			25 lines
		
	
	
		
			467 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			467 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| // run-pass
 | |
| // Test that we use the elaborated predicates from traits
 | |
| // to satisfy const evaluatable predicates.
 | |
| #![feature(generic_const_exprs)]
 | |
| #![allow(incomplete_features)]
 | |
| use std::mem::size_of;
 | |
| 
 | |
| trait Foo: Sized
 | |
| where
 | |
|     [(); size_of::<Self>()]: Sized,
 | |
| {
 | |
| }
 | |
| 
 | |
| impl Foo for u64 {}
 | |
| impl Foo for u32 {}
 | |
| 
 | |
| fn foo<T: Foo>() -> [u8; size_of::<T>()] {
 | |
|     [0; size_of::<T>()]
 | |
| }
 | |
| 
 | |
| fn main() {
 | |
|     assert_eq!(foo::<u32>(), [0; 4]);
 | |
|     assert_eq!(foo::<u64>(), [0; 8]);
 | |
| }
 | 
