Как десериализовать паркинг_лот :: Mutex с Serde? - PullRequest
1 голос
/ 15 мая 2019

У меня есть структура памяти (obj), завернутая в Arc<Mutex>.Mutex - улучшенная версия std::sync::Mutex в ящике parking_lot.Мне нужно десериализовать обернутый объект (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"]}

Как я должен идти об этом?Есть ли обходной путь, или я должен реализовать черты вручную?

1 Ответ

3 голосов
/ 15 мая 2019

Поддержка Serde была добавлена ​​в parking_lot 0.8 под флагом serde :

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,
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...