- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlib.rs
46 lines (41 loc) · 1.16 KB
/
lib.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
typeType = i128;
// Recursive and D&C.
fnsum_recursive_dc(v:Vec<Type>) -> Type{
if v.len() == 1{
return v[0];
}
sum_recursive_dc(v[..1].to_vec()) + sum_recursive_dc(v[1..].to_vec())
}
fnsum(v:Vec<Type>) -> Type{
letmut count:Type = 0;
for el in v {
count += el;
}
count
}
#[cfg(test)]
mod tests {
usecrate::{sum, sum_recursive_dc,Type};
#[test]
fntest_sum_recursive_dc() -> Result<(),Box<dyn std::error::Error>>{
let cases:Vec<(Vec<Type>,Type)> = vec![(vec![0, -1,2,3],4)];
for case in cases {
let sum = sum_recursive_dc(case.0.clone());
if sum != case.1{
returnErr(format!("{:?} -> {:?}", case, sum).to_string().into());
}
}
Ok(())
}
#[test]
fntest_sum() -> Result<(),Box<dyn std::error::Error>>{
let cases:Vec<(Vec<Type>,Type)> = vec![(vec![0, -1,2,3],4)];
for case in cases {
let sum = sum(case.0.clone());
if sum != case.1{
returnErr(format!("{:?} -> {:?}", case, sum).to_string().into());
}
}
Ok(())
}
}