]> git.lizzy.rs Git - rust.git/blob - tests/ui/traits/multidispatch1.rs
Auto merge of #107843 - bjorn3:sync_cg_clif-2023-02-09, r=bjorn3
[rust.git] / tests / ui / traits / multidispatch1.rs
1 // run-pass
2
3 use std::fmt::Debug;
4
5 trait MyTrait<T> {
6     fn get(&self) -> T;
7 }
8
9 #[derive(Copy, Clone)]
10 struct MyType {
11     dummy: usize
12 }
13
14 impl MyTrait<usize> for MyType {
15     fn get(&self) -> usize { self.dummy }
16 }
17
18 impl MyTrait<u8> for MyType {
19     fn get(&self) -> u8 { self.dummy as u8 }
20 }
21
22 fn test_eq<T,M>(m: M, v: T)
23 where T : Eq + Debug,
24       M : MyTrait<T>
25 {
26     assert_eq!(m.get(), v);
27 }
28
29 pub fn main() {
30     let value = MyType { dummy: 256 + 22 };
31     test_eq::<usize, _>(value, value.dummy);
32     test_eq::<u8, _>(value, value.dummy as u8);
33 }