Я проверяю результаты Clippy в своем коде и обнаружил, что педантичное правило needless_pass_by_value
может быть ложным срабатыванием.
В нем говорится, что:
предупреждение: этот аргумент передается по значению, но не используется в теле функции
справка: рассмотрите возможность использования ссылки:
&Arc<Mutex<MyStruct>>
Поскольку клонирование Arc
- это всего лишь подсчет ссылок, перемещение Arc
не должно быть плохой идеей. Действительно ли имеет значение отправка ссылки вместо значения для Arc
с точки зрения качества и производительности?
#![warn(clippy::pedantic)]
use std::sync::{Arc, Mutex};
fn main() {
let my_struct = MyStruct { value: 3 };
let arc = Arc::new(Mutex::new(my_struct));
arc_taker(arc.clone());
}
fn arc_taker(prm: Arc<Mutex<MyStruct>>) {
prm.lock().unwrap().do_something();
}
struct MyStruct {
value: i32,
}
impl MyStruct {
fn do_something(&self) {
println!("self.value: {}", self.value);
}
}