There are actually different ways in Rust to create iterators from types. While the IntoIterator and its into_iter() method are mostly called implicitly when we use forloops, iter() and iter_mut() methods are often provided by collection types to create iterators explicitly. There’s no trait that provides iter() and iter_mut(), so it’s more of a convention that collection types may implement these methods.
The example from above can then be written as follows:
let employees = vec!["John", "Elvis", "David", "Calvin"];
let mut iterator_emp = (employees).iter();
println!("{}", iterator_emp.next().unwrap());
println!("{}", iterator_emp.next().unwrap());
println!("{}", iterator_emp.next().unwrap());
println!("{}", iterator_emp.next().unwrap());