The type placeholder _ was used within a type on an item's signature.

Erroneous code example:

fn foo() -> _ { 5 } // error

static BAR: _ = "test"; // error

In those cases, you need to provide the type explicitly:

fn foo() -> i32 { 5 } // ok!

static BAR: &str = "test"; // ok!

The type placeholder _ can be used outside item's signature as follows:

let x = "a4a".split('4')
    .collect::<Vec<_>>(); // No need to precise the Vec's generic type.