Skip to content

Commit de1ebbb

Browse files
committed
const param in async
1 parent a30b28e commit de1ebbb

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
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() { }

0 commit comments

Comments
 (0)