quizzes
This commit is contained in:
53
practice/src/bin/e_summary.rs
Normal file
53
practice/src/bin/e_summary.rs
Normal file
@@ -0,0 +1,53 @@
|
||||
// 1. Создайте типаж Summary с методом summarize(&self) -> String.
|
||||
// 2. Реализуйте его длā:
|
||||
// ○ Vec<T> (где T: ToString), метод должен соединāтþ ÿлементý ùерез запāтуĀ.
|
||||
// ○ HashMap<K, V> (где K: ToString, V: ToString), метод должен вýводитþ парý key:value.
|
||||
// 3. Напиúите функøиĀ print_summary<T: Summary>(item: T), котораā пеùатает резулþтат summarize().
|
||||
|
||||
use std::collections::HashMap;
|
||||
|
||||
// Определяем типаж Summary
|
||||
trait Summary {
|
||||
fn summarize(&self) -> String;
|
||||
}
|
||||
|
||||
|
||||
// Реализация для Vec<T> где T: ToString
|
||||
|
||||
|
||||
|
||||
// Реализация для HashMap<K, V> где K: ToString, V: ToString
|
||||
impl<K: ToString, V: ToString> Summary for HashMap<K, V> {
|
||||
fn summarize(&self) -> String {
|
||||
self.iter()
|
||||
.map(|(k, v)| format!("{}:{}", k.to_string(), v.to_string()))
|
||||
.collect::<Vec<String>>()
|
||||
.join(", ")
|
||||
}
|
||||
}
|
||||
|
||||
// Обобщённая функция для вывода сводки
|
||||
|
||||
|
||||
|
||||
|
||||
fn main() {
|
||||
// Пример с вектором
|
||||
let vec = vec![1, 2, 3];
|
||||
print_summary(vec); // "1, 2, 3"
|
||||
|
||||
// Пример с HashMap
|
||||
let mut map = HashMap::new();
|
||||
map.insert("name", "Alice");
|
||||
map.insert("age", "30");
|
||||
print_summary(map); // "name:Alice, age:30" (порядок может отличаться)
|
||||
|
||||
// Дополнительный пример с разными типами
|
||||
let words = vec!["hello", "world"];
|
||||
print_summary(words); // "hello, world"
|
||||
|
||||
let mut scores = HashMap::new();
|
||||
scores.insert("math", 95);
|
||||
scores.insert("science", 90);
|
||||
print_summary(scores); // "math:95, science:90"
|
||||
}
|
||||
Reference in New Issue
Block a user