使用Serde进行序列化时,是否有一种方法可以将结构的字段分组,例如“ flatten”属性的反函数?

时间:2020-06-10 21:10:07

标签: rust serde

Serde有一个flatten attribute,它使数据结构的一级平坦。我想要反过来:一种对属性进行分组的方法。

我有结构

IConnectionFactory activeMQConnection = new ConnectionFactory(Url, "distinctConsumerName");

            using (IConnection connection = activeMQConnection.CreateConnection(UserName, Password))
            {
                connection.Start();
                using (ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
                {
                    using (var dest = session.GetTopic("theSchema"))
                    using (IMessageConsumer consumer = session.CreateDurableConsumer(dest, "distinctConsumerName", null, true))
                    {
                        while ((msg = consumer.Receive()) != null) {}
                    }
                }
            }

,我希望服务器以嵌套方式进行序列化,例如:

struct Foo {
    owner: Owner,
    alpha: Server,
    beta: Server,
}

默认情况下,Serde将产生:

[owner]
name = "Tom Preston-Werner"
dob = 1979-05-27T07:32:00-08:00 # First class dates
[servers]

  [servers.alpha]
  ip = "10.0.0.1"
  dc = "eqdc10"

  [servers.beta]
  ip = "10.0.0.2"
  dc = "eqdc10"

我不想要。有没有一种方法可以在不重构我的结构的情况下获得第一个YAML输出?

1 个答案:

答案 0 :(得分:1)

如果由于某种原因无法重构Foo,也许您可​​以创建一个捕获嵌套结构的新结构,并使用Serde frominto属性来序列化{{ 1}}。

示例

Foo