Я использую actix-web для создания приложения для восстановления пакетов, а затем вставляю их в базу данных MongoDB. У меня есть структура
#[derive(Serialize, Deserialize, Debug)]
pub struct Gyro{
/// GYRO FRONT + MIDDLE
pub x0x800: [i32; 12],
//A1X, A1Y, A1Z, A2X, A2Y, A2Z, G1X, G1Y, G1Z, G2X, G2Y, G2Z
/// GYRO BACK
pub x0x402: [i32; 4],
//Motion_GPS_CAN, Vehicle_GPS_CAN, X_Angle_GPS, Y_Angle_GPS
///GYRO BACK
pub x0x403: [i32; 4],
//Z_Angle_GPS, X_Acceleration, Y_Acceleration, Z_Acceleration
}
И у меня не было проблем при десериализации пакетов в структуру, но когда я пытаюсь сериализовать их в BSON для вставки в mongoDB, я получаю эту ошибку
if let Ok(bson::Bson::Document(doc)) = bson::to_bson(&packet) {
^^^^^^^ the trait `Serialize` is not implemented for `Json<Gyro>
Несмотря на то, что я правильно реализовал Serialize в структуре, а также
use serde::{Serialize, Deserialize};
в обрешетке просто не работает. Я даже проверил свои зависимости с помощью crate tree -d
, и все они использовали одну и ту же версию serde. Вот мой cargo.toml
[dependencies]
actix-web = "3.1.0"
env_logger = "0.7"
serde = { version = "1.0.117", features = ["derive"] }
mongodb = "1.1.1"
bson = "1.1.0"
Есть ли скрытая проблема, которую я не могу заметить, или есть еще одна проблема в зависимостях?