I was wondering whether I could return a `Vec<&str>` type from my `to_lowercase()` below?

Here is my code:

```rust
fn main() {
    let str_list = vec!["hello", "hi", "ok"];
    println!("before: {:?}", str_list);

    let after = to_lowercase(str_list);
    println!("after: {:?}", after);
}

fn to_lowercase(str: Vec<&str>) -> Vec<&str> {
    str.into_iter()
        .map(|x| x.to_lowercase().as_str())
        .collect()
}

```

But, I got a compiler error:

```
error[E0515]: cannot return value referencing temporary value
  --> src\main.rs:11:18
   |
11 |         .map(|x| x.to_lowercase().as_str())
   |                  ----------------^^^^^^^^^
   |                  |
   |                  returns a value referencing data owned by the current function
   |                  temporary value created here

```

So, is there any solutions to fix this?