Info
This post is auto-generated from RSS feed The Rust Programming Language Forum - Latest topics. Source: How to require a nested struct to implemet Deserialize trait?
I have a struct that contains a nested generic struct and looks like this:
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct Command<P> where P: Serialize {
command: String,
params: P,
}
impl<P: Serialize> Command<P> {
pub fn new(command: &str, params: P) -> Self {
Self {
command: command.to_owned(),
params
}
}
}
The nested struct needs to implement the Serialize
and Deserialize
traits too. As you can see, I can require that P
implements the Serialize
trait without problem, but I'm struggeling to add a similar requirement for the Deserialize
trait
As soon as I add:
pub struct Command<P> where P: Serialize + Deserialize {
I get this error:
expected named lifetime parameter
help: consider making the bound lifetime-generic with a new `'a` lifetime
But this won't work either:
pub struct Command<'a, P> where P: Serialize + Deserialize<'a> {
...because of:
error[E0283]: type annotations needed: cannot satisfy `P: Deserialize<'_>`
Also, why does my "outer" struct suddenly need a life-time parameter when it didn't before?
Actually I don't want the "outer" struct to have that additional life-time parameter, if possible...
Any ideas?
Thank you and best regatrds.
7 posts - 3 participants
🏷️ rust_feed