此简单函数可锁定f64
并更新值
use std::sync::Mutex;
fn bar() {
let a = Mutex::new(1.0);
let mut b = a.lock().unwrap();
*b = 2.0;
foo(a, 3.0);
}
我想将行为封装到一个函数中,但是我不知道如何为T指定where
子句
fn foo<T, V>(lockable_param: T, value: V)
// where
// T: Mutex??,
{
let mut lock = lockable_param.lock().unwrap();
*lock = value;
}
答案 0 :(得分:1)
您不需要太多参数,只需使用Mutex<T>
和T
作为参数。我想您将需要接收一个引用而不是一个值,因为您什么都不返回。这应该起作用:
use std::sync::Mutex;
fn bar() {
let a = Mutex::new(1.0);
let mut b = a.lock().unwrap();
*b = 2.0;
foo(&a, 3.0);
}
fn foo<T>(lockable_param: &Mutex<T>, value: T) {
let mut lock = lockable_param.lock().unwrap();
*lock = value;
}