【发布时间】:2022-11-03 16:57:48
【问题描述】:
我正在做 rustlings 来学习 rust,我刚刚完成了 iterators3,但我不明白为什么函数:
// Output: Ok([1, 11, 1426, 3])
fn result_with_list() -> Result<Vec<i32>, DivisionError> {
let numbers = vec![27, 297, 38502, 81];
let division_results = numbers.into_iter().map(|n| divide(n, 27));
let x: Result<Vec<i32>, DivisionError> = division_results.collect();
println!("{x:?}");
x
}
和
// Output: [Ok(1), Ok(11), Ok(1426), Ok(3)]
fn list_of_results() -> Vec<Result<i32, DivisionError>> {
let numbers = vec![27, 297, 38502, 81];
let division_results = numbers.into_iter().map(|n| divide(n, 27));
let x:Vec<Result<i32, DivisionError>> = division_results.collect();
println!("{x:?}");
x
}
我不明白为什么它们返回其他值,尽管它们非常相似
(PS 这就是功能划分的样子:pub fn divide(a: i32, b: i32) -> Result<i32, DivisionError>)
【问题讨论】:
-
他们不返回“其他值”。他们按照要求将它们作为不同的数据结构返回。
-
顺便说一句,“几乎相同”的意思是“不同”,那么您为什么会感到惊讶呢?
标签: rust