mirror of
https://github.com/pezkuwichain/serde.git
synced 2026-04-25 10:27:56 +00:00
Add test of packed struct that cannot be destructured
Currently fails:
error[E0509]: cannot move out of type `RemotePackedNonCopyDef`, which implements the `Drop` trait
--> test_suite/tests/test_gen.rs:876:10
|
876 | #[derive(Deserialize)]
| ^^^^^^^^^^^
| |
| cannot move out of here
| data moved here
| move occurs because `__v1` has type `std::string::String`, which does not implement the `Copy` trait
|
= note: this error originates in the derive macro `Deserialize` (in Nightly builds, run with -Z macro-backtrace for more info)
This commit is contained in:
@@ -851,14 +851,36 @@ where
|
|||||||
|
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
pub struct RemotePacked {
|
pub struct RemotePacked {
|
||||||
pub a: u8,
|
pub a: u16,
|
||||||
pub b: u16,
|
pub b: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize)]
|
||||||
#[repr(packed)]
|
#[repr(packed)]
|
||||||
#[serde(remote = "RemotePacked")]
|
#[serde(remote = "RemotePacked")]
|
||||||
pub struct RemotePackedDef {
|
pub struct RemotePackedDef {
|
||||||
a: u8,
|
a: u16,
|
||||||
b: u16,
|
b: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Drop for RemotePackedDef {
|
||||||
|
fn drop(&mut self) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[repr(packed)]
|
||||||
|
pub struct RemotePackedNonCopy {
|
||||||
|
pub a: u16,
|
||||||
|
pub b: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Deserialize)]
|
||||||
|
#[repr(packed)]
|
||||||
|
#[serde(remote = "RemotePackedNonCopy")]
|
||||||
|
pub struct RemotePackedNonCopyDef {
|
||||||
|
a: u16,
|
||||||
|
b: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Drop for RemotePackedNonCopyDef {
|
||||||
|
fn drop(&mut self) {}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user