mirror of
https://github.com/gnu4cn/rust-lang-zh_CN.git
synced 2026-08-22 22:23:28 +08:00
reorganized the directories
This commit is contained in:
8
projects/iterator_demo/Cargo.toml
Normal file
8
projects/iterator_demo/Cargo.toml
Normal file
@@ -0,0 +1,8 @@
|
||||
[package]
|
||||
name = "iterator_demo"
|
||||
version = "0.1.0"
|
||||
edition = "2021"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
35
projects/iterator_demo/src/lib.rs
Normal file
35
projects/iterator_demo/src/lib.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
#[derive(PartialEq, Debug)]
|
||||
struct Shoe {
|
||||
size: u32,
|
||||
style: String,
|
||||
}
|
||||
|
||||
fn shoes_in_size(shoes: Vec<Shoe>, shoe_size: u32) -> Vec<Shoe> {
|
||||
shoes.into_iter().filter(|s| s.size == shoe_size).collect()
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
#[test]
|
||||
fn iterator_demonstration() {
|
||||
let v1 = vec! [1, 2, 3];
|
||||
|
||||
let mut v1_iter = v1.iter();
|
||||
|
||||
assert_eq! (v1_iter.next(), Some(&1));
|
||||
assert_eq! (v1_iter.next(), Some(&2));
|
||||
assert_eq! (v1_iter.next(), Some(&3));
|
||||
assert_eq! (v1_iter.next(), None);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn iterator_sum() {
|
||||
let v1 = vec! [1, 2, 3];
|
||||
|
||||
let v1_iter = v1.iter();
|
||||
|
||||
let total: i32 = v1_iter.sum();
|
||||
|
||||
assert_eq! (total, 6);
|
||||
}
|
||||
7
projects/iterator_demo/src/main.rs
Normal file
7
projects/iterator_demo/src/main.rs
Normal file
@@ -0,0 +1,7 @@
|
||||
fn main() {
|
||||
let v1 = vec! [1, 2, 3];
|
||||
|
||||
let v2: Vec<_> = v1.iter().map(|x| x + 1).collect();
|
||||
|
||||
assert_eq! (v2, vec! [2, 3, 4]);
|
||||
}
|
||||
35
projects/iterator_demo/src/tests.rs
Normal file
35
projects/iterator_demo/src/tests.rs
Normal file
@@ -0,0 +1,35 @@
|
||||
use super::*;
|
||||
|
||||
#[test]
|
||||
fn filter_by_size() {
|
||||
let shoes = vec! [
|
||||
Shoe {
|
||||
size: 10,
|
||||
style: String::from("sneaker"),
|
||||
},
|
||||
Shoe {
|
||||
size: 13,
|
||||
style: String::from("sandal"),
|
||||
},
|
||||
Shoe {
|
||||
size: 10,
|
||||
style: String::from("boot"),
|
||||
},
|
||||
];
|
||||
|
||||
let in_my_size = shoes_in_size(shoes, 10);
|
||||
|
||||
assert_eq! (
|
||||
in_my_size,
|
||||
vec! [
|
||||
Shoe {
|
||||
size: 10,
|
||||
style: String::from("sneaker"),
|
||||
},
|
||||
Shoe {
|
||||
size: 10,
|
||||
style: String::from("boot"),
|
||||
},
|
||||
]
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user