カバレッジ計測ツール (ここでは llvm-cov を使用) でジェネリクスを使用したコードを測定すると、単層化の影響で網羅率が上がらない事がある。
以下では、単層化により Target<i32> と Target<()> が生成されている。そして、それらはそれぞれ match の分岐の片側しか通らない。これにより網羅率が 100% にならない。
pub enum Target<R> {
A(R),
B(),
}
impl<R> Target<R> {
pub fn method(self) {
match self {
Self::A(_) => {},
Self::B() => {},
}
}
}
#[test]
fn test() {
Target::A(1).method();
Target::<()>::B().method();
}
以下のように引数を与えると、単層化された各実体のパターンが必要な箇所について考慮されるようになる (このオプションがデフォルトで有効でないのは、結果の情報量が増えて見にくくなるためだろう)。
> cargo llvm-cov --show-instantiations --open