Size: a a a

2020 October 17

JM

John Meow in Rust Beginners
Mikail Bagishov
Раст такое не позволяет
Вот-вот
источник

JM

John Meow in Rust Beginners
Это как-то не зиро-кост
источник

MB

Mikail Bagishov in Rust Beginners
Я кидал выше зирокостный вариант
источник

li

long long int in Rust Beginners
Спасибо большое. Никак не пойму как оно работает. Функции знакомые, но как с ними обращаться и что "зирокост" - не понимаю

*Оно - паттерн матчинг, деструктуризация
источник

IB

Ivan Boldyrev in Rust Beginners
John Meow
Это как-то не зиро-кост
Зиро-кост означает, что если ты не используешь фичу, она не замедляет остальной код.  А в данном случае ты фичу используешь, а раз тип известен (слайс или массив), то компилятор может это сделать зиро-костным.

Не надо путать зиро-кост с дешевизной.
источник

JC

Julian =) Coffee in Rust Beginners
Я слышал от Страуструпа, что зирокост абстракции это такие абстракции с которыми ты не можешь написать более быстрый код лишившись абстракции.
источник

JC

Julian =) Coffee in Rust Beginners
Поэтому это не про "не используешь -  не платишь", это про "используешь - не платишь"
источник

JC

Julian =) Coffee in Rust Beginners
Хотя может у Нико свои понятия зирокоста)
источник

MB

Mikail Bagishov in Rust Beginners
John Meow
Это как-то не зиро-кост
Но кстати, вариант с try_into().unwrap() вполне бесплатный, LLVM достаточно умна для этого
источник

IB

Ivan Boldyrev in Rust Beginners
Julian =) Coffee
Поэтому это не про "не используешь -  не платишь", это про "используешь - не платишь"
Но ведь так не бывает. :)

What you don’t use, you don’t pay for.  И в данном случае действительно невозможно сделать быстрее, не лишившись абстракции.
источник

JC

Julian =) Coffee in Rust Beginners
Ivan Boldyrev
Но ведь так не бывает. :)

What you don’t use, you don’t pay for.  И в данном случае действительно невозможно сделать быстрее, не лишившись абстракции.
Бывает
источник

IB

Ivan Boldyrev in Rust Beginners
Бывают дешёвые фичи, но нет бесплатных.
источник

JC

Julian =) Coffee in Rust Beginners
Мономорфизация это платная фича?
источник

JC

Julian =) Coffee in Rust Beginners
Она конечно бьет по компайл тайму, но для рантайма это абстракция с отрицательной стоимостью.
источник

MB

Mikail Bagishov in Rust Beginners
long long int
Спасибо большое. Никак не пойму как оно работает. Функции знакомые, но как с ними обращаться и что "зирокост" - не понимаю

*Оно - паттерн матчинг, деструктуризация
Мы заводим два итератора - итератор по массиву и итератор по массиву, сдвинутый на 1. Далее они zip-уются и тогда получившийся итератор бегает по парам соседних элементов.
источник

IB

Ivan Boldyrev in Rust Beginners
Julian =) Coffee
Мономорфизация это платная фича?
Да, ты платишь за неё увеличением размера кода, который неожиданно перестаёт влезать в кэши.
источник

JC

Julian =) Coffee in Rust Beginners
Ivan Boldyrev
Да, ты платишь за неё увеличением размера кода, который неожиданно перестаёт влезать в кэши.
То есть если ты скопипастишь код руками он магически влезет в кэши?
источник

li

long long int in Rust Beginners
Mikail Bagishov
Мы заводим два итератора - итератор по массиву и итератор по массиву, сдвинутый на 1. Далее они zip-уются и тогда получившийся итератор бегает по парам соседних элементов.
Это я понимаю. Но я не понимаю как понять что оно "зиро-кост" и почему с window не "зиро-кост"?
Зачем тогда window?
источник

IB

Ivan Boldyrev in Rust Beginners
Julian =) Coffee
То есть если ты скопипастишь код руками он магически влезет в кэши?
Нет, я не копипастю код. ;)
источник

JC

Julian =) Coffee in Rust Beginners
Ivan Boldyrev
Нет, я не копипастю код. ;)
Тогда тебе и мономорфизация не нужна, твои функции всегда работают с одним типом и никакого раздувательства нет.
источник