Почему не рекомендуется принимать ссылку на String (& String), Vec (& Vec) или Box (& Box) в качестве аргумента функции?

Я написал некоторый код Rust, который занимает&String в качестве аргумента:

fn awesome_greeting(name: &String) {
    println!("Wow, you are awesome, {}!", name);
}

Я также написал код, который принимает ссылку наVec или жеBox:

fn total_price(prices: &Vec<i32>) -> i32 {
    prices.iter().sum()
}

fn is_even(value: &Box<i32>) -> bool {
    **value % 2 == 0
}

Тем не менее, я получил некоторые отзывы, что делать это не очень хорошая идея. Почему бы и нет?

Ответы на вопрос(2)

Ваш ответ на вопрос