И снова привет хабру! Сегодня подправил 4 главу, исправил опять таки то, что режет слух. 4 глава уже лежит на гитхабе путь тот же. И вот как пример правленого перевода подраздел 4.2 Трейты:
4.2 Трейты
Трейты — это эквивалент интерфейсов из других языков (с некоторыми отличиями).
Так как определение термина через его синоним не очень полезно, посмотрим, что это означает в коде:
pub trait Dog { fn bark(&self) -> String; } pub struct Labrador{} impl Dog for Labrador { fn bark(&self) -> String { "wouf".to_string() } } pub struct Husky{} impl Dog for Husky { fn bark(&self) -> String { "Wuuuuuu".to_string() } } fn main() { let labrador = Labrador{}; println!("{}", labrador.bark()); let husky = Husky{}; println!("{}", husky.bark()); } // Output: // wouf // Wuuuuuu
Определив интерфейс Dog, все типы, реализующие этот трейт в нашей программе, будут считаться «собакой».
Именно поэтому говорят, что трейты (и интерфейсы) позволяют программистам определять разделяемое поведение: поведение, которое разделяется несколькими типами.
Остальные наработки и все остальное также можно найти у меня на гитхабе по ссылке https://github.com/smokeplay250-png/black-hat-ru
