如果你的所有设备都是只有一个用int表示的状态,那就
enum Hardware {
GPU(u16),
FAN(u8),
}
impl std::str::FromStr for Hardware {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
todo!()
}
}
如果你不同设备状态差别很大,那就嵌套一层,这样能满足你的需求吗?
enum ComplexHardware {
GPU(GpuConfig),
FAN(FanConfig),
}
enum GpuConfig {
ARM(u8, u8),
ATI(u8, u16),
NV(u8, u16, u32),
}
enum FanConfig {
COOLMAX(u8),
TT(u8, u16),
NZXT(u8, u16, u32),
SST(u8, u16, u32),
NACTUA(u8, u16, u32),
}
impl std::str::FromStr for ComplexHardware {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
todo!()
}
}
impl std::str::FromStr for GpuConfig {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
todo!()
}
}
impl std::str::FromStr for FanConfig {
type Err = ();
fn from_str(s: &str) -> Result<Self, Self::Err> {
todo!()
}
}
【 在 bihai 的大作中提到: 】
: 最近在搞一个项目,需要和不同的模块接口,这些模块是管理不同的硬件的,比如设备的性能等。那么就需要调节的频率电压什么的。我就想写一个程序,读入一个配置文件,是json格式,里面写上控制的数据即可。这样,可以控制不同的设备。我们另一个人开发的接口,是有一个程序,
: 梢耘渲妹恳桓瞿?椋霉潭ǖ暮问莍nt。
: 结果和Lead会面,他上来就说,用enum(调用那个人的接口的时候转换成int)。我觉得有没有搞错。又发给我一个别人写的文档,说enum的好处。我看出来,那是给不变的设备用的,比如某个设备就开关两个状态,就写OFF, ON。但是,我这些设备有些是多个状态。有些设备,是互相可替
: ...................
--
修改:zeus2615 FROM 103.202.145.*
FROM 103.202.145.*