mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			32 lines
		
	
	
		
			582 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			582 B
		
	
	
	
		
			Rust
		
	
	
	
	
	
| //@ edition:2018
 | |
| //@ check-pass
 | |
| 
 | |
| async fn foo<const N: usize>(arg: [u8; N]) -> usize { arg.len() }
 | |
| 
 | |
| async fn bar<const N: usize>() -> [u8; N] {
 | |
|     [0; N]
 | |
| }
 | |
| 
 | |
| trait Trait<const N: usize> {
 | |
|     fn fynn(&self) -> usize;
 | |
| }
 | |
| impl<const N: usize> Trait<N> for [u8; N] {
 | |
|     fn fynn(&self) -> usize {
 | |
|         N
 | |
|     }
 | |
| }
 | |
| async fn baz<const N: usize>() -> impl Trait<N> {
 | |
|     [0; N]
 | |
| }
 | |
| 
 | |
| async fn biz<const N: usize>(v: impl Trait<N>) -> usize {
 | |
|     v.fynn()
 | |
| }
 | |
| 
 | |
| async fn user<const N: usize>() {
 | |
|     let _ = foo::<N>(bar().await).await;
 | |
|     let _ = biz(baz::<N>().await).await;
 | |
| }
 | |
| 
 | |
| fn main() { }
 | 
