]> git.proxmox.com Git - rustc.git/blame - src/test/ui/issues/issue-13323.rs
New upstream version 1.60.0+dfsg1
[rustc.git] / src / test / ui / issues / issue-13323.rs
CommitLineData
b7449926 1// run-pass
1a4d82fc
JJ
2#![feature(box_syntax)]
3
4struct StrWrap {
5 s: String
6}
7
8impl StrWrap {
9 fn new(s: &str) -> StrWrap {
10 StrWrap { s: s.to_string() }
11 }
12
13 fn get_s<'a>(&'a self) -> &'a str {
85aaf69f 14 &self.s
1a4d82fc
JJ
15 }
16}
17
18struct MyStruct {
19 s: StrWrap
20}
21
22impl MyStruct {
23 fn new(s: &str) -> MyStruct {
24 MyStruct { s: StrWrap::new(s) }
25 }
26
27 fn get_str_wrap<'a>(&'a self) -> &'a StrWrap {
28 &self.s
29 }
30}
31
32trait Matcher<T> {
33 fn matches(&self, actual: T) -> bool;
34}
35
36fn assert_that<T, U: Matcher<T>>(actual: T, matcher: &U) {
37 assert!(matcher.matches(actual));
38}
39
40struct EqualTo<T> {
41 expected: T
42}
43
44impl<T: Eq> Matcher<T> for EqualTo<T> {
45 fn matches(&self, actual: T) -> bool {
46 self.expected.eq(&actual)
47 }
48}
49
50fn equal_to<T: Eq>(expected: T) -> Box<EqualTo<T>> {
51 box EqualTo { expected: expected }
52}
53
54pub fn main() {
55 let my_struct = MyStruct::new("zomg");
56 let s = my_struct.get_str_wrap();
57
58 assert_that(s.get_s(), &*equal_to("zomg"));
59}