如何将traits泛型类型链接到已实现类型中的某些其他元素

时间:2019-01-31 04:03:51

标签: struct rust traits

我正在尝试创建一个结构,该结构包含一个基于另一个字段类型指定的通用字段。这种类型将成为我定义的几种结构之一。

基本上,我在这里想要做的是创建一个负责设备配置的模块。这意味着要处理许多不同的设备类型。需要为所有设备配置某些规范,并且我创建了一个结构,该结构在OO范式中将是父类(在此表示为DeviceCfg)。然后,特定于设备类型的规范将代表子类。 (这些分别表示为RaspberryPiCfg,Esp8266Cfg等)。

我正在尝试构建事物,以便我可以引用单个对象,该对象合并了通用规范(适用于所有设备)以及特定于设备类型的规范。

/users/{userId}/order_results/{orderId}

感谢所有帮助。我仍然是生锈的学习者。

1 个答案:

答案 0 :(得分:1)

  

需要为所有设备配置某些规范,并且我创建了一个结构,该结构在OO范式中将是父类

Rust不是一种面向对象的语言,因此应用OO范式不是一个好主意。也没有理由使用特征。 Rust特征是用于定义通用行为,而不是通用数据。

我相信您应该使用合成而不是继承。

enum DeviceSpecificCfg {
    RaspberryPi(RaspberryPiCfg),
    Esp8266(Esp8266Cfg),
    // ...
}

struct Devicecfg {
    // common fields ...
    device_specific_cfg: DeviceSpecificCfg
}