Size: a a a

2020 August 03

KR

Kai Ren in rust_offtopic
Переслано от Kai Ren
Он та ещё дубина
источник

KR

Kai Ren in rust_offtopic
Переслано от Kai Ren
Даже в кейсах попроще.
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
ну там ленивое умножение матриц
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
генерируется "список" "списков" 0..n => 0..n
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
в любом случае всё это заморочно и неважно
источник

KR

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

KR

Kai Ren in rust_offtopic
Переслано от Roman na
таким образом можно написать ленивое умножение матриц, настоящие. На растовых итераторах это не написать
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
потому что они мономорфны. А значит все общие
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
а самый простой тип итераторов - это последовательный виде .next() - ну как в скриптухе и расте
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
в крестах же итератор - это произвольный тип итератора с произвольными свойствами, и в зависимости от этих свойств семантика операций меняется
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
auto range = vec | map(_ + 10);
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
range[n] - сработает
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
auto range = vec| map(_ + 10) | filter(_ > 10);
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
range[n] - не сработает
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
т.е. filter - принимает любой тип итераторов и порождает линейный итератор
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
который можно только итерировать. map  не влияет на тип итераторов
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
https://godbolt.org/z/c7WfE6 - это ещё на тему полиморфизма. Это то чем и зачем в С++ существуют концепты.
источник

KR

Kai Ren in rust_offtopic
Переслано от Roman na
и здесь понятно как оно работает. Смысл в том, что find(set, key) - даёт разные типы. Если ключ есть в set - тип будет opt<value_type>, а если нет - будет nothing - пустой optional
источник

KR

Kai Ren in rust_offtopic
Переслано от Kai Ren
Чем, кстати концепты концептуально (лёль) отличаются от трейт баундов?
источник

KR

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