我正在编写一些基本的生物信息学代码来将 DNA 转录为 RNA:
pub enum DnaNucleotide {
A,
C,
G,
T,
}
pub enum RnaNucleotide {
A,
C,
G,
U,
}
fn transcribe(base: &DnaNucleotide) -> RnaNucleotide {
match base {
DnaNucleotide::A => RnaNucleotide::A,
DnaNucleotide::C => RnaNucleotide::C,
DnaNucleotide::G => RnaNucleotide::G,
DnaNucleotide::T => RnaNucleotide::U,
}
}
有没有办法让编译器也在语句的右侧进行详尽检查match
,基本上确保两个枚举之间的 1-1 映射?
(一个相关问题:上面可能用某种双射映射更好地表示,但我不想失去详尽检查。有更好的方法吗?)