]> git.lizzy.rs Git - rust.git/blob - tests/ui/const-generics/const-param-in-async.rs
Move /src/test to /tests
[rust.git] / tests / ui / const-generics / const-param-in-async.rs
1 // edition:2018
2 // check-pass
3
4 async fn foo<const N: usize>(arg: [u8; N]) -> usize { arg.len() }
5
6 async fn bar<const N: usize>() -> [u8; N] {
7     [0; N]
8 }
9
10 trait Trait<const N: usize> {
11     fn fynn(&self) -> usize;
12 }
13 impl<const N: usize> Trait<N> for [u8; N] {
14     fn fynn(&self) -> usize {
15         N
16     }
17 }
18 async fn baz<const N: usize>() -> impl Trait<N> {
19     [0; N]
20 }
21
22 async fn biz<const N: usize>(v: impl Trait<N>) -> usize {
23     v.fynn()
24 }
25
26 async fn user<const N: usize>() {
27     let _ = foo::<N>(bar().await).await;
28     let _ = biz(baz::<N>().await).await;
29 }
30
31 fn main() { }