Программирование


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
514 44 156

Rust #7 /rust/ Аноним 24/03/19 Вск 19:57:04 13694961
15475467057390.png (40Кб, 1034x583)
1034x583
15475467057391.webm (2422Кб, 1920x1056, 00:00:12)
1920x1056
Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.

ИТТ мы можем объяснить базовые и продвинутые концепции языка, и
программирования в целом, поможем вкатывающимся, подскажем что
выбрать для веба, игр или спасибо абу блокчейна.

https://www.rust-lang.org

> Пачиму helloworld весит как моя мамка?!1й
https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html

Читать
Оф. книга, она же растбук
https://doc.rust-lang.org/book/
https://rustbyexample.com/
Очень хорошая книга, отлично зайдет после растбука:
http://shop.oreilly.com/product/0636920040385.do

Упражнения
https://exercism.io/tracks/rust
https://github.com/crazymykl/rust-koans

Писать
IDE
https://areweideyet.com/
Вебня
http://www.arewewebyet.org/
Игры
http://arewegameyet.com/
Etc
https://wiki.mozilla.org/Areweyet

Список интересных проектов
https://github.com/rust-unofficial/awesome-rust

Новости
Компиляция всего, что произошло за неделю
Иногда постят вакансии
https://this-week-in-rust.org/
Сколько вешать в лайках
https://github.com/trending/rust

Оп рекомендует:
https://www.amethyst.rs/
https://github.com/TatriX/dvach
Аноним 24/03/19 Вск 19:59:45 13695002
>Programming Rust почитай или просто задавай конкретные вопросы или приводи примеры кода.
Двачую за Programming Rust. Rust book говно какое-то: воды много, по делу мало, некоторой инфы вообще нет.
Аноним 24/03/19 Вск 20:11:15 13695073
>>1369496 (OP)
Ура, растопидоры запилили трхед и не будут срать в других
Аноним 24/03/19 Вск 20:12:03 13695084
Аноним 24/03/19 Вск 20:14:41 13695115
>>1369507
В отличии от тебя, растопидоры знают более одного языка и скорее всего в них входят C и C++. Ты же не знаешь ни одного, студент мамкин.
Аноним 24/03/19 Вск 20:16:04 13695146
Так что растопидоры, как люди с широким кругозором, могут срать в разных тредах, а ты - только в своем загоне
Аноним 24/03/19 Вск 20:24:30 13695167
>>1369511
а я вот хотел вкатиться в ++, в итоге вкатился в Rust )
Аноним 24/03/19 Вск 20:55:24 13695338
Ржавые, нафига вы вкатываетесь в раст, а не в божественную дишечку?
Аноним 24/03/19 Вск 21:24:06 13695489
>>1369533
>Memory is usually managed with garbage collection, but specific objects may be finalized immediately when they go out of scope
>Functions marked @safe are checked at compile time to ensure that they do not use any features that could result in corruption of memory, such as pointer arithmetic and unchecked casts, and any other functions called must also be marked as @safe or @trusted. Functions can be marked @trusted for the cases where the compiler cannot distinguish between safe use of a feature that is disabled in SafeD and a potential case of memory corruption.
этакая джява из мира с++?
Аноним 24/03/19 Вск 21:32:04 136955910
>>1369533
Я на Си только и сижу. Растодебилы как всегда, лишь бы хуйней пострадать
Аноним 24/03/19 Вск 21:43:29 136956611
>>1369559
Си супротив раста, как ассемблер супротив сей.
Аноним 24/03/19 Вск 23:38:33 136962612
>>1369566
Мудрость глаголишь.
Раст идёт нахуй Аноним 25/03/19 Пнд 06:17:59 136968913
Аноним 25/03/19 Пнд 06:47:34 136969214
>>1369689
Всё просто: у Торвальдса лучше всего стоял, когда си были также прогрессивны, как сейчас раст. Что может быть прекраснее поиска потенциального нулевого указателя в очередном коммите? Только внезапно обнаружить гонку при работе с памятью, через которую знающие люди имеют ядро во все щели уже лет 10 Dirty COW , ага
Такое-то ностальжи, такой-то адреналин, возможны только с сями.
Аноним 25/03/19 Пнд 06:57:55 136969515
>>1369692
Ну, расту ещё расти и расти, за 9 то надо что-то уже и придумать.
Аноним 25/03/19 Пнд 07:12:51 136969916
>>1369566
>равняет си с джавой
Растомакака, плиз.
Аноним 25/03/19 Пнд 07:31:07 136970117
>>1369699
>джавой
Ну всё, затроллел, расскажешь пацанам на переменке.
Аноним 25/03/19 Пнд 07:43:24 136970318
>>1369689
Сейчас бы учитывать мнение создателя ОС, в которой больше всего CVE находят в год.
Аноним 25/03/19 Пнд 07:46:28 136970419
>>1369703
Ну а в других не находят, а их там больше. Код же закрытый :)
Аноним 25/03/19 Пнд 07:51:30 136970520
Аноним 25/03/19 Пнд 11:53:06 136975321
>>1369516
но раст в отличии от крестов нигде не используется)
Аноним 25/03/19 Пнд 12:33:57 136976422
>>1369753
Это очевидный пиздеж. Зачем ты так?
Аноним 25/03/19 Пнд 12:52:27 136977323
>>1369753
ну в твоей laba1 не используется, допустим. а хотел-то что сказать?
Аноним 25/03/19 Пнд 15:35:45 136982924
>>1369533
Хотя бы потому что в отличии от Ди на расте есть работа (и даже в этой стране!)
Аноним 25/03/19 Пнд 16:00:36 136983825
>>1369829
>Хотя бы потому что в отличии от Ди на расте есть блокчейнопараши, которые закроются, когда доедят деньги инвесторов

ftfy
Аноним 25/03/19 Пнд 16:27:12 136984426
>>1369838
>ваша работа не работа
Аноним 25/03/19 Пнд 16:30:53 136984727
>>1369844
Это не троллинг, а грустная ремарка.
Аноним 25/03/19 Пнд 16:52:27 136985628
>>1369847
Всегда можно будет уйти работать в Мозиллу но только если ты трансгендер-мусульманин, разумеется!
Аноним 25/03/19 Пнд 17:33:28 136987329
1.png (33Кб, 778x336)
778x336
2.png (16Кб, 788x143)
788x143
3.png (23Кб, 524x251)
524x251
>>1369838
>ftfy
Заканчивай уже в штаны серить, маня
Аноним 25/03/19 Пнд 17:35:48 136987530
>>1369873
>опыт разработки на RoR
Аноним 27/03/19 Срд 21:34:07 137103231
После прочтения главы про ссылки и владение в "programming rust" у меня потекли слезы от божественности дизайна языка. Ave Rust!
Аноним 27/03/19 Срд 22:05:33 137105732
maxresdefault.jpg (40Кб, 1280x720)
1280x720
Аноним 27/03/19 Срд 22:33:06 137117233
Ебать колотить, вот это пиздец с двачем
Аноним 27/03/19 Срд 22:37:28 137117334
>>1371172
Спасибо, Абу! переписываем двачик на раст
Аноним 28/03/19 Чтв 18:44:05 137156435
Аноним 28/03/19 Чтв 18:53:41 137156936
Аноним 28/03/19 Чтв 19:35:36 137158637
В чем разница между print! println и println! ??
Аноним 28/03/19 Чтв 19:59:48 137159538
>>1371586
Первое напишет, но не переведет строку, второе не скомпилится, третье перевдет каретку на новую строку после написания.
Аноним 28/03/19 Чтв 20:12:19 137159739
https://m.habr.com/ru/post/445670/

>Разработка Quantum CSS началась, чтобы повысить производительность. Улучшение безопасности — просто удачный побочный эффект.
>вся статья про количество багов и сколько этих багов самим существованием кода на Rust было закрыто. ну и какие-то васянские замеры в каментах.
так есть все-таки более или менее близкий к правде бенчмарк на какие-то параллелируемые алгоритмы на системных языках?
Аноним 29/03/19 Птн 10:32:04 137183540
Аноним 29/03/19 Птн 11:41:58 137186441
>>1371835
Что cloudflare, что dropbox основной код пишут на go, а на rust всякие latency-critical вещи или байтоебские.
Аноним 29/03/19 Птн 11:43:30 137186542
>>1371864
так на плюсах такая же ситуация. а ты что хотел?
29/03/19 Птн 12:45:37 137189043
Аноним 29/03/19 Птн 14:01:34 137191344
CFjnQvj8thumb.gif (206Кб, 200x200)
200x200
>>1371864
>язык для latency-critical и байтоебских вещей
>пишут latency-critical и байтоебские вещи
Аноним 29/03/19 Птн 14:37:10 137192445
>>1371913
Rust - также классный язык общего назначения, так что было бы круто, если бы всё на нем писали.

>>1371865
Плюсоговно вообще не рассматриваю, желаю ему, чтобы оно поскорее сдохло.

Я только вкатываюсь в раст и вот только навскидку:

- В плюсах есть 5 конструкторов + 3 оператора присваивания. Некоторые из них имеют неявное преобразование аргументов, некоторые - нет. Все это говно надо держать в голове. Что есть в расте? А нихуя нет, просто вообще нет конструкторов. Можно сделать статический метод new, если хочешь. А можно и не делать.

- В плюсах есть 5 видов ссылок, lvalue, rvalue, xvalue и еще два, забыл их. Столько типов ссылок надо для разруливания тупорылого легасного приведения между разными ссылками в разных ситуациях. Подробнее здесь - https://en.cppreference.com/w/cpp/language/value_category . (Алсо после появления мув-семантики появилось 100500 статей, чтобы охуевшие бедолаги таки поняли это говно, что как бы намекает на качество дизайна языка).
В расте же ссылка либо mutable, либо шаренная, либо владеющая.

Просто выкидываем говно и получаем простую конфетку, которую легко изучать.
Аноним 29/03/19 Птн 14:43:02 137192646
>>1371924
ну ебать
раст писался на плюсовом, в том числе, опыте нескольких десятков лет разработки тонн говна и адской боли от получившихся результатов. это как джяву упрекать в том, что она не дотнет
Аноним 29/03/19 Птн 14:45:07 137192847
>>1371926
Я никого не упрекаю, просто агитирую за все хорошее против всего неудобного. С++ - легаси, Rust - не легаси, вот пару моментов "почему это так"
Аноним 29/03/19 Птн 14:55:48 137193448
>>1371928
В C++ нормальные гибкие duck typed темплейты, Rust - безальтернативная тайпклассопараша.
Поэтому, к сожалению, Rust хуйня.
Аноним 29/03/19 Птн 15:09:03 137193849
>>1371934
10 лет пытаются внедрить концепты(которые по сути тайпклассы), потому что от SFINAE и сообщений компилятора тянет блевать даже фанатов александреску. А rust с тайпклассами из коробки - это хуйня, да
Аноним 29/03/19 Птн 15:25:32 137194350
>>1371938
>концепты(которые по сути тайпклассы)
Это не так.
У тайпклассов есть свои преимущества, но перед ООП с виртуальными методами и т. п. Но вот против мощи темплейтов в расте ничего нет.
Аноним 29/03/19 Птн 15:31:11 137194651
>>1371943
Продемонстрируй эту самую мощь темплейтов и то, какие концепты не тайпклассы.
Аноним 29/03/19 Птн 17:44:31 137199752
>>1371924
>было бы круто, если бы всё на нем писали.
Дорага же.

>>1371934
Я, кажется, первый раз вижу человека, который утверждает "кресты крута тому ша темплейты". Ты же троллишь, да?Меня затроллил.
Аноним 31/03/19 Вск 14:09:48 137269153
>>1371597
>так есть все-таки более или менее близкий к правде бенчмарк на какие-то параллелируемые алгоритмы на системных языках?

А что ты ожидаешь увидеть? Везде те же самые потоки на одних и тех же ОС и с теми же самыми мьютексами. В расте придется Arc поклонировать 16 раз, чтобы компилятор не ругался (но в зависимости от подхода то же самое нужно будет сделать и на плюсах). Смотри однопоточные тесты, дели на N, увидишь +\- точные цифры.
Аноним 01/04/19 Пнд 18:40:51 137329954
>>1371890
Да, я. Есть что по делу сказать?

>>1371864
> Что cloudflare, что dropbox основной код пишут на go
Пока пишут. Вон один проект уже решили начать писать на расте, дальше - больше.
> latency-critical вещи или байтоебские
А у них (конкретно дропбокс и клауд) есть НЕ "latency-critical вещи или байтоебские" вещи (кроме фронтенда, офк)?

Кстати, этот впн таки не просто так, а для публичного сервиса: https://blog.cloudflare.com/1111-warp-better-vpn/
Аноним 01/04/19 Пнд 18:48:05 137330155
>>1371597
Да, поганая статья (всмысле того, как построена). Мне кажется, что мамзель не очень понимает как писать, или она не очень в теме что и зачем переписывалось на расте. Меня зацепила эта фраза: "By 2017, Mozilla had made two previous attempts to parallelize the style system using C++. Both had failed". Выглядит так, что стали переписывать потому что параллелить хуиту такого размера и сложности, как браузерный движок, было КРАЙНЕ сложно на крестах, и решили в итоге взять более строгий язык, не уступающий в скорости, "системный". Просто по поводу чистой скорости на один поток >>1372691 правильно написал. Тут может быть выигрыш только за счет строгости самого языка и вытекающих отсюда оптимизаций.
Аноним 07/04/19 Вск 14:38:45 137670156
Аноним 07/04/19 Вск 14:53:07 137671157
1491511273750.png (79Кб, 466x449)
466x449
Аноним 07/04/19 Вск 15:14:12 137672258
>>1371943
>Но вот против мощи темплейтов в расте ничего нет.
А что есть у C++ против мощи макросов раста?
Почему на С++ с его мощными темплейтами невозможны такие вещи, как serde или pest?
Аноним 07/04/19 Вск 15:24:30 137672959
>>1369873
опыт нлп это опыт нейролингвистического программирования?
Аноним 07/04/19 Вск 15:40:37 137674060
Аноним 09/04/19 Втр 11:39:39 137761061
СоСолды здесь?
Аноним 09/04/19 Втр 21:22:08 137794962
ебал мать растодаунов хуй сосите
Аноним 09/04/19 Втр 23:07:35 137799863
>>1377949
У растодаунов королева-матка своя?
Аноним 13/04/19 Суб 02:56:55 138010764
USL-owl.mp4 (6947Кб, 1280x720, 00:01:12)
1280x720
Тредик, ну не надо умирать, хорошо?
Аноним 13/04/19 Суб 21:19:00 138045765
>>1380107
Пости контент тогда, хули
Аноним 13/04/19 Суб 23:37:11 138054666
Аноним 14/04/19 Вск 20:51:14 138105967
index.jpg (5Кб, 176x286)
176x286
rustacean-flat-[...].png (32Кб, 1200x800)
1200x800
Сап. Скалан вкатывающий в раст всё ещё не слился, если кто волнуется.
Дочитал растбук до енумов. Всё круто. Проблем с концепцией владения вроде не возникло. Довольно простые правила, довольно логичные. Наверное просто мой мозг не засран концепциями C и C++. Хотя возможно это только верхушка айсберга.
Начинает напрягать вербозность растбука. Думаю перекатиться на rust by example. Стоит ли?
Аноним 14/04/19 Вск 21:08:21 138107468
Аноним 15/04/19 Пнд 00:31:11 138158469
>>1381059
Что первое, что второе дрисня та еще. Читай лучше Programming Rust. Написали чуваки из language team
Аноним 15/04/19 Пнд 02:04:43 138159770
>>1381059
Зачем тебе вообще сдался раст? Не лучше ли улучшить свои навыки для шкалапидора?

Где тебе пригодится раст? Задумайся.
Аноним 15/04/19 Пнд 02:48:42 138160271
>>1381597
Я думаю, раст я буду использовать в вебе.
Потому что быстро и избавляет (насильно) от ошибок программиста. Плюс конкурренси, удобный тестинг, пара гендеров в кармане и тд.
Аноним 15/04/19 Пнд 06:20:27 138164272
USL-npm-22.mp4 (24931Кб, 1280x720, 00:01:50)
1280x720
>>1380457
К сожалению у меня нет контента по Расту.
Да и писать сейчас приходиться не на нём.
Но ты всё равно не умирай.
Аноним 15/04/19 Пнд 19:50:26 138192673
Аноним 15/04/19 Пнд 20:29:32 138195474
Аноним 15/04/19 Пнд 20:30:48 138195675
Аноним 15/04/19 Пнд 21:56:18 138201176
Аноним 15/04/19 Пнд 21:59:35 138201477
>>1382011
Есть богоподобный tui-rs
Аноним 15/04/19 Пнд 22:36:28 138203278
>>1382014
> tui-rs is a Rust library to build rich terminal user interfaces and dashboards.
Это, конечно, не гуй, но выглядит интересно. А какие юзкейсы? Что-то я не припомню, что-бы в последнее время у кого-то были дашборды в терминале.
мимо другой анон
Аноним 15/04/19 Пнд 22:37:49 138203379
>>1382032
Ты просто виндузятник наверное. А консолечка очень популярна среди 1% от 1% всех линуксоидов.
Аноним 15/04/19 Пнд 22:41:55 138203480
>>1382033
Я прыщеблядь. Люблю пердолиться с консолькой, но ни разу не видел дашбордов в терминале. Или это что-то для петпроджектов?
Аноним 16/04/19 Втр 09:12:06 138214381
>>1381602
Эх, хорошо бы что-то новое в вебе, но ТЕБЕ. ВСЕ. РАВНО. НУЖЕН. ДЖЭЭС. СУКА. Один хуй нужны биндинги к DOMу и всей хуйне, предоставляемой браузером. Хотя можно попытаться сделать фронт на yew, да.
Аноним 16/04/19 Втр 13:30:04 138223882
>>1382143
Открой для себя мир kitlinjs, scalajs, tvoyamamkajs
Аноним 16/04/19 Втр 13:41:13 138224483
>>1382238
Подожди, я тебе говорю просто факт: чтобы из WASM работать с DOMом, вообще с внешним миром, тебе нужны биндинги на JS. Да, часть кода сгенерируется (в том же yew тебе вряд ли понадобится JS для hello world), но JS все равно остается. Если хочешь опровергнуть, то покажи как без JS загрузить WASM модуль, как модифицировать DOM.

