gpt4 book ai didi

generics - 如何定义采用 Mutex 的通用函数?

转载 作者:行者123 更新时间:2023-11-29 08:18:13 24 4
gpt4 key购买 nike

这个简单的函数锁定一个 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;
}

最佳答案

你不需要那么多参数,只需要使用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;
}

关于generics - 如何定义采用 Mutex<T> 的通用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905472/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com