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