Given a fixed-length char array such as:
let s: [char; 5] = [\'h\', \'e\', \'l\', \'l\', \'o\'];
How do I obtain a &str<
You can't without some allocation, which means you will end up with a String.
let s2: String = s.iter().collect();
The problem is that strings in Rust are not collections of chars, they are UTF-8, which is an encoding without a fixed size per character.
For example, the array in this case would take 5 x 32-bits for a total of 20 bytes. The data of the string would take 5 bytes total (although there's also 3 pointer-sized values, so the overall String takes more memory in this case).
We start with the array and call []::iter, which yields values of type &char. We then use Iterator::collect to convert the Iteratorsize_hint to pre-allocate space in the String, reducing the need for extra allocations.