【发布时间】:2022-07-15 15:10:31
【问题描述】:
我实际上只是从 Rust 开始,所以我确信这是一个幼稚的问题,但它让我很困惑。
在下面的(简化)示例中,测试通过就好了,但Tarpaulin 标记了.values 行(在let data = self 和.iter() 之间),并且只有这一行未被发现。我不明白为什么会这样,任何解释都会被感激地接受。由于太新,我倾向于假设我没有正确测试。
谢谢
use std::ops::Add;
struct Series<T> {
// Other Stuff
values: Vec<T>,
}
impl<T> Series<T> {
pub fn new(values: Vec<T>) -> Series<T> {
Series { values }
}
}
impl<T> Add<&Series<T>> for &Series<T>
where
T: Add + Add<Output = T> + Copy,
{
type Output = Series<T>;
fn add(self, rhs: &Series<T>) -> Series<T> {
let data = self
.values
.iter()
.zip(rhs.values.iter())
.map(|(&a, &b)| a + b)
.collect();
Series::new(data)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn add() {
let s1 = Series::new(vec![1, 2, 3]);
let s2 = Series::new(vec![4, 5, 6]);
let s3 = &s1 + &s2;
assert_eq!(s3.values, vec![5, 7, 9]);
}
}
【问题讨论】:
-
"目前,防水油布提供了工作线覆盖范围,虽然相当可靠,但结果可能仍包含轻微的不准确之处。"
-
谢谢。我想我会把它作为一个问题记录在他们的 GitHub 项目上。我只是想确保我没有先做一些愚蠢的事情!
标签: rust code-coverage