尽管实现了序列化特征,但没有实现?
The trait Serialize is not implemented despite being implemented?
我正在使用 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"
是否存在我似乎没有注意到的隐藏问题,或者依赖项是否存在其他问题?
问题是您正在尝试序列化 Json<Gyro>
类型的值,而不是 Gyro
。假设这是 actix-web
Json
类型,它不会实现 Serialize
。您需要使用 &packet.into_inner()
(消耗值)或使用 &*packet
或 &packet.0
.
引用内部值来解包它
我正在使用 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"
是否存在我似乎没有注意到的隐藏问题,或者依赖项是否存在其他问题?
问题是您正在尝试序列化 Json<Gyro>
类型的值,而不是 Gyro
。假设这是 actix-web
Json
类型,它不会实现 Serialize
。您需要使用 &packet.into_inner()
(消耗值)或使用 &*packet
或 &packet.0
.