Курс във Факултета по Математика и Информатика към
СУ
Адаптери за итератори (част 2)
Краен срок
19.11.2024 18:00
Точки
2
Срокът за предаване на решения е отминал
usesolution::*;
#[test]
fntest_dyn_map_iter(){
letxs=&["x","xx","xxx"];
letmap_iter=DynMapIter::new(
Box::new(xs.iter()),
Box::new(|s|s.len()),
);
assert_eq!(
map_iter.collect::<Vec<_>>(),
vec![1,2,3],
);
}
Напишете собствена имплементация на трансформиращ адаптер за итератори.
Вторият вариант ще бъде полиморфичен. Напишете структура DynMapIter, която има два generic параметъра - T и U. Структурата се създава от:
итератор, който връща елементи от тип T
и функция T -> U, която приема аргумент от тип T и връща резултат от тип U.
В този случай не знаем нищо за конкретния тип на първоначалния итератор или на транформиращата функция - и двете се подават като boxed trait objects на функцията new. Отново трябва да попълните липсващия синтаксис. Нямате право да добавяте други типови generic параметри към DynMapIter.
Имплементирайте метода new и трейта Iterator за структурата.
Тази задача е главно упражнение върху синтаксиса, затова получавате финалния тест наготово.
Постарайте се кода ви да се компилира с него, за да изкарате точки (и не пропускайте pub-овете)
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1btqrfu/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.67s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-k3hw5p/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.74s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-p5y6t9/solution)
Finished test [unoptimized + debuginfo] target(s) in 1.23s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-u0rxw9/solution)
Finished test [unoptimized + debuginfo] target(s) in 1.10s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1rygkzh/solution)
Finished test [unoptimized + debuginfo] target(s) in 1.12s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-s8t7yy/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.76s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1hkxtfc/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.76s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-mgxjrn/solution)
Finished test [unoptimized + debuginfo] target(s) in 1.16s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1jr6q15/solution)
Finished test [unoptimized + debuginfo] target(s) in 1.05s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1hvj8g2/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.73s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-qr7wfb/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.85s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-zrvyva/solution)
warning: function `main` is never used
--> src/lib.rs:1:4
|
1 | fn main() {
| ^^^^
|
= note: `#[warn(dead_code)]` on by default
warning: `solution` (lib) generated 1 warning
Finished test [unoptimized + debuginfo] target(s) in 0.74s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-cyzbcg/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.81s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1r2ney5/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.74s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-9x9ow/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.74s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-ulipyr/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.73s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-yd4ol3/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.73s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1fek06v/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.73s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1i27lar/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.77s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-o40j72/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.70s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-aaxqan/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.69s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1r2o0k5/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.76s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-riqaf3/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.69s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-11a5k7d/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.74s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-141za91/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.71s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Compiling solution v0.1.0 (/tmp/d20241119-1739405-1w4p5kt/solution)
Finished test [unoptimized + debuginfo] target(s) in 0.71s
Running tests/solution_test.rs (target/debug/deps/solution_test-1428e1090729d165)
running 1 test
test solution_test::test_dyn_map_iter ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s