А свое

> Открой для себя мир kitlinjs, scalajs, tvoyamamkajs

можешь себе в задницу засунуть. А потом узнать, что это хуита, просто компилирующаяся в JS, а не WASM. И да, там тоже есть JS, внезапно, не так ли?
Аноним 16/04/19 Втр 15:05:29 138228484
>>1382244
>компилирующаяся в JS
А что в этом плохого? Конпелируемые языки конпеляются, грубо говоря, в ASM, писать на котором та ещё мука.
Аноним 16/04/19 Втр 16:56:29 138233385
>>1382284
Ничего особо плохого, наверно (кроме того что джс медленное говно, но оставим это в стороне). Но сравнивать Rust, который компилируется в WASM и Scala, которая в JS, немного некорректно. На что я и указал.

Да, есть Emscripten, который компилит в JS, но это все же немного другое опять же. Костыль для тех бразуеров, где нет поддержки WASM, и приходится LLVM в JS компилить, а не в WASM.
Аноним 16/04/19 Втр 18:25:08 138236386
>>1381597
Мои навыки шкалапидора улучшаются параллельно.
Раст просто интересен, работу искать на нём не планирую.
Аноним 17/04/19 Срд 03:43:35 138259687
>>1382143
Ты тупой да? На беке можно использовать что угодно, хоть асм. Ты такую сейчас неревантную хуйню сморозил.
Аноним 17/04/19 Срд 07:55:34 138265888
>>1382596
Это ты не понял - он про фронт. Чтобы, типа, всё на расте - даже небо и аллагх.
Аноним 18/04/19 Чтв 00:21:53 138313289
>>1382658
Угу, так и есть. Я допускаю, что изначально все таки речь не шла о фронта, но вот фраза

> Я думаю, раст я буду использовать в вебе.

сделала меня думать про фронт и последующие несколько сообщений были ЯВНО про фронт.

Вообще, не смотря на то, что я не люблю JS по множеству причин, сложно отрицать что ему сейчас замен нет. Поэтому раст видится как только язык для всяких числодробительных модулей типа криптографии.
Аноним 18/04/19 Чтв 01:45:51 138314890
>>1369692
ЛОЛ, да у него же синдром утенка + Когда всю жизнь пишешь на одном языке, ясен хуй он для тебя как родной
Аноним 18/04/19 Чтв 01:54:49 138315091
>>1376722
лексические макросы например,
#define, #ifdef, #endif, #undef,
#pragma,

потом че еще, ну там крутой современный подход к созданию модульных приложенией:
#include "linux.h" // вот так типо

оно там копирует и линкует потом, вообще топчик
Можно функции свои делать типо
#define sum(x, y) ((x) + (y))
там еще можно имя переменной подставлять типо #y или как то так
Аноним 18/04/19 Чтв 10:42:33 138327692
Аноним 18/04/19 Чтв 22:16:53 138372493
Аноним 19/04/19 Птн 14:15:30 138404594
>>1383148
Он где-то говорил про Раст что-то в духе "говно, конечно, но гораздо лучше, чем то, что пытались делать раньше". Там что, можно считать, что ему понравилось.
Аноним 20/04/19 Суб 14:15:48 138478495
Написал структуру, запилил ей fmt::Display. Display, как я понял, покрывает to_string(). Чому тогда String::from(YobaStruct("yoba")) говорит, что std::convert::From не определен для String? Почему он не использует Display, в чем принципиальная разница?
Ну и шо, в расте можно для std трейты самому пилить?
Аноним 20/04/19 Суб 15:55:59 138486396
>>1384784
че-то я в списке методов String::from не вижу <T: Display>. схуяли ты решил, что оно должно заработать?
Аноним 20/04/19 Суб 16:21:13 138488797
>>1384863
Да хуй знает. Чем тогда отличается реализация to_string от Display и от String::from, нахуй столько вариаций?
Аноним 20/04/19 Суб 16:28:39 138489598
>>1384887
String::from - это конвертер
Display - это для форматированного представления в условную консольку или поток ошибок

это не совсем одно и то же, хотя под капотом однохуйственно превращается из T в String. это как шаблоны адаптер и декторатор смешивать. потому, что под капотом запускают целевой метод интерфейса
Аноним 20/04/19 Суб 16:50:38 138492099
>>1384895
Ок, допустим, результат String::from и форматирования YobaStruct может отличаться. А to_string? Вот я пишу структуру, почему нужно для преобразования её в строку отдать предпочтение String::from, а не to_string?
Аноним 20/04/19 Суб 17:42:10 1384959100
>>1384920
а почему нужно отдавать предпочтение? я, конечно, нубас еще, но подобных догм не встречал
Аноним 20/04/19 Суб 17:52:28 1384961101
>>1384959
Да я сам нубас, поэтому спрашиваю как тут ПРИНЯТО. Ну вот если я запилю и to_string, и String::from, которые будут работать одинаково, нахрена их две штуки тогда? Но зачем-то же сделали возможность преобразовать структуру в строку двумя путями, я вот и спрашиваю, зачем. Ну и, собственно, не понятно тогда от остальных типов чего ожидать для этого: to_string или String::from. Выходит, либо для каких-то случаев один из них предпочтительнее, либо просто две нахуй не нужных одинаковых сущности зачем-то запилили.

Алсо, лапша вроде xyu.iter().enumerate().map().govno().mocha().nebo().allah().flatten().collect() приемлема в коде или лучше разбивать на куски?
Аноним 20/04/19 Суб 18:37:50 1384986102
>>1384961
>я запилю две штуки
>нахрена я это сделал
Аноним 20/04/19 Суб 23:43:12 1385139103
>>1384961
>лапша
А в чем тут лапша, можешь объяснить?

>разбивать на куски?
А как именно ты бы это разбил на куски? xyu_iterated = xyu.iter(); xyu_enumerated = xyu_iterated.enumerate(), лол?
Аноним 21/04/19 Вск 01:14:54 1385157104
1490093351312.png (265Кб, 1552x1136)
1552x1136
Аноним 21/04/19 Вск 07:57:18 1385190105
>>1385157
Builder на любом языке превращается в цепочку из подобных какашек. пример так се
Аноним 21/04/19 Вск 09:53:33 1385213106
fn main() {
useless();
}

fn useless() {
let vector = vec!(3, 2, 1, 1 / 0);
}

почему канпелятор не настолько умный шобы выпилить аллокацию вектора? в расте нет многообещанной плюсами "плати за то, что используешь"? (я хз, работает ли оно там или нет)

и второе, для того, чтобы использовать условный lazy для элементов, мне обязательно пердолиться функторами/замыканиями? чтобы, например, сделать такое:
vec!(3, 2, 1, 1 / 0).len();
Аноним 21/04/19 Вск 13:17:21 1385313107
>>1384961
Видать именно поэтому в rust'е все имена убого сокращены: "vec" "fn" "str" "mut" "iter" "into_iter" "sleep_ms"...
А еще убогость в сочетании camel case и сишных hui_pizda
Аноним 21/04/19 Вск 13:27:56 1385317108
rust essay.png (36Кб, 200x241)
200x241
>>1377610
Кстати, актуальный вопрос. Растоманы, к вам не лезут на Гитхабе с заявлениями, что нельзя называть пользователя "he", надо добавить больше CoCа и т.д.? У меня сложилось такое впечатление, что англоязычное сообщество Раста в этом плане одно из самых неадекватных.
Аноним 21/04/19 Вск 15:35:20 1385842109
>>1385213
>почему канпелятор не настолько умный шобы выпилить аллокацию вектора?
Тебе ж будет ворнинг о неиспользуемом значении, что еще надо-то?
Аноним 21/04/19 Вск 17:39:54 1385965110
>>1385842
у меня будет компайл-эррор потому шо (1 / 0) есть инвалид
1.32.*, если что
Аноним 22/04/19 Пнд 14:03:18 1386582111
Дайте, пожалуйста, длинный пиздатый туториал по piston, вроде вот этого
http://piston-tutorial.logdown.com/
только работающий. Приведённый устарел настолько, что интерфейс библиотеки уже совсем другой, тамошний код не работает нихуя.
Аноним 22/04/19 Пнд 18:27:34 1386763112
наверное, это было в прошлом тренделе, а именно обсуждение форматирование документа и худой-бедный intellisense в vs code
докладываю, на линухе эта еболда завелась прям без бубнов. проде бы пакеты установлены те же, что и на шиндошсе
Аноним 22/04/19 Пнд 23:27:55 1387032113
>>1386763
Почему не плагин доя гейдеи?
Аноним 23/04/19 Втр 07:54:49 1387131114
>>1387032
VSCode чутка более легковесная дрянь
Аноним 23/04/19 Втр 08:06:41 1387132115
>>1387131
не удивительно
на джаваскрипте написано же
Аноним 23/04/19 Втр 12:04:53 1387224116
>>1387132
лучи поноса пользователям электрона.

спасибо хоть телега пишет свою морду на сях. Единственное пользовательское приложение из 2019 года которое не жрёт оперативку как не в себя
Аноним 23/04/19 Втр 12:44:07 1387240117
>>1387224
И которое работает по-настоящему отзывчиво. Надеюсь в будущем gui будут писать на расте, который будет тем qt, который мы всегда хотели
Аноним 23/04/19 Втр 16:51:06 1387358118
А что под гРуст нет простого перекодировщика строк из cp1251 в utf-8 и обратно?

Печально.

// Турист с визитом из ГоЛанга
Аноним 23/04/19 Втр 16:58:44 1387361119
proxy.duckduckg[...].png (158Кб, 3612x1813)
3612x1813
>>1387240
> Надеюсь в будущем gui будут писать на расте, который б
Угу, сейчас. Все обоссываются от счастья от WASM-а. Комитетов по продвижению насобирали больше чем было при Хрущеве, а толку ноль.

Как была разработка и компиляция под WASM процессом, напоминающим секс на ходулях, так и осталась.


Аноним 23/04/19 Втр 17:09:27 1387368120
>>1387361
>WASM
Я ващет не погромист, я клавиатуру на помойке нашёл,

но у меня вопрос:

разве васм это не результат компиляции?

Если хочешь писать морду на васме - надо писать её на цивилизованном языке, вроде плюсов, и потом компилировать в васм.

Но, блядь, для десктопной ебалы (типа скайпа или слака, которые блядь просто абузят электрон, сука, блядь, почему чат подвешивает машину в 2019, ёбанарот), проще её допилить до вменяемого состояния и скомпилировать сразу в асм, выкинув в мусорку весь движок хрома и плюнув ему в след.

Разве я не прав?
Аноним 23/04/19 Втр 22:50:46 1387543121
КОМПИЛИРУЕШЬ В ВАСМ
@
ПАКУЕШЬ В ЕЛЕКТРОН
Аноним 23/04/19 Втр 23:12:11 1387573122
15503840911880.webm (20288Кб, 1080x720, 00:03:45)
1080x720
Аноним 24/04/19 Срд 09:08:27 1387678123
>>1387573
нахуя ты это сюда принес, додик?
Аноним 24/04/19 Срд 09:58:28 1387683124
>>1387573
Никогда я не понимал мотивации мудаквижн. Они же натуральные уебаны.
Аноним 25/04/19 Чтв 16:14:31 1388501125
Screenshot2019-[...].png (58Кб, 1807x377)
1807x377
Аноним 25/04/19 Чтв 17:27:21 1388542126
>>1388501
Анон, ну там же написано, что оно ожидает и что ты передал.
Аноним 25/04/19 Чтв 17:28:33 1388543127
Аноним 25/04/19 Чтв 22:19:32 1388792128
image.png (208Кб, 381x499)
381x499
>>1369496 (OP)
Ну и что можно сделать на вашем расте? Говно язык без тулинга.
Аноним 25/04/19 Чтв 22:25:22 1388796129
>>1388501
ты вместо кложуры передал результат выполнения метода. Засунь метод, который после столбов || в фигурные скобки:

| a, b | {magic(a, b)} - кложура
| a, b | magic(a, b) - хуйня какая-то
Аноним 25/04/19 Чтв 22:26:06 1388797130
Аноним 25/04/19 Чтв 22:26:14 1388798131
>>1388792
>говно без тулинга
Ты скажи, на каком языке пишешь и что ты хочешь от тулинга, а я тебя аргументированно обоссу
Аноним 25/04/19 Чтв 22:34:22 1388805132
>>1388798
Не корми, это какой-нибудь мамкин криптоброкер. Открыл для себя tensorflow и pandas и думает что выиграл в программировании.
Аноним 25/04/19 Чтв 23:14:13 1388828133
>>1388805
>не корми
Судя по активности треда, раст либо идеальный и ни у кого не возникает ни одного вопроса при его использовании, либо он никому не нужен и в следующем треде надо позаимствовать шапку у D треда.

Так что я лучше осознанно покормлю
Аноним 25/04/19 Чтв 23:30:06 1388834134
>>1388828
>Судя по активности треда, раст либо идеальный и ни у кого не возникает ни одного вопроса при его использовании, либо он никому не нужен

..., либо он никому не нужен на борде для девочек-анимешниц, и серьёзные разговоры про раст нужно искать тут:
https://www.reddit.com/r/rust
https://www.reddit.com/r/rust_gamedev
https://stackoverflow.com/questions/tagged/rust
https://www.rust-lang.org/community

Ну то есть, реально, вариантов только три, и совершенное не ясно, какой из них имеет место быть в действительности.
Серьёзный вопрос растоёбам (не для детей) Аноним 25/04/19 Чтв 23:58:13 1388851135
Несложно показать, что задача статического управления памятью, как и статическая гарантия потокобезопасности в тьюринг-полных языках - неразрешимые задачи (сводятся к проблеме остановки). Именно поэтому в языках с полностью автоматическим управлением памятью используется динамическое управление - GC тупо чекает время от времени, какие объекты достижимы в данный момент времени.

Растоёбы утверждают, что в Расте корректность управления памятью чекается статически. Это означает две с половиной вещи:
1. Должно быть какое-то ограничение, иначе статический чекер просто не будет работать.
2. Должен быть способ обойти это ограничение, иначе некоторые корректные программы на Расте будет просто невозможно написать.
2.5 Этот способ должен быть не тайным знанием, тонким слоем размазанным по кодобазе, а сосредоточен в каком-то одном месте с большой красной надписью "ВНИМАНИЕ В ЭТОМ МЕСТЕ ВЫ ОТКЛЮЧАЕТЕ ВСЮ АВТОМАТИЧЕСКУЮ БЕЗОПАСНОСТЬ И ПЕРЕХОДИТЕ НА ТЁМНУЮ СТОРОНУ ([x] - Да я понимаю что делаю и согласен что все дальнейшие сегфолты - моя личная вина)". Обращение к этому место должно происходить крайне редко, потому что язык должен быть спроектирован так, чтобы всё работало на автомате, но в растокомьюнити должно быть очень четкое понимание, когда именно этим следует пользоваться.

Чтобы было понятнее, о чём я говорю, приведу пример для Агды. Агда гарантирует, что любая тайпчекнутая программа, написанная на ней, гарантированно завершается. Но это, очевидно, нельзя проверить для произвольной тьюринг-полной программы, а Агда - тьюринг-полный язык программирования. Поэтому в Агде есть специальная прагма TERMINATING, которая отключает termination checking в том месте, где это не может быть проверено автоматически, но программист гарантирует, что там всё в порядке. Как правило, это какие-то хорошо отлаженные библиотечные функции (не буду пиздеть, сам я не агдаёб, просто видел у них), т.е. в 99.999% в пользовательской программе эта прагма не используется, но агдаёбы очень хорошо понимают, где и зачем это надо применять.

Прошу фанбоев не постить методички про ownership и livetimes (с тем же успехом я мог бы почитать высеры крестоблядков про их смартпоинтеры), а умных растоёбов указать, какие именно ограничения использует Rust и привести пример программы, когда растовский чекер не способен понять, что память можно освобождать и вынуждает писать программу, которая будет хавать память бесконечно, а также тот самый способ отключить проверку. Пример должен быть где-то внутри стандартной библиотеки Раста, что-то мне подсказывает.
Аноним 26/04/19 Птн 00:02:05 1388856136
>>1388851
>Пример должен быть где-то внутри стандартной библиотеки Раста, что-то мне подсказывает.
В смысле пример отключения чекера, а не пример, который хавает память бесконечно)) ну вы поняли.
Аноним 26/04/19 Птн 00:54:01 1388875137
>>1388851
> иначе некоторые корректные программы на Расте будет просто невозможно написать.
Там всё возможно написать. Обычно unsafe (а именно эта штука и отключает borrow checker вместе с некоторыми другими проверками) используют ради пирформанса. Например можно использовать умный указатель Rc (или Arc для многопоточных приложений) [1] с подсчётом ссылок плюc Cell (если внутри хранится значение, которое будешь полностью изменять внутри) или RefCell (если хранится ссылка или структура, которую полностью менять нет смысла) [2]. Но это всё будет медленней, чем работать со ссылкой напрямую, если ты точно знаешь время её жизни и можешь вручную её уничтожить. Пример: linked list, который можно сделать как через (A)Rc так и напрямую через unsafe (вот тут разжевывается подробно с кучей как safe, так и unsafe примеров: [3]).

