|  | error[E0308]: `if` and `else` have incompatible types | 
|  | --> $DIR/str-array-assignment.rs:3:37 | 
|  | | | 
|  | LL |   let t = if true { s[..2] } else { s }; | 
|  | |                     ------          ^ expected `str`, found `&str` | 
|  | |                     | | 
|  | |                     expected because of this | 
|  |  | 
|  | error[E0308]: mismatched types | 
|  | --> $DIR/str-array-assignment.rs:5:27 | 
|  | | | 
|  | LL |   let u: &str = if true { s[..2] } else { s }; | 
|  | |                           ^^^^^^ expected `&str`, found `str` | 
|  | | | 
|  | help: consider borrowing here | 
|  | | | 
|  | LL |   let u: &str = if true { &s[..2] } else { s }; | 
|  | |                           + | 
|  |  | 
|  | error[E0277]: the size for values of type `str` cannot be known at compilation time | 
|  | --> $DIR/str-array-assignment.rs:7:7 | 
|  | | | 
|  | LL |   let v = s[..2]; | 
|  | |       ^ doesn't have a size known at compile-time | 
|  | | | 
|  | = help: the trait `Sized` is not implemented for `str` | 
|  | = note: all local variables must have a statically known size | 
|  | help: consider borrowing here | 
|  | | | 
|  | LL |   let v = &s[..2]; | 
|  | |           + | 
|  |  | 
|  | error[E0308]: mismatched types | 
|  | --> $DIR/str-array-assignment.rs:9:17 | 
|  | | | 
|  | LL |   let w: &str = s[..2]; | 
|  | |          ----   ^^^^^^ expected `&str`, found `str` | 
|  | |          | | 
|  | |          expected due to this | 
|  | | | 
|  | help: consider borrowing here | 
|  | | | 
|  | LL |   let w: &str = &s[..2]; | 
|  | |                 + | 
|  |  | 
|  | error: aborting due to 4 previous errors | 
|  |  | 
|  | Some errors have detailed explanations: E0277, E0308. | 
|  | For more information about an error, try `rustc --explain E0277`. |