Into<String> works too. Call .into() instead of .as_ref().
However, &[T] is borrowing items, so it can't give you an owned string. Take Vec<T> or IntoIterator to be able to take the strings without copying them.
What would that look like? I tried the following (and different variants) but it has error[E0282]: type annotations needed but I can't see how to annotate the into().
This is because Into is destructive (the original object is gone, and reused if possible).
But any type with & in it, recursively, promises that it won't take or destroy anything [1]. That applies to slices. Dereferencing can't break that promise. It can copy primitive types, but not heap-allocated strings.
So if you want to turn objects into strings by destroying the originals, then you need a Vec or another type that will let you take ownership.
If you're not taking ownership of the collection, then AsRef is more appropriate.