如何使用 Serde 反序列化 parking_lot::Mutex?

How to deserialize a parking_lot::Mutex with Serde?

我有一个包含在 Arc<Mutex> 中的内存结构 (obj)。 Mutex 是 parking_lot crate 中 std::sync::Mutex 的改进版本。我需要反序列化包装对象 (obj),但是,我得到一个错误:

the trait `_IMPL_DESERIALIZE_FOR_SecurityLevel::_serde::Deserialize<'_>` is not implemented for `lock_api::mutex::Mutex<parking_lot::raw_mutex::RawMutex, Obj>`

在我的 Cargo.toml 中,我有(特别是):

serde = { version = "1.0.89", features = ["rc"] }
parking_lot = {version = "0.8", features = ["nightly"]}

我该怎么办?是否有解决方法,或者我必须手动实施特征?

对 Serde 的支持已添加到 serde 下的 parking_lot 0.8 feature flag:

parking_lot = { version = "0.8", features = ["nightly", "serde"] }

使用它,您提供的代码可以编译。这也编译:

use parking_lot::Mutex;
use serde::{Deserialize, Serialize};

fn implements<T>()
where
    Mutex<T>: for<'a> Deserialize<'a> + Serialize,
{
}