generics - 如何定义一个使用 Mutex 的泛型函数?
问题描述
这个简单的函数锁定 af64
并更新值
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);
}
我想将行为封装到一个函数中,但我不知道如何where
为 T 指定子句
fn foo<T, V>(lockable_param: T, value: V)
// where
// T: Mutex??,
{
let mut lock = lockable_param.lock().unwrap();
*lock = value;
}
解决方案
您不需要那么多参数,只需使用Mutex<T>
andT
参数即可。我认为您将需要接收参考而不是值,因为您没有返回任何内容。这应该有效:
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;
}
推荐阅读
- javascript - Chrome 扩展的内容脚本只绑定到本地网页
- arrays - React,如何在 axios 请求的对象中对数组进行包含
- java - 如何修复 CodingBat 中的递归代码错误?
- python - .json 被 json.dump 覆盖
- laravel - PhpStorm 将未定义变量错误传递给查看
- gojs - 如何禁用gojs图中的自动中心?
- elasticsearch - 拒绝对 [] 的映射更新,因为最终映射将具有超过 1 种类型
- python - 车牌检测 JSON 数据集
- excel - 将日期复制到新工作表中的下一个单元格
- javascript - 是什么导致视频显示延迟?