Проще говоря корректные программы всегда можно написать на расте, просто часть этих проверок будет пересена (но только если ты сам это захочешь, автоматически в расте ничего не делается) из компил-тайма в рантайм, что потенциально сделает программу медленней.

> Этот способ должен быть не тайным знанием, тонким слоем размазанным по кодобазе, а сосредоточен в каком-то одном месте с большой красной надписью "ВНИМАНИЕ В ЭТОМ МЕСТЕ ВЫ ОТКЛЮЧАЕТЕ ВСЮ АВТОМАТИЧЕСКУЮ БЕЗОПАСНОСТЬ И ПЕРЕХОДИТЕ НА ТЁМНУЮ СТОРОНУ
Целые книги по unsafe расту пишут (причём сами разработчики): [4].

[1]: https://doc.rust-lang.org/std/rc/index.html
[2]: https://doc.rust-lang.org/std/cell/index.html
[3]: https://rust-unofficial.github.io/too-many-lists/index.html
[4]: https://doc.rust-lang.org/nomicon/README.html
Аноним 26/04/19 Птн 01:24:53 1388893138
>>1388851
Азы ансейфа описываются в каждом мануале по расту, для глубокого понимания есть куча книг.

Если ты не в курсе про него значит ты даже вики-статью про Раст не осилил, и объяснять тебе что-то потеря времени.
Аноним 26/04/19 Птн 01:43:52 1388899139
>>1388875
>Там всё возможно написать. Обычно unsafe (а именно эта штука и отключает borrow checker вместе с некоторыми другими проверками) используют ради пирформанса.

Не-не-не. Должен быть пример не ради пирформанса, а именно пример, в котором чекер принципиально не способен работать. Т.е. пример, в котором чекер будет вынуждать тебя не освобождать память вплоть до завершения программы и потенциально хвавать память бесконечно, при том, что сама программа корректная и может уложиться в конечную память.

Когда мы говорим о перформансе, мы утверждаем, что можем освобождать память пусть не оптимально, но существует некая аппроксимация, позволяющая гарантированно это сделать за конечное число шагов. Так вот, я утверждаю, что такой аппроксимации не существует. Ведь если бы она была, то проблема остановки была бы разрешима, пусть даже за хулион шагов, что не применимо на практике, но теоретически, она бы была решаемой. А цимес в том, что она даже теоретически неразрешима. Ну или я что-то не понимаю в управлении памятью, тогда опровергните мою гипотезу.

>Целые книги по unsafe расту пишут
Спасибо, прочитаю.
Аноним 26/04/19 Птн 01:50:08 1388900140
>>1388899
> а именно пример, в котором чекер принципиально не способен работать.
Я ж тебе говорю, в расте есть возможность переносить чекер в рантайм. Единственное место где подсчёт ссылок работать не будет - если структура ссылается на саму себя. Всё.
Аноним 26/04/19 Птн 08:56:50 1388946141
>>1388542
ну так два метода с одинаковой сигнатурой замыкания. вопрос был про то, что в одном случае str => str работает, в другом выдает ошибку компиляции

>>1388796
.filter(|line| line.contains(query))
это ведь канает

>>1388543
после решарперовского интеллисенса на русте совсем грустно гуглить документацию. посеба
Аноним 26/04/19 Птн 09:25:25 1388961142
>>1388899
>Ну или я что-то не понимаю в управлении памятью, тогда опровергните мою гипотезу.

Ради пирфоманса освобождать память не нужно вообще. Нужно выделять паять большими кусками аля 512метров, гиг, джва гига и уже поверх этих кусков писать свой кастомный аллокатор/переиспользовать объекты.
Аноним 26/04/19 Птн 09:35:53 1388964143
>>1388961
Тогда уж лучше свой собственный сборщик мусора писать, иначе пирформанс может падать из-за постоянных аллокаций при создании объекта и деаллокаций при уничтожении, а специализированный GC может маленькие объекты создавать в специальном месте не выполняя аллокации вообще, а освобождать объекты в отдельном треде.
Аноним 26/04/19 Птн 10:23:48 1388980144
>>1388796
> | a, b | {magic(a, b)} - кложура
> | a, b | magic(a, b) - хуйня какая-то

это одно и то же
Аноним 26/04/19 Птн 14:02:03 1389091145
>>1388964

Уничтожение объекта так же происходить не должно, вместо этого ссылка на него/индекс массива в котором он лежит отправляется в стек "свободных объектов", откуда фабрика его потом пытается взять и повторно инициализировать конструктороподобным паблик методом.
Аноним 26/04/19 Птн 18:52:45 1389302146
Аноним 26/04/19 Птн 18:56:51 1389307147
482052041.jpg (52Кб, 900x506)
900x506
Аноним 26/04/19 Птн 21:38:02 1389406148
Аноним 27/04/19 Суб 01:07:09 1389535149
>>1389406
Перед тем, как заходить в этот тред, надо включать мозг. Те, кто этого не делают, будут посланы нахуй быстрее, чем они успеют сказать "не понял".
Аноним 27/04/19 Суб 01:16:31 1389538150
>>1389535
Полегче со словами, токсик. Иди проверь свои привилегии.

Кстати, мозилла закрывает IRC-чятик для всех своих продуктов, потому что там было слишком много харрасмента и их слишком сложно модерировать: https://blog.rust-lang.org/2019/04/26/Mozilla-IRC-Sunset-and-the-Rust-Channel.html

Этот токсичный тред тоже не мешало бы закрыть (ну или хотя бы поставить несколько модераторов с phd по гендерным наукам). Язык программирования rust заслуживает большего.
Аноним 27/04/19 Суб 08:02:39 1389582151
>>1389538
>проверь свои привилегии
Но как? я же чёрная трансуха-лесби..
Аноним 27/04/19 Суб 09:27:59 1389596152
>>1389582
А вы точно при рождении были афро-русской? Может вы были белой, и просто покрасили лицо в афро-русский цвет? В таком случае это называется блекфейс и это очень привилегированно и плохо.
Аноним 27/04/19 Суб 10:53:23 1389649153
>>1389535
> надо включать мозг

Если под этим ты понимаешь "знать рандомного хуесоса, сделавшего очередную хуйню", то у меня для тебя плохие новости...
Аноним 27/04/19 Суб 18:34:48 1390036154
>>1389649
Мне похуй что ты про меня думаешь. Твои рецензии и замечания не стоят нихуя.
Аноним 27/04/19 Суб 18:35:49 1390038155
>>1390036
Твои стоят еще меньше.
Аноним 27/04/19 Суб 18:36:43 1390040156
>>1389538
С другой стороны, нахуй их сеть ненужна никогда была, есть же фринод.
Аноним 27/04/19 Суб 21:30:39 1390180157
>>1388798
Язык ради языка.

Я вообще пишу под гейось и ведро. Последний год наблюдаю за рустом, одни поделки уровня б, прикрываемые под инновационными словами development.

Максимум зачем он нужен, так это написать сортировочку пузырьком. Реальные решения уже давно реализованы и имеют 30к+ на гите.
Аноним 27/04/19 Суб 22:18:01 1390210158
>>1390180
Даже лень придумывать язвительный комментарий

https://github.com/cloudflare/boringtun
https://github.com/BurntSushi/ripgrep
https://www.wired.com/2016/03/epic-story-dropboxs-exodus-amazon-cloud-empire/
https://www.rust-lang.org/static/pdfs/Rust-npm-Whitepaper.pdf
https://www.rust-lang.org/static/pdfs/Rust-Chucklefish-Whitepaper.pdf
https://www.rust-lang.org/static/pdfs/Rust-Tilde-Whitepaper.pdf
https://hacks.mozilla.org/2019/02/rewriting-a-browser-component-in-rust/
https://www.reddit.com/r/rust/comments/bhtuah/production_deployment_of_rust_in_hft_system_at/

+ еще куча блокчейн и финтех стартапов, внутренние проекты многих контор (https://prev.rust-lang.org/en-US/friends.html). Короче, подотрись и иди назад в свой яблочный загон.
Аноним 28/04/19 Вск 00:00:30 1390291159
>>1390180
>одни поделки уровня б, прикрываемые под инновационными словами development.

Редхат, мозилла и парити расплакались и уползли обратно под шконку, прихватив с собой свои поделки, ведь мобильный программист Олег, занимающийся поддержкой "Копателя", поставил их на место.
Аноним 28/04/19 Вск 03:10:25 1390381160
Аноним 28/04/19 Вск 11:38:21 1390467161
>>1388851
>Но это, очевидно, нельзя проверить для произвольной тьюринг-полной программы, а Агда - тьюринг-полный язык программирования

Чистый Раст без unsafe (включая код стандартной библиотеки) не является Тьюринг-полным языком. Если не использовать рекурсию, то он вообще регулярный, т.е. сводится к конечному автомату, а если использовать, то бесконтекстный. Следовательно, проблема останова для рекурсивно-перечислимых языков к нему не применима. Ебать, мне наконец-то пригодились знания из книги по формальным грамматикам, спасибо Абу.

Из этого следует, что борроучекер не работает в случае, когда нам нужны возможности, выходящие за рамки контексто-свободных языков. Конкретно - когда нам нужно создавать объекты произвольного объёма и структуры. В таких случаях нужно создавать абстракции, которые позволяют свести работу с произвольными структурами к работе над конечным числом биндингов. Например, итератор по вектору - это структура, позволяющая коду работать с коллекциями неизвестного размера, но сама по себе состоит из в точности двух указателей, поэтому может спокойно анализироваться борроучекером.

>и привести пример программы, когда растовский чекер не способен понять, что память можно освобождать

Всё, что выделяется не на стеке, под ответственностью программиста или создателя либы. Если программист не определил деструктор, то будет утечка, если где-то скопировал указатель, но не сказал компилятору, то будет висячий указатель.
Аноним 28/04/19 Вск 18:44:10 1391088162
Аноним 28/04/19 Вск 19:36:52 1391150163
правильно ли я понимаю, возможности зафорсить погромиста создавать экземпляр моей структуры через ассоциированную функцию нет (иными словами, скрыть конструктор, сделать его приватным)?
Аноним 28/04/19 Вск 20:10:22 1391168164
>>1390038
ОК, еще инстайты есть у тебя?
Аноним 28/04/19 Вск 22:58:39 1391262165
>>1391150
Ну ты можешь сделать поля своей структуры не публичными, тогда инстанс такой структуры не создать через фигурные скобочки, только через функцию.
Аноним 28/04/19 Вск 23:32:42 1391275166
>>1391150
В рамках одного модуля такой возможности нет.
В случае разных модулей, если у структуры есть непубличные поля, то инстанцировать её напрямую нельзя. Отсюда растут несколько соглашений:
1) Если инстанс можно создать без параметров, то это делается через трейт Default
2) Основной конструктор называют Foo::new
3) Часто доп. конструкторы называют Foo::with_bar
Аноним 29/04/19 Пнд 11:17:29 1391436167
>>1391275
>3) Часто доп. конструкторы называют Foo::with_bar

Бля, я тут как раз читал одни сырцы и не мог понять такую конструкцию:
world
.create_entity()
.named("Plant")
.with(PlantTag)
.with(collider::Circle::new(0.8))
.with(mesh.clone())
.with(handle.clone())
.with(transform)
.build();

Я так понимаю всё что после имени это что-то типа ступенчатого конструктора?

Если интересно, это какое-то студенческое поделие на аметисте.
Аноним 29/04/19 Пнд 11:26:30 1391443168
>>1391436
> Я так понимаю всё что после имени это что-то типа ступенчатого конструктора?
Это паттерн builder. Очень популярен в Java.
Аноним 01/05/19 Срд 18:16:32 1392678169
wtfnigger1.png (9Кб, 564x105)
564x105
wtfnigger2.png (20Кб, 589x158)
589x158
Что он имеет в виду?
Аноним 01/05/19 Срд 19:06:48 1392714170
>>1392678
я не уверен, что у инстанса нужно указывать его "ссылочность". попробуй _ => { Err }.
или &_a => { Err } если я не прав
Аноним 02/05/19 Чтв 02:31:35 1392879171
Аноним 02/05/19 Чтв 13:36:03 1392957172
>>1392879
Ты ебанат? Ты бы ещё тупо на аметист ссылку скинул.
Аноним 02/05/19 Чтв 20:23:38 1393142173
frictionscheme.png (10Кб, 640x400)
640x400
Дващ, насколько правильно я вообще подхожу к задаче:
тележка имеет некоторую скорость V в некоторый момент времени t0. На тележку действует сила трения качения в продольной оси и сила трения скольжения перпендикулярно ей. Найти вектор скорости тележки в некоторый момент времени t1 = t0+dt.

Я вот схему захуярил - чёрный это скорость V (зелёный - neg(V), просто штоб было), красный - направление продольной оси тележки, её "перед". Поносно-жёлтый - это трение, трение качения маленькое, а трение скольжения большое.

У меня было решение на num через комплексные числа, но я пытаюсь перепилить на nalgebra, и по пути может оптимизировать, если есть что-то умнее.

Вот на num (self.friction_coll - продольное трение, self.friction_orth - поперечное, self.heading - угол между передом тележки и x axis):

fn calculate_velocity_after_friction(&self, vel: Complex<f64>, dt: f64) -> Complex<f64>{
let coll_f = -Complex::from_polar(&(self.friction_colldt),
&self.heading);
let orth_f = Complex::from_polar(&(self.friction_orth
dt),
&(self.heading+(std::f64::consts::PI/2.0)));
let denom: f64 = coll_f.reorth_f.im - orth_f.recoll_f.im;
let mut a =
(coll_f.revel.im - vel.recoll_f.im)/denom;
let mut b =
- (orth_f.revel.im - vel.reorth_f.im)/denom;
if a > 0.0 {
a = -a;
}
if b > 0.0 {
b = -b
}
if a < -1.0 {
a += 1.0;
} else {
a = 0.0;
}
if b < -1.0 {
b += 1.0;
} else {
b = 0.0;
}

aorth_f + bcoll_f
}
Аноним 02/05/19 Чтв 20:25:38 1393146174
Сука, макаба сожрала знаки умножения
Аноним 03/05/19 Птн 00:41:06 1393233175
>>1393142
Код не понял и не вчитывался, линалом в расте не пользовался, но было дело в других языках. Мой совет -- делай так, как ты бы делал в школе на уроке физики.

У тебя есть начальное положение s0, начальная скорость v0 и уже посчитанные силы. Считаешь результирующую силу F, это ведь просто сумма всех векторов. Считаешь вектор ускорения как a = F/m. Интегрируешь самым простым методом Эйлера новую скорость (v = v0 + dt * a). То же с положением. Раз ты в физике -- не выходи за пределы домена физики.

Боюсь представить, как ты силы трения вычислял. Там же проекции брать надо, скалярные произведения делать, а у тебя в коде даже функции нормирования отдельной нет.
Аноним 03/05/19 Птн 00:51:00 1393238176
>>1393233
Алсо, можешь посмотреть https://youtu.be/LoTRzRFEk5I по теме
Я сам давно смотрел это видео, но обычно Кейси довольно доходчиво всё объясняет.
Аноним 03/05/19 Птн 10:31:58 1393316177
у Programming Rust нет дополненных изданий? гугл ведет в O'Reilly и книге декабря 17го. наверное, в языке с тех пор что-то поменялось
или после обосранного итт растбука Proramming стоит прочитать прям совсем по касательной, дабы освежить/улучшить понимание некоторых вещей?
Аноним 03/05/19 Птн 10:54:01 1393321178
>>1393233
>>1393233
>Считаешь результирующую силу F, это ведь просто сумма всех векторов.

Ты простой такой, аж зубы сводит.
Подумай на досуге, что если по одному из измерений вычисленное изменение скорости за dt будет больше чем имеющаяся скорость? Тележка покатится в обратную сторону под действием силы трения? Норкоман?

>Боюсь представить, как ты силы трения вычислял. Там же проекции брать надо, скалярные произведения делать, а у тебя в коде даже функции нормирования отдельной нет.

Это и есть отдельная функция. Нахуя мне выносить нормирование куда-то ещё, если оно мне не нужно больше нигде? Понадобится - отрефакторю.

Короче, гуляй нахуй отсюда, профессор "код не читал, но осуждаю".




Аноним 03/05/19 Птн 10:56:53 1393323179
>>1393238
Я знаю кинематику получше тебя, осмелюсь предположить. Можешь засунуть свои школьные видео себе в жопу.

Спрашивал, есть ли более умный способ, чем разложить вектор на базис и вычислить поэлементную векторную сумму.

Вроде прикола с квейком, где они извлечение корня заменили умножением и сложением.

Нет, школофизики меня будут векторам учить.
Аноним 03/05/19 Птн 21:59:12 1393574180
>>1393321
>>1393323
>код не читал, но осуждаю
Потому что твой говнокод трудно читать, делать мне на дваче нечего больше. Да и четыре условия у тебя в функции -- бранч предиктор охренеет и именно на нём твоя функция и тормозила бы. Если бы у тебя были нормальные функции для работы с векторами, ты бы сделал как-нибудь так:
orthPart = min(project_len(V, orth_f) - len(orth_f), 0) norm(orth_f)
collPart = min(project_len(V, coll_f) - len(coll_f), 0)
norm(coll_f)

