И снова привет хабру! Сегодня подправил 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