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,
}
}
}
我希望有一個答案,但我很好,返回枚舉 –