"##,
E0102: r##"
- You hit this error because the compiler lacks information to
- determine a type for this variable. Erroneous code example:
+ You hit this error because the compiler lacks the information to
+ determine the type of this variable. Erroneous code example:
```compile_fail
- fn demo(devil: fn () -> !) {
- let x: &_ = devil();
- // error: cannot determine a type for this local variable
- }
-
- fn oh_no() -> ! { panic!("the devil is in the details") }
-
fn main() {
- demo(oh_no);
+ // could be an array of anything
+ let x = []; // error: cannot determine a type for this local variable
}
```
To solve this situation, constrain the type of the variable.
Examples:
- ```no_run
+ ```
#![allow(unused_variables)]
- fn some_func(x: &u32) {
- // some code
- }
-
- fn demo(devil: fn () -> !) {
- let x: &u32 = devil();
- // Here we defined the type at the variable creation
-
- let x: &_ = devil();
- some_func(x);
- // Here, the type is determined by the function argument type
- }
-
- fn oh_no() -> ! { panic!("the devil is in the details") }
-
fn main() {
- demo(oh_no);
+ let x: [u8; 0] = [];
}
```
"##,
```compile_fail
fn main() {
- let _: Box<std::io::Read+std::io::Write>;
+ let _: Box<std::io::Read + std::io::Write>;
}
```
```
fn main() {
- let _: Box<std::io::Read+Copy+Sync>;
+ let _: Box<std::io::Read + Send + Sync>;
}
```
"##,