¿Por qué no se recomienda aceptar una referencia a String (& String), Vec (& Vec) o Box (& Box) como argumento de función?

Escribí un código de Rust que toma &Stringcomo argumento: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } También he escrito código que toma una referencia a Veco Box: fn total_price(prices: &Vec<i32>) -> i32 { prices.iter().sum() } fn...