Size: a a a

2018 February 05

P+

PAM3ES ++ in Rust Beginners
а в трейтах выглядит только вот так.
источник

P+

PAM3ES ++ in Rust Beginners
pub trait Summarizable {
   fn summary(&self) -> String;
}
источник

🦉⁣

🦉 ⁣ in Rust Beginners
PAM3ES ++
а в трейтах выглядит только вот так.
В трейтах ты определяешь интерфейс
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Описание нужной функции
источник

P+

PAM3ES ++ in Rust Beginners
это я понял.
источник

P+

PAM3ES ++ in Rust Beginners
но зачем не понял
источник

A

Alik in Rust Beginners
PAM3ES ++
тогда я чет не пойму, тогда вообще зачем нужны трейты, я походу не правильно понимаю, я понимаю вот так сейчас(про то что ты пишешь), структуры не связаны, из них нельзя ничего делать с другими структурами, даже если они от одного traits, но ты сможешь запихнуть объект.
Просто поэксперементируй
источник

🦉⁣

🦉 ⁣ in Rust Beginners
PAM3ES ++
но зачем не понял
Ты определяешь апи нужного объекта
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Например
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Представь
источник

🦉⁣

🦉 ⁣ in Rust Beginners
У тебя есть сейф, Дверь, Окно и коробка
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Они могут открыться
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Ты хочешь написать функцию которая будет открывать то, что в нее передали
источник

A

Alik in Rust Beginners
pub trait Openable {
   fn open(&self) -> bool;
}
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Так как раст типизирован строго, ты не можешь просто дать всем своим структурам метод открыть и прокинуть его
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Вместо этого ты опишешь функцию которая умеет работать с открываемыми объектами
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Alik
pub trait Openable {
   fn open(&self) -> bool;
}
Указав в качестве дженерика этот трейт
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Ну и добавив метод открыть для каждой структуры
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Все
источник

🦉⁣

🦉 ⁣ in Rust Beginners
Твоя функция умеет открывать открываемые объекты
источник