Open zeenix opened 1 year ago
@wynprice999 Thanks for reporting this. Yeah, renaming should work as you expect.
@turbocooler Hey, this seems right up your alley. ;)
Hello, is there a workaround for this? I need to rename fields for a dictionary struct used as property, since they need to have a ':' character in the identifier, which is not very rust friendly. I suppose I could implement the conversion method needed, although I am a little bit lost in this regard. Thank you in advance!
@Detoxify92 you can always use HashMap. *Dict macros are just for convenience.
Contributions are also welcome.
In GitLab by @wynprice999 on Mar 1, 2023, 22:01
It seems like the field names used for deserialization can't be renamed. I would expect using
#[zvariant(rename = "...")]
would rename the field, but it doesn't appear to have an effect:Example expansion
```rust #[derive(DeserializeDict, Value, OwnedValue)] #[zvariant(signature = "dict")] pub struct TrackMetadata { #[zvariant(rename = "otherfield")] pub field1: String, pub field2: String } ``` Expands to the following: ```rs #[zvariant(signature = "dict")] pub struct TrackMetadata { #[zvariant(rename = "otherfield")] pub field1: String, pub field2: String, } ... impl ::std::convert::TryFrom<::zbus::zvariant::OwnedValue> for TrackMetadata { type Error = ::zbus::zvariant::Error; #[inline] fn try_from( value: ::zbus::zvariant::OwnedValue, ) -> ::zbus::zvariant::ResultFrom what I can tell, a solution would involve the following line: https://gitlab.freedesktop.org/dbus/zbus/-/blob/main/zvariant_derive/src/value.rs#L111