Size: a a a

2020 August 03

KR

Kai Ren in rust_offtopic
Переслано от Roman na
и в этом фундаментальная проблема раста. Он имеет "шаблоны" под языком, имеет все их проблемы, но на уровне самого языка - это скриптуха
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
это трейд-оффы - шаблоны медленно собираются
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
Ещё раз отвечу. В статическом языке выбора никакого нет. Нельзя свести полиморфный код к мономорфному, т.е. "шаблоны" нужны всегда.

Но если уж мы используем шаблоны, то мы можем использовать их преимущества
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
основное это то, что типы не стираются, да
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
на самом деле все эти "ограничения" в скриптухе - это не ограничение. Это именно типизация
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
в функции <T>(x: T) x.foo() - T не имеет каких-либо свойств уникальных
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
поэтому там нужно типизировать T - наделить его свойствами.
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
Вот он типизируется специальными типами - интерфейсами
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
это тот интерфейс, через который доступны все типы принимаемых значений.
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
и в этом проблема - он общий
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
Мы не можем написать функцию T1 => T2
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
Т.е. мы можем проводить подобные трансформации, мы не должны везде и всюду типизировать убогие трейты дерьма. И самое важное - мы получаем нормальные ошибки
источник

KR

Kai Ren in rust_offtopic
Переслано от Kai Ren
А чем ошибки с трейтами плохи?
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
Тем, что они возникают не там, где происходит ошибка.
источник

KR

Kai Ren in rust_offtopic
Переслано от Kai Ren
Почему же? Разве не в месте вызова? Если тип не реализует трейт, в месте передачи на это и отругает. Прямо как в твоём примере. Или ты имеешь в виду что-то другое?
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
сравни ошибки.
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
у меня реальная ошибка в том, что в myint нет +
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
и неважно что я поверх этого нагородил
источник