Dlaczego odradza się akceptowanie odwołania do String (& String), Vec (& Vec) lub Box (& Box) jako argumentu funkcji?

Napisałem kod Rusta, który przyjmuje &Stringjako argument: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } Napisałem również kod, który zawiera odniesienie do Veclub Box: fn total_price(prices: &Vec<i32>) -> i32 {