1
我有一个保存寄存器的结构。我希望我的read_register
函数为Register::V0
和Register::V1
返回u8
,但u16
为Register::V2
和Register::V3
。我不知道如何使通用的输入类型的函数。我收到错误match arms have incompatible types
,这是合理的,因为类型是不同的。基于enum输入返回不同类型的泛型函数
struct Registers {
v0: u8,
v1: u8,
v2: u16,
v3: u16,
}
enum Register {
V0,
V1,
V2,
V3,
}
impl Registers {
fn read_register<T>(&self, register: Register) -> T {
match register {
Register::V0 => self.v0,
Register::V1 => self.v1,
Register::V2 => self.v2,
Register::V3 => self.v3,
}
}
}
我希望有一个答案,但我很好,返回枚举 –