serde-rs / serde

Serialization framework for Rust
https://serde.rs/
Apache License 2.0
8.81k stars 747 forks source link

rename field attribute, passing a path instead of literal #2725

Open softstream-link opened 3 months ago

softstream-link commented 3 months ago

I would like to be able to but not sure if rename is able to accept anything but literal

trait FiedlMetaData{
   const TAG_NAME: 'static &str;
   .....
}
#[derive(Serialize, Deserialize)]
struct Amount{
 ...
}
impl FieldMetaData for Amount{
 const TAG_NAME: 'static &str = "3";
}
struct Sequence{
 ...
}
impl FieldMetaData for Sequence{
 const TAG_NAME: 'static &str = "6";
}
#[derive(Serialize, Deserialize)]
struct Msg{
   #[serde(rename = Amount::TAG_NAME)]
   field_a: Amount,
   #[serde(rename = Sequence::TAG_NAME)]
   field_b: Sequence, 
}