]> git.lizzy.rs Git - rust.git/blob - src/test/ui/traits/multidispatch2.rs
Rollup merge of #99742 - sigaloid:master, r=thomcc
[rust.git] / src / test / ui / traits / multidispatch2.rs
1 // run-pass
2
3 use std::fmt::Debug;
4 use std::default::Default;
5
6 trait MyTrait<T> {
7     fn get(&self) -> T;
8 }
9
10 impl<T> MyTrait<T> for T
11     where T : Default
12 {
13     fn get(&self) -> T {
14         Default::default()
15     }
16 }
17
18 #[derive(Copy, Clone)]
19 struct MyType {
20     dummy: usize
21 }
22
23 impl MyTrait<usize> for MyType {
24     fn get(&self) -> usize { self.dummy }
25 }
26
27 fn test_eq<T,M>(m: M, v: T)
28 where T : Eq + Debug,
29       M : MyTrait<T>
30 {
31     assert_eq!(m.get(), v);
32 }
33
34 pub fn main() {
35     test_eq(22_usize, 0_usize);
36
37     let value = MyType { dummy: 256 + 22 };
38     test_eq(value, value.dummy);
39 }