]> git.lizzy.rs Git - rust.git/blob - tests/ui/const-generics/generic_const_exprs/issue-100217.rs
Rollup merge of #106717 - klensy:typo, r=lcnr
[rust.git] / tests / ui / const-generics / generic_const_exprs / issue-100217.rs
1 // build-pass
2
3 #![allow(incomplete_features)]
4 #![feature(generic_const_exprs)]
5
6 trait TraitOne {
7     const MY_NUM: usize;
8     type MyErr: std::fmt::Debug;
9
10     fn do_one_stuff(arr: [u8; Self::MY_NUM]) -> Result<(), Self::MyErr>;
11 }
12
13 trait TraitTwo {
14     fn do_two_stuff();
15 }
16
17 impl<O: TraitOne> TraitTwo for O
18 where
19     [(); Self::MY_NUM]:,
20 {
21     fn do_two_stuff() {
22         O::do_one_stuff([5; Self::MY_NUM]).unwrap()
23     }
24 }
25
26 struct Blargotron;
27
28 #[derive(Debug)]
29 struct ErrTy<const N: usize>([(); N]);
30
31 impl TraitOne for Blargotron {
32     const MY_NUM: usize = 3;
33     type MyErr = ErrTy<{ Self::MY_NUM }>;
34
35     fn do_one_stuff(_arr: [u8; Self::MY_NUM]) -> Result<(), Self::MyErr> {
36         Ok(())
37     }
38 }
39
40 fn main() {
41     Blargotron::do_two_stuff();
42 }