quizzes
This commit is contained in:
@@ -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() {
|
||||
// Пример с вектором
|
||||
|
||||
Reference in New Issue
Block a user