Size: a a a

Rust — русскоговорящее сообществo

2020 April 02

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
defuz
Тем что ты можешь сделать это в любом крейте
и юзать методы из этого трейта ты сможешь только в текущем модуле
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
По крайней мере я понял автора сообщения именно так
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
defuz
Тем что ты можешь сделать это в любом крейте
тогда логичинее просто расширить возможности impl блоков и позволять им находиться за пределами родного крейта, но им будет досупна только публичная часть
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Алексей Герасимов
тогда логичинее просто расширить возможности impl блоков и позволять им находиться за пределами родного крейта, но им будет досупна только публичная часть
и получаем коллизии
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
🦉 ⁣
и получаем коллизии
да, и с анонимными трейтами насколько я понимаю то же самое потому что нельзя написать  MyTrait::foo(a)
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Алексей Герасимов
тогда логичинее просто расширить возможности impl блоков и позволять им находиться за пределами родного крейта, но им будет досупна только публичная часть
а может не надо луа?
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Boris Vinogradov
а может не надо луа?
почему же только луа, а как же js, ruby?
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
Алексей Герасимов
почему же только луа, а как же js, ruby?
ну луа была первой кто так сделал, а эти подхватили. Шутка Object object тоже туда же
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
идея мономорфизации выглядит хорошо только на бумаге, а по итогу получаем ненужный шлак где бы его не хотелось
источник

d

defuz in Rust — русскоговорящее сообществo
Ну в общем по-моему смысла в таких расширениях почти нет - все что они позволяют достичь достигается с помощью набора глобальных функций (а их по крайней мере можно потом экспортировать в чужие крейты). Если конечно у вас нет предубеждений что глобальные функции - это зло, должны существовать только методы
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
т.е. будут объекты и будут структуры, где объекты это объекты а структуры это объекты без плюшек типа саморефлексии и прочих полезностей
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
defuz
Ну в общем по-моему смысла в таких расширениях почти нет - все что они позволяют достичь достигается с помощью набора глобальных функций (а их по крайней мере можно потом экспортировать в чужие крейты). Если конечно у вас нет предубеждений что глобальные функции - это зло, должны существовать только методы
глобальные функции как и глобальные данные мешают нормально жить любой программе длинней 10 строчек
источник

AL

Andrey @ozkriff Lesnikov in Rust — русскоговорящее сообществo
O.o
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
🦉 ⁣
ведь суть трейта в переиспользовании
это отличается тем что разрешает тебе сделать impl extension for std::collections::HashMap
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
и это не трейты а экстеншен методы
источник

🦉⁣

🦉 ⁣ in Rust — русскоговорящее сообществo
Berkus Decker
это отличается тем что разрешает тебе сделать impl extension for std::collections::HashMap
но если трейт анонимный, То как?)
источник

BV

Boris Vinogradov in Rust — русскоговорящее сообществo
личный опыт написания и поддержки систем на 500+ тыщ строк кода и ничего более
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
их суть в дополнительном удобстве, а не переиспользовании
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
🦉 ⁣
но если трейт анонимный, То как?)
это не трейт
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Berkus Decker
их суть в дополнительном удобстве, а не переиспользовании
+
источник