По мне, работать с голыми координатами, когда у тебя есть нормальная геометрическая интерпретация - неблагодарное дело. Без бранчей, кстати SIMD-зируется - вот тебе ещё и (минимум) трёхкратное увеличение производительности
Аноним 03/05/19 Птн 22:51:16 1393600181
>>1393574
И вот так при помощи одного вменяемого ответа ты превратился из прохожего мудака в уважаемого господина.
Аноним 03/05/19 Птн 23:13:07 1393604182
Mutable reference это то же самое что и unique_ptr в крестах?

Крестушок
Аноним 03/05/19 Птн 23:28:11 1393608183
>>1393604
Хотя я уже вижу различия, при создании std::unique_ptr из другого unique_ptr, мы можем сделать borrow в С++, но когда созданный unique_ptr уничтожится - reborrow не произойдёт. Так что это не полное соответствие.

Крестушок
Аноним 04/05/19 Суб 00:52:26 1393650184
>>1393608
>при создании std::unique_ptr из другого unique_ptr, мы можем сделать borrow в С++,
Ты хотел сказать, мы обязаны сделать move? Причем здесь borrow?
Аноним 04/05/19 Суб 19:32:16 1393971185
>>1393650
Да, я чёто перепутал концепции. Блин, лучше не пытаться маппить это всё на уже известный мне С++, получается фигово.
Аноним 04/05/19 Суб 19:41:53 1393986186
В общем хочу попробовать раст, сам я фронтендер, но чето заебало, хочу экзотики. Что интересного можно поделать на расте то?
Аноним 04/05/19 Суб 20:04:33 1394004187
>>1393986

Операционку написать.

Реализацию TCP/IP стека.

Любым байтоёбством заняться, которое тебе по душе.
Аноним 04/05/19 Суб 20:26:40 1394018188
>>1393986
Да ты сначала задачи порешай, после жса охуеешь, базарю. Я после питона охуеваю и пишу по 3 часа то, что на питоне за 10 минут наебенил бы.
Аноним 04/05/19 Суб 20:39:18 1394028189
>>1393986
Для начала растбук прочитай/прорешай.
Если не знаешь английский на достаточном уровне - не лезь, материалов на русском мало.
Аноним 04/05/19 Суб 22:12:11 1394100190
>>1393986
> хочу попробовать раст
> хочу экзотики

Кхэм, кхм, кхе, кхе, ...., сделай фронтенд
Аноним 04/05/19 Суб 23:11:42 1394156191
Делаю тут веб-сокет сервер с использованием крейта websocket, и столкнулся с несколькими проблемами:

Для того чтобы броадкастить полученное сообщение всем подключенным клиентам, мне нужно где-то хранить всех подключенных клиентов, я использую HashMap с Arc и RwLock чтобы безопасно шарить его между тредами:

let mut clients = Arc::new(RwLock::new(HashMap::new()));

Далее, для каждого входящего соединения создаю новый тред:

