This commit is contained in:
8 changed files with 477 additions and 19 deletions

View File

@@ -1,8 +1,8 @@
// 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().
// ○ 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;
@@ -11,10 +11,16 @@ trait Summary {
fn summarize(&self) -> String;
}
// Реализация для Vec<T> где T: ToString
impl<T: ToString> Summary for Vec<T> {
fn summarize(&self) -> String {
self.iter()
.map(|v| v.to_string())
.collect::<Vec<String>>()
.join(",")
.to_string()
}
}
// Реализация для HashMap<K, V> где K: ToString, V: ToString
impl<K: ToString, V: ToString> Summary for HashMap<K, V> {
@@ -27,9 +33,9 @@ impl<K: ToString, V: ToString> Summary for HashMap<K, V> {
}
// Обобщённая функция для вывода сводки
fn print_summary(summary: impl Summary) {
println!("{}", summary.summarize())
}
fn main() {
// Пример с вектором