mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-14 16:03:17 +00:00
Add std::vec::foldr
This commit is contained in:
parent
8ad857f453
commit
d96c419b14
@ -435,7 +435,7 @@ Function: foldl
|
||||
|
||||
Reduce a vector from left to right
|
||||
*/
|
||||
fn foldl<T, U>(p: block(U, T) -> U, z: U, v: [mutable? T]) -> U {
|
||||
fn foldl<T, U>(p: block(T, U) -> T, z: T, v: [mutable? U]) -> T {
|
||||
let accum = z;
|
||||
iter(v) { |elt|
|
||||
accum = p(accum, elt);
|
||||
@ -443,6 +443,19 @@ fn foldl<T, U>(p: block(U, T) -> U, z: U, v: [mutable? T]) -> U {
|
||||
ret accum;
|
||||
}
|
||||
|
||||
/*
|
||||
Function: foldr
|
||||
|
||||
Reduce a vector from right to left
|
||||
*/
|
||||
fn foldr<T, U>(p: block(T, U) -> U, z: U, v: [mutable? T]) -> U {
|
||||
let accum = z;
|
||||
riter(v) { |elt|
|
||||
accum = p(elt, accum);
|
||||
}
|
||||
ret accum;
|
||||
}
|
||||
|
||||
/*
|
||||
Function: any
|
||||
|
||||
|
@ -302,6 +302,16 @@ fn test_foldl2() {
|
||||
assert sum == -10;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_foldr() {
|
||||
fn sub(&&a: int, &&b: int) -> int {
|
||||
a - b
|
||||
}
|
||||
let v = [1, 2, 3, 4];
|
||||
let sum = vec::foldr(sub, 0, v);
|
||||
assert sum == -2;
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn iter_empty() {
|
||||
let i = 0;
|
||||
|
Loading…
Reference in New Issue
Block a user