Warum wird davon abgeraten, einen Verweis auf einen String (& String), Vec (& Vec) oder Box (& Box) als Funktionsargument zu akzeptieren?

Ich habe einen Rust-Code geschrieben, der &Stringein Argument verwendet: fn awesome_greeting(name: &String) { println!("Wow, you are awesome, {}!", name); } Ich habe auch Code geschrieben, der einen Verweis auf ein Vecoder enthält Box: fn total_price(prices: &Vec<i32>) -> i32 {...