Anton
а как же ТАЙП СЕФЕТИ
так чет какие то двойные стандарты, например в модуле где я определил паблик трейт - он мне дает заимлементить трейт для Uuid, а если я делаю это же в другом модуле посылает нафиг
Anton
В чем тайп сафети?
պլհկ
do you even coherence rules bro
պլհկ
1.можешь заимплементить свой трейт для чужого типа 2.можешь заимплементить чужой трейт для своего типа
պլհկ
trait MyTrait {} impl MyTrait for i32 {}
Anton
если есть импл для чужого трейта и типа, приходится плодить ньютайпы
Marat
А это как-то собираются решать?
պլհկ
ну естественно. подумай о том, что два васяна сделают импл одного трейта для одного типа. что делать будешь?
Anton
trait MyTrait {} impl MyTrait for i32 {}
Я в смысле не понимаю зачем ограничение
Anton
как вариант
Anton
правда если имл в разный крейтах - тогда конечно боль
պլհկ
exactly
-__-
А это как-то собираются решать?
Собираются https://github.com/rust-lang/rfcs/issues/493
Cuno
Собираются https://github.com/rust-lang/rfcs/issues/493
issue 2014 года с последним комментом в 2017-ом, не то что бы собираются
-__-
Ну да, они так-то много чего "собираются".
պլհկ
https://internals.rust-lang.org/t/orphan-rules/1322/7
Alexander
Без coherence может получиться так, что в одном случае какой-нибудь Heap подхватит один impl Ord, а другой Heap - другой инстанс для того же самого типа и получится очень интересно когда кто-то попытается слить оба хипа в один.
Alexander
Кто-нибудь придумал вменяемое решение чтобы не путаться в инстансах без coherence?
Alexander
как вариант?
Не вариант. Ты импортируешь одну реализацию и создаёшь свой Heap, а второй хип получаешь из сторонней библиотеки, которая импортирует ХЗ какую реализацию. Где гарантии, что эти два хипа можно слить? Как компилятор должен отслеживать кто какую реализацию трейта использует?
Anton
использовать реализацию иимпортированую в текущем модуле, но это гемор, да
Alexander
использовать реализацию иимпортированую в текущем модуле, но это гемор, да
Как предполагается заставить левую библиотеку использовать реализацию, импортированную в текущем модуле?
Berkus
Как предполагается заставить левую библиотеку использовать реализацию, импортированную в текущем модуле?
очень легко, просто перекомпилируешь стороннюю библиотеку еще раз, делов то
Alexander
очень легко, просто перекомпилируешь стороннюю библиотеку еще раз, делов то
C++ и Scala программисты начнут смеяться над растоманами из-за времени компиляции, что обидно. 😊
Anton
Ой ли, раст и сейчас не быстро компиляет
Alexander
Это смотря с чем сравнивать...
Alexander
Хотя я не знаю кто прям существенно быстрее Rust компилирует - Go?
Ignat
C?
Αλεχ
ну кроме мб хаскеля
Αλεχ
и прочих заебистых
Ignat
да хаскель не то чтобы так уж медленно собирался
Anton
субективно - плюсы, но у раста на каждый пук горы зависимых крейтов
Αλεχ
C++? Scala?
большой проект на плюсах будет дольше, да
Αλεχ
хелловорлд на плюсах соберется быстрее
Anton
ну кроме мб хаскеля
у меня stack компиляет, а runhaskell нет 🙂
Anton
они компиляются один раз если че
Вопрос в том что с нуля
Alexander
у меня stack компиляет, а runhaskell нет 🙂
GHC (а runhaskell - это интерфейс к GHC) не может не компилировать. Разница только в степени оптимизации.
Αλεχ
Вопрос в том что с нуля
а ты часто с нуля компиляешь?
Cat
субективно - плюсы, но у раста на каждый пук горы зависимых крейтов
согласен, у каждой библиотеки есть один фатальный недостаток
Anton
а ты часто с нуля компиляешь?
часто, билд сервер у меня всегда с нуля прогоняет
Αλεχ
часто, билд сервер у меня всегда с нуля прогоняет
я тебе могу подсказать секрет: можно кэшировать файлики
Αλεχ
и они не будут перекомпилится
Cat
я тебе могу подсказать секрет: можно кэшировать файлики
кэшировать на CI так-то плохая практика
Cat
тем что не PURE
Αλεχ
travis/appveyor/jenkins/... не случайно все вместе предоставляют возможность это делать
Cat
миллионы мух не могут ну ты понял
Roma
Хотя я не знаю кто прям существенно быстрее Rust компилирует - Go?
бля, не нашёл с програмингсёрклжёрк шутку про "го компайлер быстрый потому что юзер руками мономорфизирует" %(
Αλεχ
миллионы мух не могут ну ты понял
да в чем проблема-то кэшировать зависимости?
Αλεχ
покажи что сломаться может?
Kerrigan
покажи что сломаться может?
на докладе уже было про баг в 1.27
Kerrigan
докеширровались, лол
Alexander
а тут пользователи CLion есть? я признаться до сих пор не пойму в чём принципиальная разница если от одной конторы с idea ?
Kerrigan
а еще оно платное
Berkus
или бекенд... хз
Nikita
плагин
Αλεχ
на докладе уже было про баг в 1.27
ну блять если у тебя баг тебя ничего не спасет
Anton
Во упертый)
Anton
Есть такое слово так принято в компании, и не тебе и не мне решать )
պլհկ
деды завещали
պլհկ
конпелять с нуля
պլհկ
еще и зависимости качать каждый раз
պլհկ
а то мало ли что
Anton
А зависимости зачем?
պլհկ
так принято в компании
Anton
Ну, это совсем гиблый случай
Nikita
А зависимости зачем?
Потому что ломают иногда всё к хуям
Nikita
а у тебя всё в кэше было