for connection in server.filter_map(Result::ok) {
let mut connections = connections.clone();
thread::spawn(move || {
...
}
}

Внутри каждого треда я делаю accept подключения, получаю IP клиента, и разбиваю подключение на две части - приемник и отправщик (так сделано в крейте):

let client = connection.use_protocol("ws-test").accept().unwrap();
let ip = client.peer_addr().unwrap();
let (mut receiver, mut sink) = client.split().unwrap();

На этом этапе у меня есть sink, соответственно я могу заполнить мой HashMap для использования в дальнейшем:

connections.write().expect("RwLock is poisoned").insert(ip, sink);

Тут появляется первая проблема, т.к. происходит ownership transfer переменной sink в HashMap. Если передавать ссылку, то компилятор говорит что borrowed value does not live long enough, очевидно потому что HashMap находится за пределами треда, а значение которое я пытаюсь передать по ссылке умрет вместе с тредом. Это вызывает проблемы далее.

После этого, если сообщение на сервер пришло, я пытаюсь отправить его всем клиентам которые есть в connections вот таким образом:

for (_, client) in connections.read().expect("RwLock is poisoned").iter() {
client.send_message(&message);
}

Компилятор выбрасывает ошибку: `client` is a `&` reference, so the data it refers to cannot be borrowed as mutable
Как я понял, client это не mutable reference, и из-за этого переменная cannot be borrowed as mutable.
Я пробовал поменять iter() на iter_mut(), но тогда возникает та же ошибка, но в другом месте (где вызывается iter_mut():

55 | for (_, client) in connections.read().expect("Posion").iter_mut() {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ cannot borrow as mutable

На этом моменте я зашел в тупик, не понятно что я делаю не так? Почему при попытке вызвать iter_mut() borrowing недоступен? Извиняюсь если очень тупой вопрос, учить язык я начал недавно.
Аноним 04/05/19 Суб 23:23:03 1394175192
>>1394156
Сам спросил, сам ответил, и вопрос действительно глупый. Поменял connections.read() на connections.write() и все заработало. Я же правильно понял что read() не работал из-за того что это чтение, соответственно возвращается immutable reference, а функции send_message из моего кода нужен был &mut self?
Аноним 05/05/19 Вск 13:18:09 1394439193
>>1394004
>Любым байтоёбством заняться, которое тебе по душе
>байтоёбством
Маняфантазии подъехали. Впрочем, ничего удивительного в пидортреде не вижу. Раст как был для 0.5% задач создан, так его и используют. Больше он нигде и ненужен, особено впечатляют маняпроекты с версиями 0.0000012141412 с припиской build with rust. Тьфу блять, аж противно. Интересно, что зашкварней, писать такое говно на хуясте, писать бек на пхпдерьме или жрать говно вместе с жс? Оставляю на ваше усмотрение, инфантильные ублюдки.
Аноним 05/05/19 Вск 13:29:09 1394443194
>>1394439
Твои предложения? Сеплюхплюх?
Аноним 05/05/19 Вск 13:30:24 1394444195
>>1394439
Иди санитайзеры накати, чмоха.
Аноним 05/05/19 Вск 14:32:43 1394476196
>>1394439
Ты припёрся хуй пойми откуда специально, чтобы рассказать какое раст говно и какие мы инфантильные ублюдки?

Ебать пичот.
Аноним 05/05/19 Вск 14:32:54 1394477197
>>1394444
Только memory-safety козырять и можете.
Аноним 05/05/19 Вск 14:43:50 1394483198
Аноним 06/05/19 Пнд 01:40:28 1394694199
>>1394477
>только киллерфичами козырять и можете
Аноним 06/05/19 Пнд 17:49:19 1394824200
Ананасы и ананаски. Вопрос: а что, собсно, мешает нам расшарить данные между тредами в read-only режиме? И, если что, конпелятор пусть ругается на попытку записи в расшаренные данные. Я, конеш, понимаю, что можно клонировать и всё такое - но это лишние действия и не все структуры это поддерживают.
Вот хочу я вектор расшарить - в чём проблема одолжить его треду, а ниже перехватывать попытки записи (но не чтения) в одолженное?
Аноним 06/05/19 Пнд 19:10:50 1394845201
>>1394824
>а что, собсно, мешает нам расшарить данные между тредами в read-only режиме?

ничего
Аноним 06/05/19 Пнд 20:14:01 1394864202
>>1394845
Зацени пример. Типа, посылаешь ты вектор в тжред, тжред из него чего-нить печатает, а тем временем в главном треде ты тоже чего-нить из него печатаешь.
Аноним 06/05/19 Пнд 20:41:02 1394873203
Screenshot2019-[...].png (42Кб, 677x123)
677x123
Аноним 06/05/19 Пнд 20:52:32 1394878204
>>1394873
Ну, а если типа прикрутить к объекту счётчик одалживаний, типа как монадой, и менять его при каждом новом одалживании. Кому не нужен - пусть уменьшает счётчик, если, внезапно, 0, то удаляем объект. Или это уже gc получится?
Arc/Mutex какое-то дно ебаное и оверкилл, когда нужно только чтение в потоках.
Аноним 06/05/19 Пнд 23:23:59 1394925205
>>1394878
Arc + Mutex и есть счётчик отдалживания.
Аноним 07/05/19 Втр 00:01:09 1394943206
Аноним 07/05/19 Втр 07:33:35 1395014207
Во, >>1394943, спасибо. А то я чувствую, что лочить каждый раз перед всего лишь чтением, это не дело. Сцук, а примерах почти везде Arc+Mutex.
Аноним 07/05/19 Втр 11:03:38 1395067208
>>1394943
Я второй день учу раст, и я не понял - это ты что, создаёшь по отдельной копии на тред?
Аноним 07/05/19 Втр 11:15:41 1395074209
Аноним 07/05/19 Втр 14:46:40 1395229210
Двач, обесни, что это за синтаксис такой:

let mut physic_world = world.write_resource::<::resource::PhysicWorld>();

дженерик функцию я пойму, там func<T>(a: T), но что такое бле func::<T>()?
Аноним 07/05/19 Втр 14:52:25 1395235211
Аноним 08/05/19 Срд 13:58:47 1395659212
ebites.jpeg (55Кб, 720x717)
720x717
Котоны, кто-нибудь следит за аметистом? Че у них там происходит? Они опять перепиливают подсистемы и сломают все к следующему релизу?
Аноним 08/05/19 Срд 14:42:18 1395680213
>>1395659
Я его ковыряю вторую неделю, но следить не слежу. Откуда твоя информация?

Я только слыхал что они в следующем релизе вроде как вулкан выкатывают.
Аноним 08/05/19 Срд 14:46:36 1395681214
>>1395680
Потому что каждый релиз "мы все нахуй переделали".
Сначала они поменяли мат. либу. Потом вроде как перепилили половину апи. И вот скоро опять перепилят с вулканом или че там будет.

А делать что-то на либе, которая каждый релиз ломает обратную совместимость мне совершенно не хочется. Я так уже с ggez поебался.

Хочется понять какие у них планы и когда ожидается стабилизация.
Аноним 08/05/19 Срд 14:57:18 1395683215

>>1395681
>Сначала они поменяли мат. либу.

То есть ты бы предпочёл чтобы они остались на ящике, который перестали поддерживать что ли? Ебать психопат.

>А делать что-то на либе, которая каждый релиз ломает обратную совместимость мне совершенно не хочется.

Добро пожаловать в мир early-софта, всё сырое и меняется, ищешь стабильности - пиздуй в ANSI C.
Аноним 08/05/19 Срд 15:01:57 1395685216
>>1395683
Нет, я за то чтобы они на главной повесили ссылку на план, если он у них есть, чтобы я понимал когда ожидать стабильный релиз и каков прогресс. Например вот так: https://prod.teamgantt.com/gantt/schedule/?ids=843041&public_keys=eXjoWRdx8pM7&zoom=d100&font_size=11&estimated_hours=0&assigned_resources=0&percent_complete=0&documents=0&comments=0&col_width=255&menu_view=0&resource_filter=0&name_in_bar=0&name_next_to_bar=1&resource_names=0#user=&company=&custom=&date_filter=&hide_completed=false&color_filter=&ids=843041

Чтобы я не спрашивал на двачах или в дискорде, а мог зайти раз в месяц и посмотреть как прогресс.
Аноним 08/05/19 Срд 15:19:03 1395692217
>>1395685
>чтобы я понимал когда
>Чтобы я не спрашивал

Не, это тебе в платные конторы. Очень немногие опенсорсные поделия могут себе позволить такую степень серьёзности, чтобы прям тебе всё было удобненько, сорян.

Было бы круто, но нет, нихуя, ожидать серьёзного плана с аннаунсментами и майлстоунами от трёх с половиной анонимных школьников - неее...
Аноним 08/05/19 Срд 15:22:55 1395693218
>>1395692
Этим анонимным школьникам заслали бабла. Ну и на всякий случай, я ничего не требую, а лишь говорю что для популяризации проекта было бы неплохо иметь в легком доступе подобную информацию. Хотя бы в минимальном виде: "релиз 0.11 ожидается через 3 месяца, и мы опять сломаем обратную совместимость, сорян пацаны".
Аноним 08/05/19 Срд 19:36:58 1395815219
https://boats.gitlab.io/blog/post/await-decision/
Ну что, какова вероятность что вот эту няшность загнобят сярпо/жсниггеры?
Лично мне что-то прям шишка стоит от постфиксного await. Показал дружку и он грит, вообще не читаемо
Аноним 08/05/19 Срд 19:41:47 1395817220
>>1395815
Думаю вероятность этого крайне мала.
Аноним 08/05/19 Срд 22:10:35 1395916221
>>1395815
> вообще не читаемо

Он прав же. Вообще хуевое решение, как кажется. И аргументировать это в том числе тем, что "подсветка в иде поможет" это такое себе. Хуевый язык, если без подсветки писать нельзя.

Может я читал через жопу, но в статье так и не увидел чем же постфиксный вариант лучше.
Аноним 08/05/19 Срд 22:13:47 1395919222
Анон, такое дело. Есть у нас T, который не реализует Copy или Clone (а может и реализует, но нам хочется дженерик). И тут я, такой хитрец, хочу сделать
let Vec<Option<T>> = vec![None; 999];
и тут оно меня радует
the trait `std::clone::Clone` is not implemented for `Entry<T>
бля, сцук, конпилеру какое дело, чего там T имплементит, когда у нас одни None? Я бы не бухтел, но оно же даёт сделать
let Vec<Option<T>> = Vec::with_capacity(999);
Что мешает сразу при создании нонами забить и всё?
Аноним 08/05/19 Срд 22:15:35 1395921223
проебался с объявлением переменной, но все поняли
Аноним 08/05/19 Срд 22:20:25 1395928224
>>1395919
https://doc.rust-lang.org/std/macro.vec.html
> This will use clone to duplicate an expression, so one should be careful using this with types having a nonstandard Clone implementation. For example, vec![Rc::new(1); 5] will create a vector of five references to the same boxed integer value, not five references pointing to independently boxed integers.
Аноним 08/05/19 Срд 22:23:07 1395932225
Аноним 08/05/19 Срд 22:23:45 1395934226
пост фак ю
Аноним 08/05/19 Срд 22:30:19 1395947227
срси
Аноним 09/05/19 Чтв 09:44:23 1396250228
>>1395916
ну типа шо оператор ?, который будет юзаться практически всегда с асинками сделает из раста лисп. а с постфиксом чейнить foo().await.bar().await станет чуть читабельней
Аноним 09/05/19 Чтв 09:49:21 1396251229
охуенный растбук: книга пишет "вот вам код, но он не скомпилится потому, что а, б, ц. и надо его подправить". но он берет и компилится
Аноним 09/05/19 Чтв 10:03:23 1396255230
Ооо
Аноним 09/05/19 Чтв 10:49:48 1396269231
>>1396250
Но ведь есть нормальный вариант await pizdets. Насколько мне известно, оно сделано так почти везде (питон, джс, шарп из того, что трогал), и выглядит оно, ну, нормально. Собственно хули бы так не сделать то? Нахуй выебываться и делать какой-то специальный кейс, где у нас ебучий .await синтаксис?
Аноним 09/05/19 Чтв 11:38:14 1396290232
Аноним 09/05/19 Чтв 15:53:39 1396421233
>>1396269
Мне лично вообще-то нравится угашенность Раста, но вот этого пидора двачану.

Некоторые решения используются везде просто потому что они лучше всего подходят к задаче.

Не надо без нужды усложнять людям перекат из других языков.
Аноним 09/05/19 Чтв 16:02:32 1396422234
>>1396290
Если вкратце, то использование префиксного варианта выглядит уебищно в сочетании с обработкой ошибок:

(await future)?;
(await future).context("An error occurred.")?;

А т.к. асинк почти всегда связан с IO, то почти в любой асинк операции будет обработка ошибок.

future.await?.foo.await?
vs
(await (await future)?.foo)?
Аноним 09/05/19 Чтв 16:09:39 1396423235
>>1396422
А зачем он вообще нужен? Как раньше без него справлялись?
Аноним 09/05/19 Чтв 16:14:55 1396424236
>>1396423
>Как раньше без него справлялись?
Кое-как.
Аноним 09/05/19 Чтв 16:20:41 1396425237
Аноним 09/05/19 Чтв 16:35:16 1396438238
Аноним 09/05/19 Чтв 16:40:49 1396442239
>>1396438
Ну сравни синтаксис на промизах из жс с async/await там же.
Тут такая же история, только текущая асинхронщина еще менее читабельная.
Аноним 09/05/19 Чтв 17:55:37 1396485240
>>1396423
в дотнете примитивами (не очень) синхронизации и ручным пердолингом потоков. выглядит так себе, хотя для большинства случает синхронная версия шустрее асинхронной из-за отсутствия переключения контекста
Аноним 10/05/19 Птн 00:55:54 1396633241
Нормально ли в расте вытаскивать набор символов из строки просто захерачив HashSet из итератора по символам?
Аноним 10/05/19 Птн 01:20:16 1396637242
>>1396633
Я например в языке недавно, но чёт не могу представить, почему бы это было ненормально. Везде и всегда так делали, разве нет?
Аноним 10/05/19 Птн 11:32:05 1396761243
2019-05-10-1031[...].png (381Кб, 1692x1818)
1692x1818
Аноним 10/05/19 Птн 13:50:22 1396852244
>>1396761
Ого, разница почти в два раза. Так и думал, что есть какой-то более оптимальный способ. Откуда вот его взять надо было? Не измерять же время каждый раз -- больно много телодвижений. По питону вот для таких задач часто в книгах пишут, что быстрее работать будет или просто как лучше сделать, потому что, мол, питон вообще не про производительность, а лапша будет выглядеть куда хуже, чем просто запилить set. А тут как быть? Не помню, чтобы видел что-то такое в растбуке.
Аноним 10/05/19 Птн 13:52:34 1396856245
2019-05-10-1042[...].png (170Кб, 2017x1882)
2017x1882
>>1396852
Для этого нужно изучать матчасть.
У способа с сетом сложность o(n), в то время как у вектора с сортировкой как минимум o(n lgn). То есть в теории сет быстрее, но на малых n вектор дает преимущество. Это не привязано к языку особо.
Аноним 10/05/19 Птн 13:59:17 1396865246
>>1396761
а зачем тебе там сортировка была?
Аноним 10/05/19 Птн 14:03:26 1396873247
Аноним 10/05/19 Птн 14:08:41 1396880248
>>1396873
так и знал, лул

в качестве альтернативы (правда, затратной по памяти) можно было использовать хэшсет рядом с вектором, чтобы не форсировать сложность дистинкта в N х log(N)
Аноним 10/05/19 Птн 14:10:17 1396882249
>>1396880
Что? Зачем? Хэшсет это второй способ, который решает задачу целиком (смотри код >>1396761).
Аноним 10/05/19 Птн 14:36:31 1396911250
>>1396882
я имею ввиду задачу дедупликации для вектора решать путем создания хэшсета. в реализации dedup(), а не подразумевать, что вызывающий код накатил sort() сперва
Аноним 10/05/19 Птн 14:54:03 1396937251
>>1396911
Это не имеет никакого смысла.
Аноним 10/05/19 Птн 14:56:26 1396941252
>>1396937
ну пчему. для задачи когда у меня есть здоровенный вектор и мне нужно получить тот же самый вектор без дубликатов и без перестановки элементов. это рядовая задача на каких-нибудь шарпах, например
Аноним 10/05/19 Птн 15:00:24 1396943253
Аноним 10/05/19 Птн 15:19:33 1396960254
>>1396943
а, ну бывает
хоть это и сторонний крейт, лол. но для опенсорсного языка это не так уж и удивительно
Аноним 10/05/19 Птн 17:38:57 1397074255
>>1396856
То есть, лезть в исходники и смотреть реализацию? Сложна.
Интересно, начиная с какого размера хэшсет быстрее будет?
Аноним 10/05/19 Птн 17:57:28 1397094256
>>1397074
Если вкратце, то не еби мозг. Сделай как проще и читабельней.
Аноним 12/05/19 Вск 17:05:26 1398406257
Аноны, вопросы на миллион потоков
1. как и почему Arc реализует Send? Ведь перед передачей в другой тред нужно сделать clone, иначе работать не будет, а после clone это уже другой экземпляр, вроде как.
2. вот есть у меня какая-то структура, я сказал конпелятору, что вот, мол
unsafe impl Send for MyStruct {}
что, уже можно передавать в потоки, не оборачивая в Arc? Ну, на чтение, хотя бы.
Аноним 12/05/19 Вск 17:19:58 1398416258
>>1396761
Поделись цветовой темой терминала.
Аноним 12/05/19 Вск 17:23:03 1398421259
>>1396852
> Не измерять же время каждый раз -- больно много телодвижений.
Как раз это и советуют везде.
Аноним 12/05/19 Вск 19:29:25 1398513260
>>1398406
>после clone это уже другой экземпляр, вроде как
Это всего лишь другой экземпляр указателя, который инкрементирует внутренний счетчик ссылок (Arc - atomic Rc, Rc - reference counter).
>что, уже можно передавать в потоки, не оборачивая в Arc?
Можно, но лучше не стоит. Многопоточное чтение будет работать нормально только со значением, которое не меняется.
Аноним 12/05/19 Вск 20:39:15 1398597261
Аноним 12/05/19 Вск 21:41:19 1398645262
Аноним 13/05/19 Пнд 17:48:32 1399125263
Screenshot2019-[...].png (118Кб, 1113x793)
1113x793
почему видимость модулей и организация файлов в растопроекте это такая пекучая боль?

есть
src
-- grammar
---- mod.rs
---- nodes.rs
---- trees.rs
-- main.rs

чтобы достучасться из main к каким-то структурам в grammar::nodes, мне нужно обьявить mod.rs в grammar и ре-экспортировать "модули", которые нихуя не модули, а просто файлы *.rs

чтобы тесты в каком-нибудь trees.rs запустились, мне нужно их подсунуть поближе к мэйну, иначе карго их просто не увидит. та даже обычный код не компилится, если он не экспортирован чем-то, что от точки входа идет вниз по дереву пути. вангую, что бинари не совсем должны содержать в себе тесты и карга имеет полное право скипать то, что не попадает под его поле обзора

но у меня даже с тестами периодически возникает какая-то борода, как на пике. компилятор успешно подсвечивает ворнингами то, что некоторые методы и структуры, которые обьявлены парой строк выше, не используются. но тестов мы не видим в упор. объявление модуля tests как публичное было уже шагом отчаяния, но и это не спасает
Аноним 13/05/19 Пнд 18:03:53 1399138264
>>1399125
Конкретней вопрос задай.
Аноним 13/05/19 Пнд 18:10:12 1399140265
>>1399138
1. почему у меня не ранятся тесты, обьявленные в файле, хотя структуры и методы в нем же проходят компиляцию?
2. почему пути в расте - это такой леденящий душу пиздец?
Аноним 13/05/19 Пнд 18:13:31 1399142266
>>1399140
1) Без понятия. Выкладывай код куда-нибудь.
2) Все с ними просто и понятно.
Аноним 13/05/19 Пнд 19:28:52 1399195267
Почему смотря на растовые исходники иногда кажется, что читаешь дрисню на баше?
Аноним 13/05/19 Пнд 20:19:09 1399230268
>>1399142
тоже мне, даже не увидел, что cfg(tests) вместо test
Аноним 13/05/19 Пнд 21:34:31 1399288269
>>1399230
Попробуй идейку - мне она автоматом перенесла тесты в отдельный файл и все импорты прописала.
Алсо
>.exe
фи
Аноним 14/05/19 Втр 03:24:56 1399468270
Pokak.jpg (120Кб, 828x1022)
828x1022
>>1399195
Срочно обратись к врачу, у тебя серьёзные повреждения мозга.
Аноним 14/05/19 Втр 09:00:54 1399528271
>>1399288
на работе винды, дома никсы /маняоправдания/
Аноним 14/05/19 Втр 14:25:33 1399698272
Screenshot2019-[...].png (31Кб, 1017x433)
1017x433
>>1399288
soooooqa, какая же она вырвиглазная. а можно одной кнопкой сделать так, чтобы не хотелось блевать, глядя в монитор?
Аноним 14/05/19 Втр 15:54:32 1399745273
20190514-2dddf.png (122Кб, 1206x819)
1206x819
>>1399698
Ну вот где-то тут настрой
Аноним 14/05/19 Втр 16:27:27 1399769274
1498761033774.png (215Кб, 1394x1214)
1394x1214
>>1399698
Смотря что раздражает. Если вот эти типы, то disable hints где-то в настройках. Если внешний вид, то попробуй материал тему накатить (в плагинах).
Аноним 14/05/19 Втр 18:35:34 1399858275
>>1399769
твое выглядит неплохо. но, подозреваю, дело в шрифте, который неконтрастно выглядит курсивный и обычный. попробую пошаманить, хоть и влом
Аноним 14/05/19 Втр 21:23:12 1399997276
Я начал вкатываться в раст, дошёл до темы типажей и не совсем понял зачем они нужны. Методы в типажах вроде как перезаписываются с помощью impl, в таком случае, зачем тогда вообще нужен trait, если можно воспользоваться только одним impl без trait?
Возможно это тупой вопрос, но лучше я спрошу, чем буду 10лет ебаться.
Аноним 14/05/19 Втр 21:51:09 1400021277
>>1399997
Это как интерфейсы в ООП-языках. Ты можешь сказать, что функция принимает в качестве аргумента (или возвращает) объекты, которые имплементируют трейт(ы) и использовать его методы, а на то какие конкретно объекты туда поступают тебе похуй.
Аноним 14/05/19 Втр 23:01:36 1400081278
>>1399997
>типажей

Ты русский мануал по программированию читаешь? Удачи тебе, она тебе пригодится.
Аноним 14/05/19 Втр 23:48:54 1400136279
>>1399997
Ты можешь какой-нибудь своей структуре заимплементить Iterator (всего лишь один метод https://doc.rust-lang.org/std/iter/trait.Iterator.html#required-methods ) и потом получать с этого тонны плюшек (например получить кучу других методов https://doc.rust-lang.org/std/iter/trait.Iterator.html#provided-methods , использовать в фор, в функциях которые принимают итератор, даже другие либы которые принимают итератор смогут работать с твоей структурой).

В расте есть уже куча функций которые принимают трейтнейм, а про твою структуру (которой ты хочешь сделать импл) они понятия не имеют, но если ты прицепишь нужный трейт, то они подружатся и, как итог, меньше придётся своего кода писать.
Аноним 15/05/19 Срд 10:22:46 1400292280
Аноним 15/05/19 Срд 10:44:54 1400296281
Аноним 15/05/19 Срд 10:47:33 1400297282
>>1400296
мог бы просто ответить trait
мне просто первое, что пришло в голову - это кортежи, tuples. но народ че-то про трэйты начал втирать
Аноним 15/05/19 Срд 17:30:52 1400653283
>>1400297
> кортежи
Это тоже из разряда "нахуй вы это переводите".
Аноним 15/05/19 Срд 17:32:42 1400654284
>>1400653
Как по мне "Кортеж" звучит гораздо лучше чем "Тупл" или "Тапл" по русски.
Аноним 15/05/19 Срд 17:45:09 1400669285
>>1400654
Тупль. Именно с мягким знаком.
Аноним 15/05/19 Срд 17:46:37 1400671286
>>1400669
Соус бы. В словарях транскрипции сходу не нашел.
Аноним 15/05/19 Срд 18:02:07 1400688287
Аноним 15/05/19 Срд 18:30:15 1400720288
Аноним 15/05/19 Срд 18:59:48 1400729289
>>1400654
Кортеж звучит как-то развратно.
Аноним 15/05/19 Срд 20:05:39 1400753290
Аноним 15/05/19 Срд 20:06:02 1400754291
Аноним 15/05/19 Срд 20:10:59 1400757292
>>1400720
прелесть транскрипций, что они интерпретируются тоже по-разному :3
Аноним 16/05/19 Чтв 00:16:38 1400888293
>>1400653
Ай синк уи донт нид ту транслейт уордс фром Инглиш то Рашин. Морове, иу маст ту транслейт Рашин уордс ту Инглиш, бекоз инглиш из мо бьютифул.
Аноним 16/05/19 Чтв 00:53:33 1400909294
>>1400888
Ну и ебись со своими кортежами и типажами. И ещё срезы туда же.
Аноним 16/05/19 Чтв 01:51:59 1400926295
>>1400720
Я слышал все три варианта от нейтив спикеров. Их даже георафически не разделишь. Абсолютно рандомно разные люди говорят "тьюпл", "тупл" или "тапл". Иногда даже один и тот же человек.

Это как с either/neither.
Аноним 16/05/19 Чтв 01:55:47 1400927296
Аноним 16/05/19 Чтв 08:44:49 1400989297
Аноним 16/05/19 Чтв 14:47:45 1401138298
>>1400989
Просто белые господа - представители высшей расы работают с tuples, traits and slices, а грязные необразованные пейзане - ебутся с кортежами, типажами и срезами. Неосиляторы тут вообще ни при чём.
Аноним 16/05/19 Чтв 14:57:34 1401142299
Аноним 16/05/19 Чтв 15:59:33 1401184300
eye-1.png (2843Кб, 2225x1669)
2225x1669
Аноним 17/05/19 Птн 14:12:26 1401793301
20190517-35af7.png (52Кб, 906x513)
906x513
20190517-83d0e.png (44Кб, 641x442)
641x442
20190517-f7ff2.png (63Кб, 1576x321)
1576x321
Аноним 17/05/19 Птн 14:23:52 1401801302
Аноним 17/05/19 Птн 14:34:34 1401805303
>>1401801
Спасибо, конеш. Но в чём-таки разница?
Аноним 17/05/19 Птн 14:40:58 1401813304
Аноним 17/05/19 Птн 14:41:38 1401814305
>>1401813
Тьфу, блядь:
> Разница в том, что ты итерируешь по вектору по ссылкам, и делаешь move трансмиттера.
Аноним 17/05/19 Птн 15:04:28 1401825306
>>1401813
>move трансмиттера
так. Почему в моём варианте его мувать нельзя, а в твоём >>1401801 можно?
И почему конпелятор ругается на что угодно, только не на этот нехороший move?

И ещё вопрос - если я переместил объект в Arc, как его выместить обратно?
Аноним 17/05/19 Птн 15:07:05 1401828307
Аноним 17/05/19 Птн 15:12:43 1401831308
Аноним 17/05/19 Птн 15:20:25 1401833309
Аноним 17/05/19 Птн 19:38:36 1401965310
20190518-bdf44.png (67Кб, 772x865)
772x865
Ладно, умный анон, тебе всё равно делать нехуй. Давай, расскажи нам, как передать в функцию другую функцию аки параметр и засылать в тжреды уже её. Суть:
1. у меня есть набор функций, делающих всякое разное, но с одними данными
2. делать разное надо последовательно, но сами данные неплохо бы обработать параллельно
3. написать бы для этого единую ф-цию с дженериками, чтобы параллельно звала некую f для данных и возвращала каждый раз разное T

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0ff1efc4efdca01c2e09e6a1cfa4e29b - nikaque

да, я всё ещё ни хуя не понял
Аноним 17/05/19 Птн 19:41:43 1401968311
Аноним 17/05/19 Птн 19:51:52 1401971312
Аноним 17/05/19 Птн 20:34:33 1402014313
Аноним 17/05/19 Птн 20:37:31 1402018314
Аноним 17/05/19 Птн 20:55:14 1402033315
>>1402018
Arc пробовал, но что-то не завелось. Быть может всё дело в щепотке dyn? Так и не въехал, что это.
>>1401971
А вот 'static в нужные места втыкать я тоже ещё не научился. Оно, вообще, кошерно ли? Утечек не будет, если часто юзать?
Аноним 17/05/19 Птн 20:57:21 1402034316
>>1402033
Какая связь между статик-лайфтаймом и утечками?
Нужно научиться читать сообщения компилятора, он подсказывает что и куда нужно добавить.
Аноним 17/05/19 Птн 21:17:44 1402039317
>>1402033
> Быть может всё дело в щепотке dyn?
dyn - динамическая диспетчеризация, impl (или шаблонные параметры) - статическая. Можно заменить dyn Fn(usize) -> R + Sync + Send на impl Fn(usize) -> R + Sync + Send + 'static, но тогда использовать Arc уже не имеет смысла.
Аноним 18/05/19 Суб 08:32:09 1402329318
>The Little Book of Rust Macros
на сие поделие стоит тратить время, или может в Programming Rust про макросы рассказывает поадекватнее?
Аноним 18/05/19 Суб 08:32:29 1402330319
Аноним 18/05/19 Суб 10:46:45 1402350320
Растоманы, подскажите додику как в tcpstream засунуть жипег, так что бы можно было спокойно вытащить из аджакса на клиенте
Аноним 18/05/19 Суб 12:13:26 1402364321
>>1402330

Как будет правильно няшится или няшиться?
18/05/19 Суб 12:27:02 1402369322
>>1402364
что мы с тобой сейчас будем делать? няшиться
а вот он что тем временем делает? няшится
Аноним 18/05/19 Суб 12:32:55 1402370323
chrome2019-05-1[...].png (4255Кб, 1920x1080)
1920x1080
Аноним 18/05/19 Суб 13:00:42 1402379324
>>1402370
Нахуя файл каждый раз открывать? Хоть бы в памяти закешировал его.
Аноним 18/05/19 Суб 13:04:46 1402381325
>>1402379
Возьми и закешируй. Вопрос был про то как писать в стрим, а не про то как это делать эффективно.
Аноним 18/05/19 Суб 13:13:45 1402387326
>>1402364
>или может в Programming Rust про макросы рассказывается поадекватнее
валера
Аноним 19/05/19 Вск 15:19:05 1403168327
1557611486660.png (24Кб, 300x441)
300x441
В каком случае эффективней делать тип Copy, а в каком лучше передавать по референсу?
Аноним 19/05/19 Вск 15:23:42 1403182328
>>1403168
рефференс всегда эффективней
Аноним 19/05/19 Вск 15:25:33 1403186329
>>1403182
С хуя бы? Непрямой доступ к памяти по дефолту более медленный чем копирование пары слов через стек или регистры. Вопрос в том, в какой момент копирование plain-old-data структуры становится более дорогим, чем обращение через ссылку.
Аноним 19/05/19 Вск 19:05:23 1403339330
>>1403186
У тебя запись в стек идет через L1, т.е. тебе надо часть кэш линий вытеснить из L1 для записи новых значений. Если они уже записаны в L2 или не менялись, то все хорошо. Иначе ждать пока запишутся в L2. В принципе конечно возможна ситуация что вершина стека и прилегающие области находятся в L1 недавно был вызов функции и возврат из нее - тогда тут все будет проще.
С другой стороны ссылку можно и через регистр передать, а если с данными недавно работали, то они будут в L1.

Мое мнение: тут без бенчмарка нельзя сказать ничего определенного.
Аноним 19/05/19 Вск 19:08:08 1403340331
>>1403339
Угу. Короче понятно, что ничего не понятно и надо измерять.
Аноним 19/05/19 Вск 19:30:12 1403357332
Аноним 19/05/19 Вск 19:39:38 1403369333
Аноним 19/05/19 Вск 20:33:10 1403418334
>>1403357
Рискну предположить, что если ты не совсем уверен, как такое писать, тебе лучше воспользоваться другой структурой.
Аноним 19/05/19 Вск 20:35:12 1403421335
>>1403369
>одна из худших структур данных
оригинальное заявление. если бы каждая структура данных не была заточена под свою задачу
Аноним 19/05/19 Вск 20:52:34 1403447336
>>1403421
У списков одни из самых хуевых характеристик для типовых задач. Иногда в редких случая они нужны, но чаще всего нет. При этом по какой-то причине эти списки пихают бедной студентоте в начале обучения.

В лиспе и хаскеле списками еще можно обмазываться, но не в расте же.
Аноним 19/05/19 Вск 21:19:57 1403473337
>>1403447
>по какой-то причине эти списки
Потому что если студентоте сразу дать красно-чёрные деревья или пытаться объяснить A* по графу, у них мозги вскипают. А если начать со связанных списков, то оно проще заходит.
Аноним 19/05/19 Вск 21:22:55 1403475338
>>1403473
Ну так начинайте с векторов, хештаблиц и бинарных деревьев.
Впрочем да, если надо научить работать с указателями и не проебываться с граничными случаями, то списки хороший пример.
Аноним 19/05/19 Вск 21:48:09 1403492339
>>1403475
Я так-то хз, но у нас предмет "Структуры данных" как раз и начинался с хешей и простых деревьев и там дальше. Но чтобы хотя бы это понимать, вводный курс, там где совсем банальщина, CS101, там списки были, чтоб пойнтеры осознавать начинали потихоньку.
Аноним 20/05/19 Пнд 07:55:59 1403628340
>>1403492
>>1403475
Хорошо вот вам, а я вообще на погроммиста не учился.
Аноним 20/05/19 Пнд 10:19:57 1403657341
Аноним 20/05/19 Пнд 12:48:00 1403711342
>>1403657
комплексую чего-т. Зато я за режимы работы транзистора 3 раза пояснять сдавать ходил. Такой вопрос - есть в треде расто-пофессионалы (кто кодит на нём за деньги) или одни любители собрались?
Аноним 20/05/19 Пнд 13:16:13 1403733343
>>1403711
Я так-то тоже на схемотехника учился. Пишу на расте за бабло.
Аноним 20/05/19 Пнд 13:40:06 1403751344
>>1403733
О, молодец. И как оно?

Ещё вот такое:
where F: Copy+From<f32>+std::ops::AddAssign+std::cmp::PartialOrd+std::ops::Div<Output = F>
можно как-то проще обозначить, что я хочу всего-лишь задать обобщённый тип с плавающей точкой? Возможно даже всего из 2х вариантов: f32|f64
Аноним 20/05/19 Пнд 13:49:57 1403756345
Аноним 20/05/19 Пнд 13:55:12 1403760346
>>1403756
Вот это охуенное упущение дизигнеров языка. Хотя бы в рамках примитивных типов могли бы сделать. Чтобы я писал что-то вроде
<T: PrimitiveFloat>
а потом мог бы спокойно писать 'as T' и всё такое
Аноним 20/05/19 Пнд 14:19:33 1403770347
>>1403751
Что именно? Раст охуенный, но не идеальный. Время компиляции подбешивает, и тулинг хочется получше.
Аноним 20/05/19 Пнд 15:12:26 1403801348
>>1403369
> А вообще это одна из худших структур данных, так что подумай зачем оно тебе вообще нужно.
На самом деле мне нужно было минимальное trie для задачи на hackerrank, но у меня возникли проблемы с портированием работающего прототипа на питоне. Решил загуглить реализации простых структур данных на расте, вот и наткнулся на ту ссылку.
Почитал исходники LinkedList, это определенно лучше, пусть и с unsafe, но в итоге я забил и просто запихал все ноды дерева в вектор, а вместо указателей сделал индексы на него.
Аноним 20/05/19 Пнд 15:45:40 1403828349
>>1403770
>Раст охуенный, но не идеальный. Время компиляции подбешивает, и тулинг хочется получше.

Две виртуалки с ансиблем этому инженеру.
Аноним 20/05/19 Пнд 17:02:24 1403868350
Аноны, а почему abs есть, а трейта нет? Ну чтобы
T: Abs
можно было.
Аноним 22/05/19 Срд 14:13:55 1404651351
>>1403868
Это почти как спрашивать, почему встроенного вебсервера нет, лол. Потому что разрабам не показалось это важным.

Сделай. Нужно всего-лишь потребовать, чтобы у типа был унарный минус и операторы сравнения.
Аноним 22/05/19 Срд 15:21:40 1404701352
>>1369496 (OP)
Хорош ли раст для разработки стрименгово сервиса? Или лучше взять Erlang/OTP?
Аноним 22/05/19 Срд 15:23:17 1404703353
Аноним 22/05/19 Срд 15:33:15 1404710354
Аноним 22/05/19 Срд 16:35:42 1404732355
>>1404651
Конечно можно. Ну вот смари: мне для функции, работающей с дженериком F, нужно писать такую ебалу:
where F: Copy+From<f32>+AddAssign+std::cmp::PartialOrd+Div<Output = F>+Sub<Output = F>+Neg<Output = F>+Add<Output = F>+Mul<Output = F>
хотя F у меня может быть либо f32, либо f64 - и вот для такого простого случая нужно городить такой огород (причём, его приходится тащить в каждую функцию). Хотя можно было бы изобразить что-то вроде F: (f32|f64) или тип того. Про сторонние крейты знаю, не предлагать.
То есть, с одной стороны в языке куча сахара (как компенсации за ёблю с бч), а с другой - нет такой элементарщины.
Ещё нашёл #![feature(trait_alias)] - оно в анстейбле. Зато с ним можно так
trait X<F> = Copy+From<f32>+AddAssign+std::cmp::PartialOrd+Div<Output = F>+Sub<Output = F>+Neg<Output = F>+Add<Output = F>+Mul<Output = F>;
и потом писать везде
where T: X<T>; //Пиздец, не правда ли
но всё равно костыль, да и не факт, что даже его стабилизуют.
Аноним 22/05/19 Срд 16:39:16 1404734356
>>1404732
> но всё равно костыль
Тупо спиздили из С++.
Аноним 22/05/19 Срд 17:46:54 1404788357
>>1404732
> можно было бы изобразить что-то вроде F: (f32|f64) или тип того
num::traits::Float?
Аноним 22/05/19 Срд 18:00:51 1404804358
>>1404788
Чур внешними костылями не бросаться. Я про то, что должны быть или типы высшего порядка, или чего-то вроде возможности создать свой по типу union.
Аноним 22/05/19 Срд 23:04:25 1404964359
>>1404804
>Чур внешними костылями не бросаться.
А я не совсем понимаю, почему тебя внешние костыли не устраивают.
Аноним 22/05/19 Срд 23:21:16 1404975360
>>1399125
Что за тема для vs code?
Аноним 22/05/19 Срд 23:23:18 1404978361
>>1399698
А нахуя ты изобретаешь велосипед? Есть же pest.rs, который сгенерит тебе синтаксическое дерево и парсер под него по описанию грамматики, всё на этапе компиляции, без оверхеда времени выполнения, ты всё равно лучше в жизни не напишешь.
Аноним 23/05/19 Чтв 00:44:57 1405013362
>>1369689
Но это интервью 2012 года, раста тогда еще не было.
Аноним 23/05/19 Чтв 07:18:08 1405076363
>>1404975
Quiet Light

>>1404978
это мои уже провалившиеся потуги сделать на расте что-то полезное
Аноним 23/05/19 Чтв 07:39:56 1405079364
>>1404964
Тем, что это костыли под специальный случай, а я хочу вообще. Может у меня вообще так случится, что T будет в диапазоне от u8 до f64.
Аноним 23/05/19 Чтв 09:07:27 1405085365
Аноним 23/05/19 Чтв 13:00:16 1405143366
>>1404732
>То есть, с одной стороны в языке куча сахара (как компенсации за ёблю с бч), а с другой - нет такой элементарщины.

Элементарщину реализовать можно средствами языка, а сахарок нет, лол. Ты не можешь ожидать, что любая херня, которая тебе только может понадобиться, окажется в стандартной либе, она не для этого.

>>1405085
Там уже есть трейт Num, который покрывает любые операции над числами. Чувак сам не знает, чего хочет.
Аноним 23/05/19 Чтв 17:04:43 1405273367
>>1405143
>Там уже есть трейт Num, который покрывает любые операции над числами
дженерики он хуёво покрывает. Даже если T: Float, я всё равно не смогу написать
2.3T
или
2.3 as T
при этом, внезапно, он не включает std::convert::From<{float}>
поэтому даже into() с ним одним не заведётся.
Аноним 24/05/19 Птн 12:03:14 1405621368
Аноним 24/05/19 Птн 12:23:57 1405634369
test
Аноним 24/05/19 Птн 13:15:20 1405657370
>>1405621
>Fn closure traits implemented for Box<dyn Fn>
почему мне делегат нужно все-равно упаковывать, ебанаврот. после дотнетовских анонимных функций как-то сложно уговаривать компилятор не ругаться. хотя, и язык не о том
Аноним 24/05/19 Птн 13:24:16 1405666371
>>1405657
Делегат-дегенерат. Почему объебки из микрософта всегда придумывают какие-то новые термины для простых устоявшихся вещей?
Аноним 24/05/19 Птн 13:26:27 1405667372
>>1405666
ну closure - это немного не о ссылке на функцию, а о доступе к данным вне её. это даже в жявяхуяваскрипте замыканием называется
или о чем ты?
Аноним 24/05/19 Птн 13:28:52 1405669373
>>1405667
Что такое "делегат"?
Аноним 24/05/19 Птн 13:29:08 1405671374
Аноним 24/05/19 Птн 14:20:53 1405697375
>>1405666
>объебки из микрософта
У тебя ответ в самом вопросе. Блядская компания, блядские продукты, блядская культура и блядское комьюнити.
Аноним 24/05/19 Птн 14:33:31 1405710376
>>1405697
>блядское комьюнити
но я же ваш, родной rustacean
Аноним 24/05/19 Птн 14:38:51 1405716377
>>1405710
Он про майкрософт-онли фанатиков, которые на каждом углу орут о том какой си-сярп охуенный, не видя что им подсунулу перекрашенную жабу.
Аноним 24/05/19 Птн 14:49:43 1405721378
>>1405716
ну первоклассники не люди
а вообще сколько таких втречал, на пальцах можно посчитать
Аноним 24/05/19 Птн 21:06:06 1405904379
>>1405697
Но visual studio code - единственный редактор, в котором можно нормально разрабатывать на расте в 2к19.
Как жить-то?
Аноним 24/05/19 Птн 21:29:01 1405914380
>>1405904
Сам не понимаю, бред какой-то. Парадокс. Пытался Атом это самое, вроде неплохо, туда-сюда, но VS-выродок всё равно лучше.
Часть плана MS по угнетению опен сорса, наверное. В линупс они три года назад вкатились, гитхаб в прошлом купили, ждём когда вся экосистема накроется медной пиздой.

https://en.wikipedia.org/wiki/Embrace_extend_extinguish
Аноним 24/05/19 Птн 21:35:58 1405919381
>>1405904
Если ты готов мириться с электронными тормозами, то живи с ним.
Емакс и вим никто не отменял в 2019.
Аноним 24/05/19 Птн 21:36:31 1405920382
>>1405919
Удачи в виме работать над проектом, состоящим более чем из пары файлов.
Аноним 24/05/19 Птн 21:37:59 1405921383
>>1405920
За вим ничего не скажу, но удача как раз нужная тому, кто через дерево-файлов или прости господи табами пользуется.
Это примерно такое же днище как альт-табаться постоянно.
Аноним 24/05/19 Птн 21:39:18 1405923384
>>1405921
А чем надо пользоваться, когда у тебя вложенность в 4-5 директории, ручками вбивать все пути как додик?
Аноним 24/05/19 Птн 21:41:25 1405924385
Аноним 24/05/19 Птн 21:43:39 1405927386
>>1405924
Ну это заебись, пока у тебя 4 файла в одной папочке, когда у тебя будет 50 в 10 папках, так же будешь щелкать, пока белый человек один раз кликнет на файл в дереве проекта?
Аноним 24/05/19 Птн 21:47:03 1405929387
>>1405927
Хз, в моем хобби проекте 300+ файлов в хуй знает каком количестве директорияй. Как по мне если бы мне надо было щелкай мышкой для навигации, я бы повесился.
Аноним 25/05/19 Суб 07:05:52 1406078388
>>1405920
Недавно видел относительно удобно настроенный neovim для раста и не только:
https://www.youtube.com/watch?v=ycMiMDHopNc
Про вим начинается в 13:45, c 17:00 работа с файлами через fzf.
Аноним 25/05/19 Суб 08:10:39 1406096389
Аноны, а кто-нить пользовался этим: https://github.com/AdamNiederer/faster - SIMD акселератором?
А никак не могу заставить его схавать 2 итератора. Можно, конечно, сделать flatten и collect, но как-то некошерно.
И, к вопросу о внешних костылях, он работает только из гита, в репах сломанная версия.
Аноним 25/05/19 Суб 19:47:01 1406397390
>>1406096
>в репах сломанная версия.
если у тебя ночной конпелятор, то это может не в репах сломана версия, а конпелятор у тебя несовместимый
Аноним 25/05/19 Суб 21:20:23 1406437391
>>1406397
Это SIMD, он только с ночником и совместим. А так, если в мастере типа нестабильная версия, но работающая с последним ночником, а в репе стабильная, но работающая с конкретным ночником - дак могли бы указать версию ночника-то.
Аноним 30/05/19 Чтв 12:23:01 1409099392
Смотрите, аноны, чего нашёл: https://github.com/MikhailKravets/NeuroFlow/
нашёл эту либу, заюзал, решил попробовать с генератором. А его и нет. Лезу в сорцы - и правда нет, но: для передачи в train() ему и не нужен полный датасет, всё необходимое вынесено в отдельный трейт с 3-мя методами, который мне и осталось заимплементить для своего генератора.
И вот он продумал же, малаца прям.
Но одно пугает - все МЛ проекты на расте либо совсем новые, либо застопорились в 2018 и раньше.
Аноним 30/05/19 Чтв 15:46:46 1409255393
Аноним 31/05/19 Птн 07:15:45 1409678394
>>1409255
Как по мне, это говорит о том, что энтузиазм вокруг раста велик, но самих энтузиастов пока мало. Сначала у человека хватает энтузиазма реализовать что-нибудь эдакое, но потом для продолжения ему не хватает фидбека в виде багрепортов и донатов - и всё стопится.
Ещё заметил, что авторы таких проектов зачастую студенты, которым после окончания обучения надо что-то кушать.
Аноним 31/05/19 Птн 08:53:15 1409707395
Аноним 31/05/19 Птн 09:00:48 1409710396
Аноним 03/06/19 Пнд 10:15:19 1411171397
Аноним 03/06/19 Пнд 10:26:50 1411173398
Аноним 03/06/19 Пнд 14:06:21 1411252399
>>1400729
Пуританин в треде, лол.
Аноним 03/06/19 Пнд 15:34:56 1411285400
>>1400757
Совсем сумасшедший.
Аноним 04/06/19 Втр 13:42:42 1411692401
и снова я неосиляю пути в расте, ебаны_их_в_рот

структура файлов простая:
/src
|_ utils.rs
|_ types.rs
|_ tests_1.rs
|_ tests_2.rs

utils ссылается для своей работы на types. tests шо 1 шо 2 ссылается на общий utils.
сам проект целиком и полностью состоит из тестов на уже развернутое независимо окружение (конечно, лолблядь, но это просто по гайду ради примера)

если в Cargo.toml указать [lib] path = "src/tests_1.rs", но по-отдельности потестить тесты получится. но чтобы запустить все разом, я хочу объединить их в каком-нибудь ентри-поинт файле. например main.rs:

mod tests_1;
mod tests_2;

src/tests_1.rs:
file not found for module `types`
help: name the file either content\types.rs or content\types\mod.rs inside the directory "src"


я перепробовал еще вариантов экспорта, но там либо uknown crate или синтаксическая ошибка.
как воркэраунд я надекларировал в Cargo.toml [[bin]] с путями, а в тест-файлах создал пустые fn main(). но это какой-то кек, как по мне. вообще есть адекватный способ создать иерархиеские зависимости модулей в пределах одного уровня директорий?
Аноним 04/06/19 Втр 15:44:52 1411750402
>>1411692
https://doc.rust-lang.org/cargo/guide/tests.html
Если смотреть сюда, то по логике просто сложи тесты в папку tests рядом c src. В таком случае импортить имена надо будет через use {crate_name}::...; но в таком случае надо иметь lib.rs или эквивалент, который будет экспортировать модули наружу через pub mod;

Но вообще я ещё ни разу так тесты не отделял, предпочитаю писать их рядом, через
#[cfg(test)]
mod tests {
use super::*;
...
}

Вообще, насколько я понимаю, твоя проблема в том, что ты не включаешь тесты в зону видимости, тебе надо указать все модули, которые ты используешь, в lib.rs. Например, когда у тебя не находится types.rs, который вроде бы как рядом, это потому что ты не указал его в lib.rs. Чтобы было понятнее, представь lib.rs корнем дерева, из которого исходят модули-ветки, из которых тоже могут идти ветки.
Допустим, есть lib.rs, в котором есть
pub mod module;
pub mod module2;
Поскольку ты их указал в lib.rs, ты можешь импортировать имена в модулях module и module2 через
use super::module::{...};
use super::module2::{...};
или
use crate_name::module(2)::{...};

Поскольку модули являются дочерними сущностями относительно корневого lib.rs, именно поэтому в lib.rs надо указывать все модули, которые собираешься использовать(а если не хочешь включать модули с тестами, используй #[cfg(test)] перед pub mod test_1;.)
Та же ситуация с mod.rs, в нем ты должен указать дочерние модули, если они у тебя есть.

Сорри за форматирование.
Аноним 04/06/19 Втр 15:47:56 1411753403
>>1411750
>use super::
>use crate_name::

вот это, наверное, стоило попробовать
спс
Аноним 06/06/19 Чтв 21:56:04 1413059404
Аноны, что нового, как сами-то вообще? Я вот тут взялся один известный опенсорсный проект с сей на раст переписывать. Конвертилок кроме c2rust не нашёл, но она делает лютый пиздец - сишный код на расте, который к идиоматичному привести сложнее, чем собсно сишный. Поэтому сижу и тупо переписываю, строчка за строчку, изредка с ватозаменой, вроде
sed -i -E 's/(unsigned int )([_a-z]*)/\2: usize/g' src/file.rs
думаю, это будет бриллиант в моём портфолио. Все просто охуеют, да я и сам охуею, если получится. Но пока я это конпелятору даже не пытаюсь скармливать, сперва перепишу грубо и грязно, потом перепроверю, а потом буду функцию за функцией вытягивать и обмазывать тестами.

а что у вас?
Аноним 06/06/19 Чтв 23:54:22 1413098405
>>1413059
> Я вот тут взялся один известный опенсорсный проект с сей на раст переписывать.

Нахуя тебе этот бриллиант? Либа уже есть, нахуя делать всё то же самое, только на расте? Напиши лучше свой собственный, оригинальный бриллиант.
Аноним 07/06/19 Птн 07:39:06 1413152406
>>1413098
Оче просто. Либа:
- хорошо отлажена в плане алгоритмов
- раскручена и на слуху
- до сих пор одна из лучших в своём классе
- значительно не обновлялась лет 7, а мне хотелось бы от неё пару новых фич, которые стрёмно реализовать на сях.
07/06/19 Птн 10:51:32 1413196407
07/06/19 Птн 11:12:54 1413199408
пацаны, выучил раст, а че дельше? вакансий чет нет))))))
Аноним 07/06/19 Птн 11:31:31 1413206409
>>1413199
в линкедине относительно нечасто, но пописывают
Аноним 08/06/19 Суб 18:04:43 1413724410
а есть какой-нибудь гайд для калек про Futures?
Аноним 09/06/19 Вск 15:32:39 1414067411
>>1413199
Теперь учи божественную дишеку.
Аноним 10/06/19 Пнд 21:06:47 1414638412
Аноним 11/06/19 Втр 03:54:51 1414734413
>>1414638
Да забей, смысл отвечать этому шизику. Он же тут по всему треду устраивает театр одного семена, "гыгыгы работы нет". Ну хоть тред бампает, и то неплохо.

>>1413724
Сам тут взялся разбираться, и понял что нихуя нормального нет. Чо сам пытался осилить:

https://rust-lang.github.io/async-book/ (но там пиздец нихуя не написано, может в версии с гитхаба побольше)
https://tokio.rs/docs/futures/basic/
https://dev.to/mindflavor/rust-futures-an-uneducated-short-and-hopefully-not-boring-tutorial---part-1-3k3 (не нашел полезным)

Просто попробуй сам заимплементить какую-нибудь футуру для начала, потом стрим. Я в какой-то момент заступорился, но вот этот пост помог мне больше, чем все гайды вместе взятые: https://www.reddit.com/r/rust/comments/84y1n1/how_to_implement_the_poll_method_for_the_future/dvu6s2n?utm_source=share&utm_medium=web2x
Аноним 11/06/19 Втр 11:19:36 1414786414
>>1413724
Добавлю к этому еще >>1414734 - почитай код самой futures-rs и tokio.
Аноним 11/06/19 Втр 11:29:53 1414789415
>>1414786
Кстати да, исходники очень помогают. Еще стоит посмотреть в код либ, где заимплеменчены асинхронные фичи, я вот копался в reqwest::async и hyper.
Аноним 11/06/19 Втр 16:01:50 1414850416
>>1414734
>>1414786
async-book это же про нативный async/await, а не про фьючеры, которые futures = "0.1". разве не так?
или они смерджили тот крейт себе в std?

вообще спасибо за ссылки. исходники - это хорошо, но пока мне сложна в растосорсах копаться с евойными impl for, хотя не отменяет того факта, что надо)
Аноним 14/06/19 Птн 01:08:03 1416116417
Тыкните куда читать, пожалуйста. Пусть есть структура, в ней Option<Box<что-нибудь>>. Как вытащить из неё собственно Box и записать в Оption нуль? Ну, то есть: if (t.ptr != 0){Ptr p = t.ptr; t.ptr = 0}. Я нуфаг совсем, спасибо.
Аноним 14/06/19 Птн 01:20:06 1416120418
Аноним 14/06/19 Птн 02:19:55 1416134419
Аноним 14/06/19 Птн 06:50:49 1416159420
Аноним 14/06/19 Птн 21:46:18 1416603421
Аноним 14/06/19 Птн 22:55:53 1416636422
>>1416603
Расскажи для начала какое дерево тебе нужно и зачем.
Аноним 15/06/19 Суб 09:07:40 1416736423
>>1416636
Рекурсивно делить изображение на квадраты. У каждой ноды будут записаны
- координаты начала
- координаты конца
- Option(родитель)
- Option(вектор с детками)
ну и будет метод gen_children для генерирования деток - внутри координат self выделяем от 4х квадратов и пишем ей в children

Пытался сделать на Rc и лайфтаймах - охуел с того, сколько подводных камней вылазит. А так, хочу, чтобы можно было
> let mut root = Node::new(0, 0, h, w);
> root.gen_children();
> for child in root.children.iter() {
> if child.wants_children() {
> child.gen_children();
> }
> }
Аноним 15/06/19 Суб 10:00:50 1416749424
>>1416736
А зачем ноде нужно знать родителя? Если такое требование убрать, то можно сделать так:
struct Node {
range : [[usize; 2]; 2],
children : Vec<Box<Node>>
}

Если родитель таки нужен, то добавляй указатель и ебашь через ансейф, главное следи, чтобы твой интерфейс не позволял элиасинга.
Аноним 15/06/19 Суб 11:03:58 1416764425
>>1416749
Родитель очень нужен, там делается сравнение свойств изображения в дополнительных полях. Ансейф можно попробовать, конечно. А что, конпелятор сам ну никак не отследит, что я не делаю ничего плохого?
Например, такая частая ругань:
> cannot borrow `tree` as immutable because it is also borrowed as mutable
Это было при попытке чтения структуры, после root.gen_children();
Но, ёпта, конпелятор же должен видеть, что
> it is also borrowed as mutable
сделано выше в однопотоке и уже давно завершилось, чилдрены сгенерились, все свободны. Ну нет, мы будем якобы думать, что я там в ниебацца какой поток это передал и оно до сих пор что-то там пыхтит мутабельно и асинхронно.
Аноним 15/06/19 Суб 12:08:00 1416775426
>>1416764
Нифига не понял, скинь код. Дианон, травля
Аноним 15/06/19 Суб 15:59:47 1416858427
>>1416736
Сделай Copy тип, который будет индексом в конкретный пиксель оринигальной картинки.
Аноним 15/06/19 Суб 18:26:20 1416915428
Крабики, какие есть нормальные либы для обработки видео\изображений на ржавом? Нашёл биндинги под opencv и ffmpeg, в которых я более-менее разбираюсь, но ни один крейт у меня не компилится и жалуется на заголовки файлов, которые уже не поставляются с ffmpeg давно. Единственное осталось из известного ещё - это gstreamer, но там хуй проссышь, что как работает. Все эти бины-пайплайны-синки что-то нет желания прокуривать. Задача вообще простая - нужно задекодить видео, считывать по кадру в буффер и дальше как картинку по пикселям смотреть. Как это зделоть в расте? И не надо меня в сишку посылать, там то всё без проблем будет, а мне именно раст потыкать охота
Аноним 15/06/19 Суб 18:53:50 1416926429
>>1416915
https://crates.io/crates/y4m
Там есть пример
ffmpeg -i in.mkv -f yuv4mpegpipe - | target/release/examples/resize - 640x360 - | mpv -
Вот этот resize тебе и нужен - таки это тоже прокуривание пайпа, но ничего проще не придумаешь.
Аноним 15/06/19 Суб 20:11:59 1416949430
Аноним 15/06/19 Суб 21:19:18 1416966431
>>1416949
Поправил, но выглядит как пиздец, лол.
1. Arc подыхал на той же строчке, в которой клонировался, в результате и по локу к нему было нельзя обратиться. Сделал биндинг для клонированного Арка и уже его лочу.
2. Сделал дерайв Clone для OffNode и кладу n.clone() в вектор.
3. При итерации сделал n вместо &n, не хватает знаний нормально объяснить, в чем разница.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=422a78da56f88ab7c3e215d6e4faad2b

Что это должен быть за алгоритм, наверняка есть нормальный способ его написать?
Аноним 16/06/19 Вск 08:32:03 1417085432
>>1416926
От души. Как раз это нужно было.
Аноним 17/06/19 Пнд 20:01:33 1417969433
>>1416966
> n.clone()
блин, не то, как мне для самой-то n деток генерить? Вообще, заметил нехватку такой вещи: Rust запрещает mut во много потому, что это подразумевает возможность деструктивных действий типа удаления. Например, храню я ноды в векторе, надо что-то сделать:
1. вынимаю дочку из вектора
2. передаю вектор дочке, чтобы она напихала себе в него ещё дочек.
конпелятор такой:
вай-вай, щито ты делаешь, а вдруг дочка удалит родителя?
а я ему: мамой кланус, не удалит!
а он мне: на си будэшь класться, а пока иди домой!

дак вот, может есть промежуточный вариант, когда мы одалживаем вектор мутабельно, но с запретом на удаление, только для добавления? Костыльно я мог бы и сам это сделать так:
получить от дочки вектор с её детками и разложить его самостоятельно. Но эт как-то жопно.
Аноним 17/06/19 Пнд 21:21:04 1418005434
>>1417969
пердолься с трейтами, заверни вектор во враппер, который будет имплементить Delete и Insert. там где нужно возвращай impl Delete/Insert. interface segregation типа
Аноним 18/06/19 Втр 07:09:29 1418109435
>>1418005
Мысль хорошая, но боюсь, что не взлетит. Лан, попробую, потом всем тредом подумаем, прав конпелятор или нет.
Аноним 18/06/19 Втр 07:45:32 1418112436
>>1418109
честно говоря, я не понимаю твоей мысли
если тебе нужно мутировать объект, ты передаешь &mut X или mut X. причем, где принципиальная разница в качестве мутации между добавлением данных в структуру или удалении их оттуда? почему элементарная перестановка значений в векторе менее деструктивная операция, чем удаление какого-либо элемента?
мы говорим не о бизнес-логике в целом, а о представлении компилятора на происходящее офк
Аноним 18/06/19 Втр 13:57:52 1418252437
Screenshot2019-[...].png (67Кб, 1040x803)
1040x803
Screenshot2019-[...].png (41Кб, 959x601)
959x601
спасите от лайфтайм-чекера. я правильно понимаю, что anonymous lifetime имеет &self и что компилятор сильно переживает, мол, инстанс, которому вызывают send_message может не пережить сам метод?
если так, то какой выход из этого всего? &'static self компилятор тоже заворачивает лол, да и это понятно
Аноним 18/06/19 Втр 20:25:23 1418479438
>>1418252
и тут я посмотреть на своё кодэ и понял, что все очень-очень плохо
лучше ли будет возвращать Future из send_message, а место отправки сообщения обернуть через tokio::spawn? но тогда, суда по всему, для T нужно добавить будет констрейнт Send?
Аноним 18/06/19 Втр 20:38:21 1418485439
Чё за хуйня с cargo? Зачем он копирует все зависимости в /target? У него же есть уже папка .cargo. Я вот раньше что-то не замечал, а тут решил посмотреть, чего у меня место на диске заканчивается, а у меня в каждом растопроекте по 1-1.5гб зависимостей. Мы теперь, как нода чтоле?
Аноним 19/06/19 Срд 18:21:12 1418913440
>>1418485
Ну не теперь, а давно уже, и во-вторых, да, артефакты в target могут быть очень разными, в первую очередь из-за возможных комбинаций фич и статической линковки, в .cargo наверное только сорцы и складываются. Ну и cargo не чистит старые билды, так что будет все печально если не следить за папкой. Надеюсь, скоро начнут пилить что-то по этой теме.
Аноним 21/06/19 Птн 11:19:35 1419822441
Анон с деревьями репортин ин.
С гордостью рад представить вам получившуюся мега-ебалу (зато идиоматичную!):
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=d2390925f3cafc95ddcf1b94243006e6

Для каждого уровня вложения используем отдельный вектор - так на спуске по дереву не возникает пересечений. Пиздеца там наворочено много, конеш, подозреваю даже, что можно обойтись без RefCell и одного Arc - надо будет попробовать почистить.
Аноним 21/06/19 Птн 11:37:09 1419840442
>>1419822
А зачем тебе Arc в OffNode storage? Я что-то не вижу нигде многопотока.
Аноним 21/06/19 Птн 12:38:52 1419873443
Аноним 22/06/19 Суб 23:21:17 1420643444
>>1418252
Сделай let binding для self.channel_name
Аноним 27/06/19 Чтв 14:17:51 1423234445
>>1420643
thx за попытку помощи, но оно плюется такой же самой ошибкой (
Аноним 27/06/19 Чтв 19:08:01 1423452446
Аноны, нужен аналог питоновского fifo Queue. Чтобы несколько тредов писало в очередь с локами и несколько тредов читало. Стандартные каналы не катят. В доках ничего не нашел. Есть готовый крейт?
Аноним 27/06/19 Чтв 20:40:09 1423522447
>>1423452
Оберни во что-нить. В Mutex, например. Или тебе надо, чтобы прочитали одно и то же несколько раз?
Аноним 27/06/19 Чтв 21:06:48 1423539448
Аноним 28/06/19 Птн 01:00:48 1423660449
>>1423234
Ну если ты просто let сделал, то почему ему не плеваться на тебя? Сделай clone(), если возможно. Вынеси self.address иначе. Что ты, блять, как маленький? И где ты let сделал, на каком уровне вложенности?
Аноним 28/06/19 Птн 01:03:18 1423662450
>>1423452
> mpsc
> Multi-producer, single-consumer FIFO queue communication primitives.
Ты долбаеб, что у тебя не катят?
Или давай семантику локов определяй
Аноним 28/06/19 Птн 06:48:57 1423712451
Screenshot2019-[...].png (53Кб, 847x778)
847x778
>>1423660
нибей миня, я тупой
Аноним 28/06/19 Птн 08:40:23 1423728452
>>1423712
Ну дык, ты в в этом замыкании захватываешь self и потом его возвращаешь, когда возвращаешь футуру (что собственно неправильно, ведь футура может существовать дольше твоего объекта). Сделай .clone() на self.channel_name (у тебя же там String, да?), как говорил анон >>1423660 выше, должно быть ок.
Аноним 02/07/19 Втр 10:45:15 1426056453
Объясните на пальцах, пожалуйста, в чем отличие data race от race condition
Аноним 02/07/19 Втр 17:11:23 1426367454
Аноним 03/07/19 Срд 07:57:52 1426846455
20190703-440e5.png (8Кб, 341x123)
341x123
Аноним 03/07/19 Срд 08:26:44 1426850456
saying-java-is-[...].png (143Кб, 500x494)
500x494
>>1426846
Когда уже она провалится в ад, наконец...
Аноним 03/07/19 Срд 10:48:17 1426903457
>>1426846
в C# анонсировали завоз оператора _, расширение switch-а до уровня похожего на растофункциональщину, деконструкцию (правда, уебищную). как обычно, каждый язык берет что-то удачное из другого и начинает имплементить это у себя. выглядит так себе, мягко говоря
Аноним 03/07/19 Срд 11:54:14 1426929458
>>1426846
>>1426850
Что вам не нравится, петушки? Вы хотите до сих пор писать на Java 1.6 с анонимными классами вместо лямбд?
Аноним 03/07/19 Срд 11:56:55 1426932459
>>1426929
Зачем ты ее вообще сюда притащил? У тебя что, нет жава треда?
Аноним 03/07/19 Срд 12:51:27 1426965460
>>1426929
>Вы хотите до сих пор писать на Java
Проиграл с этого психопата.
Аноним 03/07/19 Срд 20:37:19 1427322461
>>1426850
Благодаря твоим картиночкам всем становится понятно, почему у тебя так болит жопа.
Никто ведь не обещал, что ебать в жопу будешь ты, а не тебя.
Аноним 03/07/19 Срд 23:48:39 1427493462
Добро пожаловать!
Аноним 03/07/19 Срд 23:49:01 1427494463
image.png (888Кб, 900x695)
900x695
>>1427493
>невероятно быстрый
Ебать оно долго постило.
Аноним 06/07/19 Суб 12:31:23 1428937464
12337032.jpg (81Кб, 405x604)
405x604
>>1427322
Я нихуя не понял из того, что ты написал. Про какую-то хуйню, кого-то ебать в жопу, у кого-то болит жопа, просто охуеть.

Но у меня сложилось впечатление, что ты думаешь, будто я пишу на этом блядоязыке для телевизоров. Уверяю тебя - ты ошибаешься.

Однако, думаю, что тебе стоит обратиться за профессиональной помощью с твоей анальной фиксацией.
Аноним 08/07/19 Пнд 09:08:26 1430115465
ИМХО, если вы знаете си, то растбук можно не читать. В книге от О'Райли все описано более структурировано и понятнее. Вас не знакомят с языком, говоря "почитайте потом документацию", а сразу рассказывают как все устроено.
Аноним 15/07/19 Пнд 01:13:23 1435416466
Аноним 15/07/19 Пнд 23:15:18 1436422467
>>1430115
Ну хз. Типа есть "Rust by Example", фактически от разработчиков, очень похож на О'Райли, но Rust by Exampler лучше структурирован и не устарел морально (ибо фиксится периодически). Так что лучше прочитать Rust by Example уж тогда, держа под рукой растбук на случай непоняток.
Аноним 17/07/19 Срд 19:34:26 1437771468
1415823081569.png (83Кб, 692x576)
692x576
Аноним 17/07/19 Срд 19:39:32 1437778469
>>1437771
> This is an unsafe email but don't worry, it's written by experts.
Муахахаха.
Аноним 17/07/19 Срд 19:54:21 1437789470
>>1437771
Что там за драма у вас? В раст протекли плюсовики и хотят пердолиться в указатели?
Аноним 17/07/19 Срд 20:05:58 1437798471
1442604767614.png (79Кб, 809x636)
809x636
Аноним 17/07/19 Срд 21:00:26 1437849472
Аноним 17/07/19 Срд 21:23:42 1437869473
>>1437849
Довыёбывается, что его форкнут, форк назовут actiy, а actix забудут.
Аноним 18/07/19 Чтв 04:02:33 1438054474
Bertha-Dalrymple.jpg (28Кб, 250x333)
250x333
>>1369873

> Высоконагруженные
> Сотни запросов в секунду

Аноним 18/07/19 Чтв 15:44:39 1438268475
>>1437869
Ага, щас. Большинство только пиздеть горазды, а как что-то сделать, так хуй там.

>>1437849
Альтернативы 10/10:
> Gotham
Параша, которая компилируется только на nightly
> Все остальное
Сырая неюзабельная хуйня без коммьюнити.
Аноним 18/07/19 Чтв 15:45:15 1438269476
>>1438268
Быстрофикс

> Gotham
Не Gotham, а Rocket
u16 += i8 Я из си пришёл говна нашёл 18/07/19 Чтв 21:58:13 1438501477
rust-add-assign[...].png (6Кб, 722x270)
722x270
Здравствуейте, аноны. Объясните, пожалуйста, как мне реализовать "+=" для i8 и u16, а так же для всего подобного? Куда смотреть? Был бы рад конкретному примеру. Пробовал втупую реализовать "AddAssign<i8> for u16", но не вышло ничего.
Аноним 18/07/19 Чтв 22:21:45 1438516478
Я из си пришёл говна нашёл 18/07/19 Чтв 23:03:17 1438546479
>>1438516
Теперь всё ебало в кастах. Ну, чтож, спасибо и на этом.

С одной стороны явное преобразование всё же лучше неявного, но с другой стороны код получается уродским.
Аноним 19/07/19 Птн 07:03:03 1438626480
20190719-4b757.png (36Кб, 1377x125)
1377x125
20190719-7d8b9.png (38Кб, 1148x162)
1148x162
20190719-806c2.png (4Кб, 648x20)
648x20
Аноны, как же так? Тупла, это же просто набор отдельных переменных - почему бы конпелятору не посмотреть, что там унутре, и, если там одни примитивы, не сконвертить?

Я, конечно, вона в какие замыкания могу, но некрасиво же.
Аноним 19/07/19 Птн 11:11:36 1438693481
>>1438546
Если реально дохуя кастов выходит, то можешь сделать newtype и для него уже реализовать то что тебе нужно. Из твоего скрина не очень ясно откуда какие числа берутся, но self.pc ты точно можешь завернуть в newtype и реализовать для него ужные действия. Еще не забудь накинуть на свой новый тип #[derive(Copy)], и выйдет вполне няшно, ну и Display возможно тебе еще придется реализовать элементарный (если много таких типов будет, то есть хороший крейт newtype_derive + macro_attr. Еще из плюсов такого подхода выйдет compile-time проверки типов передаваемых в функции (не знаю нужно-ли тебе это, но точно лишним не будет).
Аноним 19/07/19 Птн 15:08:01 1438800482
20190719-aedc8.png (88Кб, 837x619)
837x619
20190719-a0db2.png (87Кб, 530x705)
530x705
Аноны, а есть тут знатоки вулкана? Я тип пытаюсь в него, используя vulkano. Решил натянуть ужа на ежа, сову на глобус, текстуру на произвольный четырёхугольник (за основу взят image из примеров). Получилось. Но для этого пришлось ковырять шейдер, чтобы промапать конкретные координаты конкретного прямоугольника.
Что-то мне подсказывает, что можно лучше, но из коробки вулкан предлагает только обрезку и повтор. Ведь прямоугольников будет много, они будут морфировать, не переконпелять же шейдер каждый раз.
Аноним 19/07/19 Птн 15:18:52 1438816483
>>1438800
Как обычно, добавляешь в вертекс параметр текстурных координат и подставляешь.
Аноним 19/07/19 Птн 15:37:40 1438828484
mapped.png (56Кб, 256x256)
256x256
texture.png (11Кб, 128x128)
128x128
Аноним 19/07/19 Птн 20:38:19 1439104485
Ну до чего ленивый анон пошёл, а. Я вот сча сам нагуглил, что есть такие геометрические шейдеры - скорее всего они-то мне и нужны. Сперва натянуть текстуру на квадрат, а уж потом менять форму.
Аноним 20/07/19 Суб 12:15:57 1439331486
>>1439104
Т.е. ты начал спрашивать до того, как загуглил? Если бы не наша приверженность Code of Conduct, тебя бы уже покрыли хуями.
Аноним 20/07/19 Суб 20:07:52 1439627487
>>1439331
Я гуглил, потом спросил, потом ещё погуглил. И да, я таки до сих пор не уверен, что это то, что мне нужно.
Аноним 21/07/19 Вск 09:19:53 1439784488
>>1439627
Я так и не понял, почему тебе в массив вертексов не ложить сразу трапецию, и вот на неё уже натягивать текстуру. И это даже необязательно делать в шейдере. Ужас-ужас, придется использовать математику, но что поделать.
Аноним 21/07/19 Вск 21:35:15 1440179489
>>1439784
>сразу трапецию, и вот на неё уже натягивать текстуру
Дак о том и вопрос - как? Шейдером с математикой я уже натянул, вот только это штучное неоптимальное решение.
Аноним 24/07/19 Срд 17:23:34 1441724490
Сап, господа растаманы. Решил попробовать вкатиться, потихоньку осиливаю. Столкнулся со следующей проблемой - выразительные и вообще все из себя охуительные Enum в ржавчине не могут даже того, что можно было сделать в C. Суть:
1) По сети программе прилетают пакеты.
2) Каждый пакет промаркирован некоторым тегом.
3) Тегов 100500 x 9000 x 1337 разных штук и могут появляться новые, программу из этого разнообразия интересуют всего 20-30 идущих не по порядку (сначала 42, потом 146, потом 228 и т.п.).
4) Что хотел сделать я: загнать эти 20-30 тегов в Enum и сделать match по значению с дефолтным вариантом. В C было бы примерно так же.
5) Что выяснилось: в Rust так сделать нельзя. Начиная с того, что нет нормального способа сконвертить u32 в Enum. Есть std::mem::transmute, но программа будет падать, если значение не попадает на одно из описанных в Enum. Описать Enum со всеми значениями не представляется возможным чисто практически. Описать Enum с условно "дефолтным вариантом" типа Other(u32) не позволяет уже компилятор - discriminator values can only be used with a field-less enum. Каким-либо здравым образом проверить принадлежность значения Enum перед конвертацией чтобы реализовать метод типа from(u32) -> Option(Enum) тоже нельзя (можно просто создать новый массив, где перечислить все значения Enum as u32 - а если появится новое, его что, вручную вносить в два места?).
Можно не преобразовывать полученный u32 тэг в Enum, но тогда либо match превращается в ужасное говно вида "x if x == Enum::SomeValue => ...", либо вообще придется отказаться от Enum и в match засунуть цифровые значения тегов, подписав их в комментариях.
ЧЗХ, посоны? Почему Rust не может просто и красиво сделать то, над чем в C даже думать не приходилось?
Аноним 24/07/19 Срд 17:33:38 1441731491
Аноним 25/07/19 Чтв 00:00:10 1441921492
>>1371943
Макросы ведь есть вроде
Аноним 25/07/19 Чтв 13:03:20 1442155493
>>1441724
> ЧЗХ, посоны? Почему Rust не может просто и красиво сделать то, над чем в C даже думать не приходилось?

Потому что ты криворукий шизофреник (твой бред ОЧЕНЬ сложно читать).

> нет нормального способа сконвертить u32 в Enum
> реализовать метод типа from(u32) -> Option(Enum) тоже нельзя

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1e7ed7ab02a98a7c783877330380e177

Единственная проблема, которую я смог (вроде правильно) понять из твоего текста.

> даже думать не приходилось
Ну да, хуяк-хуяк и сегфолт. Тут так нельзя.
Аноним 25/07/19 Чтв 18:13:26 1442414494
>>1441731
Документацию я облизал вдоль и поперек, от книжки до by examples и nomicon. Нигде не нашел решения.
>>1442155
>Потому что ты криворукий шизофреник (твой бред ОЧЕНЬ сложно читать).
Спасибо на добром слове, я тоже тебя люблю. Описал все максимально кратко и понятно, может быть, несколько эмоционально.
>Единственная проблема, которую я смог (вроде правильно) понять из твоего текста.
Я в тексте же и описал ее потенциальное решение. Ну да, можно сделать и так, как ты написал. Но у меня этих значений не 2, а 20-30, причем они могут добавиться в перспективе. Это все в match пихать? Не говоря уже о дублировании информации.
>Ну да, хуяк-хуяк и сегфолт. Тут так нельзя.
В том и дело, что сегфолт как раз можно (при помощи unsafe, правда - transmute), а вот сделать Enum, у которого часть значений была бы описана явно константами, а часть явно или неявно (как в C) опускалась - невозможно даже с помощью unsafe.

Вот тебе пример того, что я пытаюсь сделать (на плюсах, правда, не на C, но это мелочи):
http://cpp.sh/6jlnh
Как такую же простую, примитивную и встречающуюся на каждом шагу штуку завернуть в расте?
Аноним 25/07/19 Чтв 18:56:47 1442439495
>>1442414
Впрочем, кажется, я уже подобрал решение. Не очень красивое, но, по крайней мере, без особых проблем. Associated constants спасут отца русской демократии. Если есть вариант интереснее - буду рад услышать.
Аноним 25/07/19 Чтв 19:34:09 1442460496
Аноним 25/07/19 Чтв 20:14:17 1442481497
>>1442460
Спасибо, принимается. Я не нашел, плохо искал, видимо.
// Хотя я все равно недоволен тем, что такие простые и базовые для любого системного языка вещи приходится костылить через левые пакеты. И ох если бы это был единственный пример... Весь Rust из такого состоит.
Аноним 25/07/19 Чтв 20:40:48 1442493498
>>1442481
А ты перестань мыслить сишными категориями и всё пройдёт. Зато теперь ты можешь любой набор байт превратить в этот Option<EnumType> и не потеряться по коду, что он и зачем. Это гораздо лучше, чем таскать число, постоянно держа в уме, что вот оно вроде число, но тут мы ещё проверим его на соответствие возможным значениям EnumType, поэтому это как-бы EnumType, но как-бы и не он.
Аноним 26/07/19 Птн 07:56:03 1442709499
>>1442414
>а вот сделать Enum, у которого часть значений была бы описана явно константами, а часть явно или неявно (как в C) опускалась - невозможно даже с помощью unsafe.

Тогда это вообще не енум, а хрень какая-то, тебе проще сделать 20 именованных констант в неймспейсе и матчить с интами. Более того, так даже в Си часто делают.
27/07/19 Суб 13:32:25 1443367500
Java-бог в треде. Ну ка объясните мне нахуя мне нужен раст, если в моем языка дохуя уже написано просто бери и соединяй.
Аноним 27/07/19 Суб 17:40:17 1443492501
>>1443367
Менеджед мудак в треде, спешите видеть.
Аноним 27/07/19 Суб 21:12:20 1443593502
>>1443367
1. 90% либ на жабе - костыли, нужные, чтобы хоть как-то этим говном без слёз пользоваться.
2. 100% либ на жабе - тормозное говно, ибо иначе на жабе никак
3. добровольно пишущих на жабе опенсорс just for fun почти нет. Опенсорс проекты на жабе, это либо под ведроид, где выбора нет, либо корпоративная отрыжка в апачеотстойнике.

так что, ты не бог, то просто макака, которой белые господа за банан поручили написать реализацию интерфейсов. В этом вся суть жабы: в разделении на господ и макак, что очень удобно для менеджмента.
28/07/19 Вск 10:49:37 1443756503
>>1443492
>>1443593
Какие-нибудь плюсы раста будут? Или будете продолжать гореть?
Аноним 28/07/19 Вск 11:23:03 1443767504
>>1443756
1. Сахарный из коробки. Итераторы, вывод на печать чего угодно, автовыведение типов, туплы. Сахарность почти как у питона, сам с него пересел. Сравни с жабой, где для каждой мелочи на stackoverflow предлагают городить костыльный класс на пару экранов.
2. Быстрый и нативный. Жаба в этом сливает даже питону, у которого каждая третья либа пишется с использованием cython или c.
3. Строгость и многообразие типов. Есть даже беззнаковые целые, прикинь.
4. Есть борроу-чекер. Конпелятор сам следит за тем, чтобы ты, мудила, не устроил data-race. Жабе тут вообще похуй - хочешь, используй атомики и мьютексы, а хочешь - нет и получай андефайнд бехэйвор.

лучшее, что может случиться с жабой - если её языковые возможности подтянут до раста. switch, вон, делают, знаковые собираются завезти. Т.е., чисто в теории, если пофантазировать, что они в 1000 раз ускорят её развитие, то по удобству она будет на уровне раста. Но, сцук, по скорости и потреблению ресурсов - как сосала, так и будет сосать. А по факту сосёт по всем параметрам, даже не знаю, что может заставить кого-то писать на ней, кроме большого бабла.
Аноним 04/08/19 Вск 11:04:25 1447816505
Как в растишке с сокетами работать? Есть какие-нибудь бест практис? Пытаюсь тут проксю написать, но io::copy на входной и выходной стримы мне тупо поток блочит, пока сокет не закроется. Как я понял, потому что eof не приходит. Как тогда вообще проверять, хочет ли сокет читать-писать? Нихуя не понимаю
Аноним 04/08/19 Вск 11:41:25 1447831506
>>1447816
Если ты работаешь с чем-то типа TcpStream, можно попробовать установить set_read_timeout. Если что-то другое, реализующее Read, то наверно читать маленькими буферами и копировать байты куда надо. Можно еще попробовать поиграться с асинхронщиной через AsyncRead.

А вообще если ты сидишь на юниксе и просто копируешь байты из А в Б, мне кажется, что проще просто работать с сырыми дескрипотрами и через dup2 (https://docs.rs/nix/0.14.1/nix/unistd/fn.dup2.html) перенаправить куда надо.
Аноним 04/08/19 Вск 11:43:22 1447833507
И вообще пора бы уже перекатить
Аноним 09/08/19 Птн 15:09:07 1450505508
Аноны, а могу я в макрос передать вызов функции так, чтобы вызов был осуществлён из макроса? Ну, тип, чтобы в макросе добавить к ней какой-нить длинный префикс или добавить к вызову пару параметров.
Аноним 09/08/19 Птн 17:20:10 1450567509
>>1450505
Нашёл, нужнo передать как stmt
macro_rules! unsafe_and_check {( $expr:stmt ) => (
let status = unsafe { $expr };
assert_eq!(status, OK);
)}
теперь другой вопрос - можно ли вывести на печать стейтмент?
Аноним 09/08/19 Птн 17:23:30 1450570510
>>1450567
> теперь другой вопрос - можно ли вывести на печать стейтмент?
stringify!($expr)
Аноним 09/08/19 Птн 19:29:04 1450599511
>>1450570
>stringify!
Воу, пасибо тебе, братишка. Получился такой макрос для вызова сишных хункций с возвратом статуса, будь они неладны.
macro_rules! unsafe_and_check {
( $stmt:stmt ) => (
let status = unsafe { $stmt };
assert_eq!(status, OK, "Got status '{:?}' when call {:?}", status, stringify!($stmt));
);
}
Аноним 17/08/19 Суб 13:54:28 1454962512
golang начали разрабатывать в 2007 году, а rust - в 2006 году, версия go 1.0 вышла в 2012 году, а rust 1.0 - в 2015 году
Почему rust до сих пор не взлетел? В то время как go уже стал стабильной частью ынтырпрайза.
Аноним 17/08/19 Суб 13:59:41 1454967513
>>1454962
Потому что Go это про быстренько запилить очередной REST API. А Rust это про системное программирование, которым занимается не так много народу.
Аноним 17/08/19 Суб 14:49:50 1455007514
Перекатите это говно уже.
Аноним 19/08/19 Пнд 19:31:12 1456441515
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов