]> git.lizzy.rs Git - rust.git/blob - src/test/ui/const-generics/const-param-in-async.rs
Auto merge of #79342 - CDirkx:ipaddr-const, r=oli-obk
[rust.git] / src / test / ui / const-generics / const-param-in-async.rs
1 // edition:2018
2 // check-pass
3 // revisions: full min
4 #![cfg_attr(full, feature(const_generics))]
5 #![cfg_attr(full, allow(incomplete_features))]
6 #![cfg_attr(min, feature(min_const_generics))]
7
8 async fn foo<const N: usize>(arg: [u8; N]) -> usize { arg.len() }
9
10 async fn bar<const N: usize>() -> [u8; N] {
11     [0; N]
12 }
13
14 trait Trait<const N: usize> {
15     fn fynn(&self) -> usize;
16 }
17 impl<const N: usize> Trait<N> for [u8; N] {
18     fn fynn(&self) -> usize {
19         N
20     }
21 }
22 async fn baz<const N: usize>() -> impl Trait<N> {
23     [0; N]
24 }
25
26 async fn biz<const N: usize>(v: impl Trait<N>) -> usize {
27     v.fynn()
28 }
29
30 async fn user<const N: usize>() {
31     let _ = foo::<N>(bar().await).await;
32     let _ = biz(baz::<N>().await).await;
33 }
34
35 fn main() { }