1 error[E0106]: missing lifetime specifier
2 --> $DIR/issue-26638.rs:1:62
4 LL | fn parse_type(iter: Box<dyn Iterator<Item=&str>+'static>) -> &str { iter.next() }
5 | ------------------------------------ ^ expected named lifetime parameter
7 = help: this function's return type contains a borrowed value, but the signature does not say which one of `iter`'s 2 lifetimes it is borrowed from
8 help: consider introducing a named lifetime parameter
10 LL | fn parse_type<'a>(iter: Box<dyn Iterator<Item=&'a str>+'static>) -> &'a str { iter.next() }
13 error[E0106]: missing lifetime specifier
14 --> $DIR/issue-26638.rs:5:40
16 LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter() }
17 | ^ expected named lifetime parameter
19 = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
20 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
22 LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &'static str { iter() }
24 help: instead, you are more likely to want to change the argument to be borrowed...
26 LL | fn parse_type_2(iter: &fn(&u8)->&u8) -> &str { iter() }
28 help: ...or alternatively, you might want to return an owned value
30 LL | fn parse_type_2(iter: fn(&u8)->&u8) -> String { iter() }
33 error[E0106]: missing lifetime specifier
34 --> $DIR/issue-26638.rs:10:22
36 LL | fn parse_type_3() -> &str { unimplemented!() }
37 | ^ expected named lifetime parameter
39 = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
40 help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
42 LL | fn parse_type_3() -> &'static str { unimplemented!() }
44 help: instead, you are more likely to want to return an owned value
46 LL | fn parse_type_3() -> String { unimplemented!() }
49 error[E0308]: mismatched types
50 --> $DIR/issue-26638.rs:1:69
52 LL | fn parse_type(iter: Box<dyn Iterator<Item=&str>+'static>) -> &str { iter.next() }
53 | ---- ^^^^^^^^^^^ expected `&str`, found `Option<&str>`
55 | expected `&str` because of return type
57 = note: expected reference `&str`
58 found enum `Option<&str>`
59 help: consider using `Option::expect` to unwrap the `Option<&str>` value, panicking if the value is an `Option::None`
61 LL | fn parse_type(iter: Box<dyn Iterator<Item=&str>+'static>) -> &str { iter.next().expect("REASON") }
64 error[E0061]: this function takes 1 argument but 0 arguments were supplied
65 --> $DIR/issue-26638.rs:5:47
67 LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter() }
68 | ^^^^-- an argument of type `&u8` is missing
70 help: provide the argument
72 LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter(/* &u8 */) }
75 error[E0308]: mismatched types
76 --> $DIR/issue-26638.rs:5:47
78 LL | fn parse_type_2(iter: fn(&u8)->&u8) -> &str { iter() }
79 | ---- ^^^^^^ expected `&str`, found `&u8`
81 | expected `&'static str` because of return type
83 = note: expected reference `&'static str`
86 error: aborting due to 6 previous errors
88 Some errors have detailed explanations: E0061, E0106, E0308.
89 For more information about an error, try `rustc --explain E0061`.