From 7328b3481083167d3394111327ffd5fad405f7b2 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Sun, 27 Nov 2022 17:10:16 -0800 Subject: [PATCH] Add test of generic remote derive with getter Currently fails to compile. error[E0107]: missing generics for struct `StructGeneric` --> test_suite/tests/test_remote.rs:181:18 | 181 | #[serde(remote = "remote::StructGeneric")] | ^^^^^^^^^^^^^^^^^^^^^^^ expected 1 generic argument | note: struct defined here, with 1 generic parameter: `T` --> test_suite/tests/test_remote.rs:78:16 | 78 | pub struct StructGeneric { | ^^^^^^^^^^^^^ - help: add missing generic argument | 181 | #[serde(remote = StructGeneric)] | ~~~~~~~~~~~~~~~~ --- test_suite/tests/test_remote.rs | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/test_suite/tests/test_remote.rs b/test_suite/tests/test_remote.rs index c6d276e1..a334f7ac 100644 --- a/test_suite/tests/test_remote.rs +++ b/test_suite/tests/test_remote.rs @@ -79,6 +79,12 @@ mod remote { pub value: T, } + impl StructGeneric { + pub fn get_value(&self) -> &T { + &self.value + } + } + pub enum EnumGeneric { Variant(T), } @@ -171,6 +177,13 @@ struct StructPubDef { b: remote::Unit, } +#[derive(Serialize, Deserialize)] +#[serde(remote = "remote::StructGeneric")] +struct StructGenericWithGetterDef { + #[serde(getter = "remote::StructGeneric::get_value")] + value: T, +} + #[derive(Serialize, Deserialize)] #[serde(remote = "remote::StructGeneric")] struct StructConcrete { @@ -206,3 +219,9 @@ impl From for remote::StructPriv { remote::StructPriv::new(def.a, def.b) } } + +impl From> for remote::StructGeneric { + fn from(def: StructGenericWithGetterDef) -> Self { + remote::StructGeneric { value: def.value } + } +}