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 47 48 49 50 51 52 53 54 55 56 57 58
| fn main() { let numbers = vec![1, 2, 3, 4, 5];
let sum = numbers.iter().fold(0, |acc, &x| acc + x); println!("fold 求和: {}", sum);
let factorial = (1..=10).fold(1u64, |acc, x| acc * x); println!("10! = {}", factorial);
let max = numbers.iter().copied().reduce(|a, b| if a > b { a } else { b }); println!("reduce 最大值: {:?}", max);
let running_sum: Vec<i32> = numbers.iter() .scan(0, |state, &x| { *state += x; Some(*state) }) .collect(); println!("累积和: {:?}", running_sum);
let numbers = vec![1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
let (evens, odds): (Vec<i32>, Vec<i32>) = numbers.iter() .partition(|&&x| x % 2 == 0); println!("偶数: {:?}", evens); println!("奇数: {:?}", odds);
let data = vec![2, 4, 6, 1, 3, 5, 8, 10];
let prefix: Vec<&i32> = data.iter().take_while(|&&x| x % 2 == 0).collect(); println!("take_while 偶数前缀: {:?}", prefix);
let suffix: Vec<&i32> = data.iter().skip_while(|&&x| x % 2 == 0).collect(); println!("skip_while 跳过偶数: {:?}", suffix);
let text = "the quick brown fox jumps over the lazy dog the fox"; let mut word_count = std::collections::HashMap::new();
text.split_whitespace() .for_each(|word| { *word_count.entry(word).or_insert(0) += 1; });
println!("\n单词频率:"); let mut counts: Vec<_> = word_count.iter().collect(); counts.sort_by(|a, b| b.1.cmp(a.1)); for (word, count) in counts { println!(" {}: {}", word, count); } }
|