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


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

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

Rust #8 /rust/ Аноним 19/08/19 Пнд 19:30:56 14564401
cEzxFOC.jpg (242Кб, 1200x859)
1200x859
1mi9l8jvmwg31.png (648Кб, 1200x991)
1200x991
15534466245691.webm (2422Кб, 1920x1056, 00:00:12)
1920x1056
Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.

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

https://www.rust-lang.org

Продолжение шапки: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41
Аноним 21/08/19 Срд 16:12:11 14576812
Screenshot2019-[...].png (133Кб, 720x1280)
720x1280
It's happening!
Аноним 21/08/19 Срд 16:30:11 14577013
>>1457681
и как скоро асинк запилят? левые крейты заебали, пердолинг с потоками тоже
Аноним 21/08/19 Срд 16:36:15 14577074
>>1457701
1.39 стейбл выходит 5 ноября по их словам. Но можно на найтли уже потыкать
Аноним 21/08/19 Срд 18:38:07 14578145
Кстати, по ощущениям компилятор стал намного шустрее.
Аноним 29/08/19 Чтв 20:46:36 14634136
Тут говорят, что rust для системщины. А что лично вы на нём написали для системщины, или хотя бы собираетесь писать?
Аноним 29/08/19 Чтв 21:07:41 14634417
Нахуя вам джва треда
Аноним 29/08/19 Чтв 22:08:19 14635148
>>1463441
№8 только один, это №7 два
Аноним 29/08/19 Чтв 22:24:47 14635239
Аноним 30/08/19 Птн 08:01:12 146362510
>>1463413
>rust для системщины
системный, не значит для. Значит, что он наиболее близок к ос и железу. Например, использует системные потоки.
Аноним 30/08/19 Птн 13:37:18 146378711
>>1463625
На Си тоже можно писать не только системщину, но мы же понимаем, что для прикладного ПО лучше всего подходят языки со сборщиком мусора.
Аноним 30/08/19 Птн 14:39:09 146385012
>>1463787
>мы же понимаем
Вы - это кто? Да и чего уж там - сразу один жабаскрипт для всего прикладного.
Аноним 30/08/19 Птн 15:49:02 146391513
Оказывается, для винды до сих пор нет драйвера F2FS. Было бы круто, если б кто-нибудь на расте драйвер запилил. С железом для разработки проблем не будет, так как флешки есть у всех. Линуксоиды тоже заинтересованы, ибо приходится давать флешки виндузятникам.
Аноним 30/08/19 Птн 17:23:03 146398914
Растишки, а есть какие-нибудь best practices и советв, как перестать воевать с borrow checker'ом и начать жить? Очень часто приходится некоторые места у себя переписывать из-за ссылок и лайфтаймов. Большое всего бесит наверное про несколько мутабельных заимствований или про получение ссылки на элемент структуры и вызов с &mut self с этой ссылкой а качестве параметра .
Аноним 30/08/19 Птн 17:41:36 146402115
com.jpeg (15Кб, 300x300)
300x300
>>1463989
>как перестать воевать с borrow checker'ом и начать жить
C++
Аноним 30/08/19 Птн 18:26:41 146407116
>>1463989
Либо смотри в сторону другой архитектуры, типа ECS, либо смотри в сторону более функционального подхода, либо юзай interior mutability, Rc, Cell, Arc, Mutex, вот это все.
Аноним 01/09/19 Вск 11:00:01 146504517
>>1463413
декодер, ресемплер
Аноним 01/09/19 Вск 13:20:17 146511018
>>1463989
Нормальный язык возьми
Аноним 01/09/19 Вск 18:45:47 146535519
>>1463989
Не используй ссылки, чтобы связывать между собой объекты. Заимствование - это строго для передачи аргументов в функции и для структур, которые живут сугубо на стеке. Для всего остального используй индексы в вектор или Rc. В особых случаях, когда ну прямо совсем-совсем критичен перформанс (перформанс с графовыми структурами, хех, мда), указатели.

>про получение ссылки на элемент структуры и вызов с &mut self с этой ссылкой а качестве параметра .

Есть причина, почему это не одна функция? Вытаскивать наружу кишки, а запихивать их же обратно - это как-то не по людски.
Аноним 01/09/19 Вск 22:11:45 146545320
1
Аноним 02/09/19 Пнд 14:09:23 146570721
>>1464071
Вот со всеми этими боксами ещё больше геморроя. Матчить что-то в них , borrowck орет ещё больше. Хотя может опыта просто нет нормального, как писать все это дело.
>>1465355
> Есть причина, почему это не одна функция? Вытаскивать наружу кишки, а запихивать их же обратно - это как-то не по людски.
А я и в одну функцию делал. Один хрен, в нее запихнешь, а в ней появляется еще одно мутабельное заимствование. Единственный воркэраунд нашел для этой штуки - это оборачивать такие переменные в RefCell и пропихивать его куда надо, но как-то больно уродливо получается. Ну да и что выше написал к нему же относится .
Аноним 15/09/19 Вск 21:55:06 147395722
>>1465707
Аноны, кто-нить пробовал скрещивать раст и NDK? У меня такой проблем:
через MaybeUninit создаю пустую структуру
скармливаю NDK-шной функции
после assume_init с простыми полями структуры всё збс - данные читаются и вполне валидны, но вот при обращении к ссылочным полям выкидывает сегфолт.
То есть, то ли проблема при конвертации изначально сишного пойнтера в растовый, то ли при вызове что-то недоинициализировалось, то ли я заголовки криво сконвертил через bindgen, то ли ещё ебола какая.
Аноним 16/09/19 Пнд 00:31:13 147405623
>>1473957
Оставь в структуре сишный указатель и определи функцию, которая кастит указатель к с ссылке через разыменование. Ты не вызываешь мутабельные операции, используя немутабельные ссылки?
Аноним 16/09/19 Пнд 11:31:49 147417724
>>1474056
Попробовал, не помогло. Короч, было так: структура, а у ней внутри анонимный union с указателями. bindgen сделал внешний тип union и вставил поле с ним в структуру. В итоге помогло тупо засунуть указатели из этого union в исходную структуру.

Вообще, чё-т дохуя накопилось уже правок в сгенеренном bindgen-ом заголовке, хоть в гит его добавляй
Аноним 16/09/19 Пнд 13:26:18 147422625
>>1456440 (OP)
Поясните фастом без особых подробностей о языке по хардкору.
Если заинтересует, хочу вкатиться. От С блевать уже тянет.
Что на нем можно писать? Системное по? Мобилку? Гуи? Веб?
Есть какие-то либы для облегчения жизни и менеджеры зависимостей?
Что там с платформозависимостью? Есть какие-то фатальные недостатки или жуткие изъебы языка?
Спасибо.
Мимо perl, С программист
Аноним 16/09/19 Пнд 14:20:28 147429526
>>1474226
>Что на нем можно писать? Системное по? Мобилку? Гуи? Веб?

Системщину и микросервисы да. Остальное пока в зачаточном состоянии. Ты можешь, например, подключить к проекту на Кутях растовую статическую либу через FFI, но работа с гуём из самого Раста пока только через всратые биндинги. Пилят какие-то штуки для фронтенда на ВАСМ.

>Есть какие-то либы для облегчения жизни и менеджеры зависимостей?

Есть встроенный cargo, пишешь в конфиг название пакета, скачиваешь мегабайт исходников и всё работает.

>Что там с платформозависимостью?

Более менее всё, где есть ЛЛВМ, поддерживается, но есть платформы второго и третьего класса. А так, люди, вроде бы и ОСи пишут, и диодами мигают.

>Есть какие-то фатальные недостатки или жуткие изъебы языка?

Если не считать изъебов с борроу-чекером и мов-семантикой, язык на порядок проще плюсов, да и, в каких-то отношениях, чего-то типа СиСярпа, особенно если не нужно трогать Ансейф. Замыкание - это просто структ с одной функцией, Фьючур - это просто конечный автомат, и т.п.
Аноним 16/09/19 Пнд 14:32:55 147432127
>>1474295
Спасибо. Думаю, стоит потратить недельки 2-3 на вкатывание, а там посмотрим как зайдет.
Аноним 16/09/19 Пнд 15:24:06 147437328
растишки, дайте какой нить гайд по async/await
тока без сторонних крейтов по возможности
Аноним 16/09/19 Пнд 17:40:24 147445329
Аноним 16/09/19 Пнд 17:48:21 147445830
Аноним 16/09/19 Пнд 19:12:39 147451331
Аноним 16/09/19 Пнд 21:02:50 147456232
20190917-0c0ed.png (72Кб, 1526x293)
1526x293
Аноним 16/09/19 Пнд 22:01:34 147486433
Аноним 16/09/19 Пнд 23:53:51 147495834
Аноним 17/09/19 Втр 10:15:58 147506535
>>1474864
Да, я про expect позже уже сам вспомнил. А тут что-то переклинило, помню, что вроде бы какой-то особый unwrap, а что конкретно - не помню - взял и наваял, а оно вон как.
А ведь то, что я сочинил, было бы даже лучше, если бы было признано идиоматичным и работало нормально.
Аноним 17/09/19 Втр 18:07:45 147541536
Аноним 18/09/19 Срд 00:05:28 147576337
Аноним 18/09/19 Срд 00:15:40 147576638
Аноним 18/09/19 Срд 07:59:14 147584239
>>1475415
Да, вариант с find + expect был бы самый оптимальный. Плохо то, что способов сделать одно и тоже, в итоге, овердохуя, и мой вариант зачем-то сконпелировался.
Алсо, паника в моём варианте указывает на то, что любой вызов в unwrap_or будет выполнен, независимо от того, нужен тебе результат или нет. Даже так - можно просунуть вызов любой функции, оно также сконпеляется, и выполнит функцию.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=c55b015785a2b64b0d5c505bd6434ddf

Хотя если просунуть напрямую ту же строку, которую она возвращает, то результат будет другой
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=79d0246d783c94b0237c8d483c0cc659

Короче, я ни хуя не понимаю, если это не ошибка разрабов языка, то что. Багулю завести, что-ль..
Аноним 18/09/19 Срд 08:00:35 147584340
>>1475842
>результат будет другой
бля, туплю, результат будет тот же. Но вот вызывать замыкание в примере выше вообще не нужно было.
Аноним 18/09/19 Срд 15:39:39 147612341
>>1475843
>Arguments passed to unwrap_or are eagerly evaluated; if you are passing the result of a function call, it is recommended to use unwrap_or_else, which is lazily evaluated.
Аноним 18/09/19 Срд 17:47:22 147621642
>>1476123
И вот так, шаг за шагом, наступая на грабли на каждой строчке, я таки напишу свой хэллоуворлд. Впрочем, я утрирую, не всё так плохо, конечно.
Аноним 18/09/19 Срд 18:09:31 147624643
>>1476216
Вообще если у тебя проблемы с понимаем почему это так работает, тебе бы лучше SICP почитать.
unwrap_or это обычный метод, который на вход принимает значение. Поэтому параметр будет вычислен перед передачей. А раз у тебя там была паника, то она взорвет приложение.
Код вида foo.bar(panic!("pizda")) не вызет ведь вопросов?
Аноним 18/09/19 Срд 20:02:45 147633444
14316389337740.jpg (82Кб, 268x265)
268x265
>>1456440 (OP)
>3 webm
А как так сделать?
Хочу вкатиться в раст и зачекать язык в целом, искал идей для мини проекта. То, что на вебмке очень хочется повторить но с другим ресурсом ест-но.
Аноним 18/09/19 Срд 20:21:09 147636945
>>1476246
>SICP почитать
чтобы охуеть, выкатиться и не мешать серьёзным дядям шлёпать круды?
Аноним 19/09/19 Чтв 01:02:33 147653546
Почему это говно провалилось?
Аноним 19/09/19 Чтв 10:22:22 147664147
>>1476216
А ты свой код спиздил, или нашел этот метод документации? Потому что если ты читаешь описание до половины, у тебя в каком угодно языке будут проблемы, лол.
Аноним 20/09/19 Птн 08:33:39 147739448
>>1476535
слишком эзотерическое говно
Аноним 24/09/19 Втр 15:26:29 148073349
Аноним 25/09/19 Срд 00:06:56 148121550
15364322638960.jpg (12Кб, 373x200)
373x200
>>1480733
Спасибо тебе, анон.
Аноним 26/09/19 Чтв 08:20:58 148194751
Зачемпотерли пост про сжв плюсовичку?
Аноним 26/09/19 Чтв 08:48:22 148195152
Лол. Тест.
Аноним 26/09/19 Чтв 08:48:47 148195253
IMG201909240831[...].jpg (295Кб, 2409x1314)
2409x1314
К.
Аноним 26/09/19 Чтв 08:51:34 148195354
Ену
Аноним 26/09/19 Чтв 20:29:14 148249255
20190927-eea77.png (19Кб, 722x113)
722x113
20190927-3f9f5.png (17Кб, 587x127)
587x127
Эх, аноны, какой же это пиздос.
Аноним 26/09/19 Чтв 20:55:46 148252856
Аноны, как передавать растовые функции как сишные коллбэки? Если просто объявить функцию
extern "C" fn blabla () {}
и передать без задней мысли - сишный код это схавает? А то растовый-то конпеляется.
Аноним 28/09/19 Суб 15:22:35 148363457
>>1482492
Ты уверен, что у тебя нет проблем с версией либы? Там из новых версий убрали GlobalRef::new(), может ещё какая-то херня с этой функцией была в разных версиях, до того как убрали.
Можно попробовать прописать полный путь: jni::objects::GlobalRef::new
Маловероятно, но вдруг это GlobalRef::new из какой-то другой либы?
А если нет, то пиздос, да.
Аноним 28/09/19 Суб 17:34:01 148379458
>>1483634
Да, я видел, что убрали, откатился на последнюю, для которой дока написана - а там это. Видимо, потому и убрали, что такая свистопляска. Ну да я пока кастанул типы через as , конпелируется, правда, я пока это даже не пробовал запускать на живом ведроиде - наверняка куча ошибок повылазит.
Ты тоже жабу с растом скрещиваешь?
И, если вдруг, тоже под ведроид?
Аноним 28/09/19 Суб 19:49:17 148396659
image.png (37Кб, 1044x256)
1044x256
>>1483794
Лол, нет, просто стало интересно, почему такая хуета могла возникнуть, загуглил "GlobalRef::new rust", а мне выдало старую версию либы. Я посмотрел сорцы того, что мне выдало на
https://docs.rs/jni/0.5.3/jni/objects/struct.GlobalRef.html
Там вроде как не должно выпадать такой проблемы. Посмотрел ещё последнюю версию этой либы, но другие смотреть уже не полез, своих забот полно.
Аноним 29/09/19 Вск 06:29:05 148425960
3bc7bc030fad10c[...].jpg (70Кб, 640x570)
640x570
>>1456440 (OP)
Привет, двач. Есть у кого на примете годный курс лекций по алгоритмам? Знаю, что библией алгоритмизации считается книга Кормэна(потом по нисходящей идут Дасгупта и Бхагарва, тоже знаю) и мне нравится её полнота, однако, формальный язык очень и очень отталкивает, не способствуя пониманию. Да и вообще, формат лекций мне как-то ближе, нежели просто чтение книги. В общем, какие требования? Полнота(речь не об N-полноте, лол) Кормэна в сочетании с интересным, не сухоформально рассказывающим преподом. А, да, и чтобы на русском(знаю, что охуел). Подскажите чего по сабжу?
Аноним 01/10/19 Втр 04:38:42 148589461
Че, растаны, когда ATC завезут? А то как лохи без манаток сидите.
Аноним 01/10/19 Втр 09:57:43 148597762
Аноним 01/10/19 Втр 10:40:42 148598863
>>1485977
Associated type constructors. Ну или Generic associated types, кому как нравится
Аноним 01/10/19 Втр 16:51:38 148628064
Аноны, поясните, как вы живете с tokio, блятб. Я заебался вкуривать, как мне данные считывать циклически и передавать их на обработку связанной структуре.
В asio я могу заюзать например async_read(...), пихнув в callback shared_ptr с контекстом и потом вызывать это чтение дальше до тех пор, пока не произойдет какой-нибудь пиздец.
Посмотрел в tokio, ебать в рот, какой-то хуй обсасывает пример как клиентом подключиться - с фьючерсом, естественно, но там какое-то блокирующее дерьмо по итогу выходит в работа в полудуплексе. Есть нормальное чтиво для понимания как это дерьмо разгребать, а то меня по-маленьку этот ваш Rust начинает вымораживать со своими "выебонами".
Аноним 01/10/19 Втр 18:14:47 148636365
Аноним 01/10/19 Втр 18:30:46 148637966
Аноним 01/10/19 Втр 18:32:20 148638367
>>1486280
Бросай это говно для смузихлебов и иди в кретред.
Аноним 01/10/19 Втр 18:32:51 148638468
Аноним 01/10/19 Втр 19:13:55 148642569
>>1486280
Я не спец, но могу посоветовать https://github.com/tokio-rs/tokio#example
если тебе в этом примере ничего не понятно, значит ты какой-то тупой покури ещё мануалы/попиши хэллоуворлды.
Аноним 05/10/19 Суб 17:42:52 148946870
Учусь в вузике, не могу решить что учить, раст или кресты. С одной стороны все говорят что раст много лучше, но с другой вакансий то нет.
Аноним 05/10/19 Суб 18:26:21 148949771
Аноним 05/10/19 Суб 22:25:42 148968772
>>1489468
Двачую кресты. Сначала наступишь на все крестовые грабли, зато потом, перейдя на раст, не будешь ругаться на борроучекер.
Аноним 05/10/19 Суб 22:30:19 148969073
>>1489468

На каком курсе?
Если на младших, то у тебя есть время, и лучше поебись с С. Полезнее будет.
Если на старших и уже поджимает искать первую работу, не трать время, лучше C#/Java.

К расту вернёшься, когда износишь пятый свитер и отрастить бороду.
Аноним 06/10/19 Вск 00:07:26 148974974
>>1456440 (OP)
Давно не интересовался этим перспективным языком. Скажите, нечитаемые неинтуитивные сообщения компилятора уже пофиксили?
Аноним 06/10/19 Вск 08:37:22 148985275
Аноним 06/10/19 Вск 08:44:19 148985676
Аноним 06/10/19 Вск 08:52:08 148985877
Аноним 06/10/19 Вск 08:53:07 148985978
>>1489858
у зумера всегда язык виноват
Аноним 06/10/19 Вск 09:44:43 148987579
>>1489859
>язык виноват
Это вопрос для долгой дискуссии. Однако, могу назвать сходу 3 возражения:
1. Лучше учиться правильно управлять памятью на ошибках конпелятора, чем рантайма.
2. Ты не всегда можешь знать наверняка, что с твоими данными сделает сторонняя либа. Каждый раз лазить в исходники? Ну нафик. А раст тебе сразу скажет, что сторонний крейт хочет то и это, поэтому обеспечь, пжалста, вот это.
3. Я не зумер и всю жизнь избегал сей с плюсами ровно потому, что мне бы програмить, а не о подводных камнях думать. Раст тут думает за меня
Аноним 06/10/19 Вск 19:08:16 149032680
>>1489875
>Лучше учиться правильно управлять памятью на ошибках конпелятора, чем рантайма
Задумка годная и намерения благие, а как на деле? Вот например есть Standard ML с математически доказанной безопасностью. Почему мне стоит выбрать Rust а не его?
Аноним 06/10/19 Вск 19:13:19 149033781
>>1490326
Как минимум потому что crates.io
Аноним 06/10/19 Вск 20:45:56 149045982
>>1490326
Это как гвидон vs руби. Как бы ни был второй прогрессивнее, но первый выбирают из-за батареек. Так и с растом - он уже взлетел, есть куча батареек и мануалов, отзывчивое коммьюнити, это вот всё. Даже если появится что-то в теории лучше, на практике все, кому нужна безопасная работа с памятью без сборки мусора - уже на расте.
Аноним 06/10/19 Вск 21:02:06 149049683
>>1489468
Не стоит вопрос что учить. Язык учится в процессе разработки программы.
Стоит вопрос на чём эффективнее писать софт. Неверно принятое решение может потом дорого стоить.

Т.е. вопрос сводится к: в каких случаях в 2019-2020 лучше взять Rust, чем C++.
При этом для простоты можно допустить, что пишем новый код с нуля и можем использовать любые последние версии инструментов.
Здесь сразу возникает куча дополнительных критериев: сколько человек будет в команде, на какой срок рассчитан проект, предметная область и т.д.
Допустим, у нас какая-нибудь числодробилка, т.е. нужна максимальная производительность на конкретном железе. Команда 5-10 человек, срок разработки 2-5 лет.

Попытаемся сравнить.

C++
+ куча готовых библиотек отличного качества
− в языке куча подводных камней, всегда есть риск облажаться, особенно, если разработчик малоопытный
+ язык популярный, у заказчиков не возникнет вопросов, если вдруг кто захочет в код полезть

Rust
− библиотек гораздо меньше, многие сомнительного качества; да, можно подрубать по FFI, но это лишняя работа и трата времени (хотя возможно и не особо серьёзная в контексте проекта на несколько лет)
+ выстрелить себе в ногу гораздо сложнее
− выбор маргинального языка придётся обосновывать

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

Язык мне нравится, он уже не настолько маргинальный, как звезда хайпа прошлых лет - Haskell, выглядит практичным, продуманным и удобным.
На нём уже пишут какой-то софт, та же мозилла (хотя и про хаскель можно то же самое сказать, и на нём писали немало).
Но всё равно не хватает по-моему до того, чтобы выбрать раст для решения практической задачи.
Здесь ему немного не повезло - плюсы начали активно развиваться и реализовали многие вкусные фичи. Не было бы C++11 и последующих стандартов, тогда бы Rust конечно выглядел шикарно, а так единственное серьёзное преимущество это что язык изначально сдизайнен грамотно.
Аноним 06/10/19 Вск 22:31:38 149060584
>>1490496
>та же мозилла
А ещё гугл, Cloudflare и пейсбук - так что, вот прямо в данный момент, не маргинальный. Алсо, в твоём исходном условии
>какая-нибудь числодробилка
уже подразумевает некую изолированность от внешних библиотек, поэтому этот минус тоже в минус.

Что касается хачкеля, то ему решительно не хватило плюсов (пгостите за каламбур) - одного "сконпелировалось - значит будет работать правильно" оказалось недостаточно, чтобы переманить на него с жабы и питона - т.к. скорость разработки на хачкеле куда ниже. У раста же с этим проблем нет - скорость написания на нём примерно та же.
Аноним 06/10/19 Вск 23:07:36 149063885
>>1490605
>А ещё гугл, Cloudflare и пейсбук
Пробуют на единичных проектах, не более. Зачастую это просто инициатива конкретной команды/разработчика. Если полазить по гитхаб-организациям этих компаний, там и более редкие языки можно найти. Например, OCaml.
Активнее всего продвигает мозилла, оно и понятно, остальные пока не так активны. Просто осторожный интерес.

>уже подразумевает некую изолированность от внешних библиотек
По большей части да, но мало кто вообще никакой внешний код не импортирует. Обычно будет хотя бы несколько библиотек. Или по крайней мере скопипащенные в свой проект исходники на си/плюсах.
Аноним 06/10/19 Вск 23:13:48 149064386
Ещё бы нормальный игровой движок на нем, гейрабы мигом распробовали бы.
Аноним 08/10/19 Втр 00:25:34 149140087
Rust не тони
Аноним 08/10/19 Втр 12:17:55 149157688
>>1491400
А почему нет? У нас есть SO, растофорум на английском и куча книжек по расту. Зачем нам ещё на дваче тредак?
Аноним 08/10/19 Втр 16:42:28 149175089
Аноним 08/10/19 Втр 18:01:08 149180590
Аноним 08/10/19 Втр 18:25:09 149181491
>>1491750
На реддите была какая-то тема с вакансиями.
Аноним 08/10/19 Втр 18:29:32 149181792
>>1491814
Более того на реддите постоянно висит реклама от parity.io про вакансии на расте. В общем, было бы желание.
Аноним 10/10/19 Чтв 08:40:15 149286493
>>1491814
Мне бы вот в расеюшке. Переезжать не хочу, семья тут. А удаленка - это то ещё приключение. Зато на гошке вон даже в мухосранях вакансии есть. И мозгами шевелить не нужно , когда на ней что-то пишешь.
Аноним 10/10/19 Чтв 11:39:22 149299094
>>1490643
Ой нахер. Я после своего опыта на sdl2, попытался переписать свою одну игрулю на растишку и только поел говна. Все слишком сложно, передавать туда сюда игровые объекты внезапно стало трудно. Я вроде с растом где-то уже год вожусь, а когда начинаются проблемы с борровком и лайфтаймами, то все, ласты клею. В плюсах все те же махинации обстоят гораздо проще. Так что лучше так же , как и раньше на них писать и не страдать ерундой, выбирая БизАпАснаТь.
Аноним 10/10/19 Чтв 11:53:24 149300495
>>1492990
Есть же RefCell, эдакий "Мамой клянусь" - обёртывай в него, когда совсем туго.
Аноним 10/10/19 Чтв 15:38:37 149314896
>>1491814
Нахуй твой soydit не нужен.
Аноним 10/10/19 Чтв 15:39:07 149314997
>>1492864
> Переезжать не хочу, семья тут.
Господи, какое же быдло.
Аноним 10/10/19 Чтв 17:05:07 149323398
>>1493149
Будет круто, если после такого комментария ты пруфанёшь своё местоположение

мимо
Аноним 10/10/19 Чтв 17:34:53 149327299
>>1493233
Мнение про "быдло" не разделяю, но сам переехал с семьей. Зависимость есть, брат жив.
Аноним 10/10/19 Чтв 18:43:02 1493316100
>>1493272
Куда переехал, как живется?
Аноним 10/10/19 Чтв 20:00:55 1493370101
>>1493004
И как жить потом со всеми Option<Rc<Refcell<..ещё какая-нибудь херня..>>>?
Аноним 10/10/19 Чтв 20:36:22 1493411102
>>1493370
Превозмогать. Можно и без Rc, и без RefCell, на одних лайфтаймах выехать - если грамотно структуру приложения и данных выстроить. А если ты в тупую сишный код переписываешь, ну дак так оно и будет.
Аноним 10/10/19 Чтв 23:15:27 1493554103
>>1493316
В Норвегию. Збс живется.
>>1493370
Посмотри, например, на specs. Никаких Rc/RefCell.
Аноним 11/10/19 Птн 00:58:26 1493604104
1.png (136Кб, 400x388)
400x388
>>1493554
такую хуйню тебе писал когда сходил с ума изза пездеца по жизне спасибо за все люблю тебя респект до гроба
Аноним 11/10/19 Птн 13:05:27 1493830105
Ну что, ржавожопые, работу нашли уже?
Аноним 11/10/19 Птн 18:06:31 1494086106
>>1493554
> specs
Знаю про эту штуку. Но я пытался свои плюсовые велосипеды переписать. Там у меня и компоненты сгруппированы в памяти. И индексы для них хорошие. Хотел чисто поглядеть, насколько похожа будет производительность. У спекса просто интересно бы ещё пробенчмаркать что-нибудь более-менее тяжёлое. Хотя оно наверное и не надо. Век уже не тот, чтобы игры оптимизировать
Аноним 12/10/19 Суб 18:12:35 1494915107
Анука анонцы, скажите, а что на нём пишите лично вы или собираетесь. Хоть один? Напоминает хаскелиную историю: всё можно, но на деле никто не будет
Аноним 12/10/19 Суб 18:48:44 1494954108
>>1494915
Собираюсь контрибьютить в графический менеджер redox и потом портануть его на линупс, потому что даже в модном mutter-wayland память корраптится, аноны радуются артефактам на экране, баги не фиксятся годами, а самому пофиксить нереально из-за конченной культуры разработки free desktop
Аноним 12/10/19 Суб 19:11:49 1494972109
>>1494954
начинай портировать, а там и законтрибьютишь
Аноним 12/10/19 Суб 20:37:49 1495025110
>>1494954
>портануть его на линупс
А тулкиты под него тоже сам портанёшь?
Аноним 12/10/19 Суб 23:10:57 1495131111
>>1494915

> всё можно, но на деле никто не будет
Хз, уже второе место работы подряд, где пишу на расте. Первое - блокчейны, сейчас - решение, связанное с ИБ.
Аноним 13/10/19 Вск 07:26:12 1495336112
>>1495131
>Первое - блокчейны
шта, Данила, не вышел каменный цветок?
Аноним 13/10/19 Вск 09:28:19 1495370113
>>1495336
Ну как не вышло, заебали задачи + заебала удаленка. Ща в офисе сижу, заебись.
Аноним 13/10/19 Вск 10:48:11 1495397114
>>1495025
Ты про qt/gtk? Они умеют в wayland, так что достаточно его поддержать в orbital. А может уже кто-то чисто под wayland написал DM и композитор на расте. Тогда еще проще
Аноним 13/10/19 Вск 11:32:44 1495415115
>>1495397
По "rust wayland" гуглится несколько проектов, насчёт WM не уверен, что есть что-то юзабельное. Как по мне, слишком масштабная задача, слишком много там внутри подводных камней, связанных с драйверами, тулкитами и прочим. Такое делать нужно сразу большой командой, имея кучу бабла, менеджмент, роадмапы и пиар.
Иначе будет очередной проект " Latest commit ab123cd 2 years ago".

Если бы я за такое брался, я бы делал что-то вроде юнити-7 поверх вяленого - так больше шансов получить пользовательскую базу. Но это такое моё имхо.
Аноним 13/10/19 Вск 11:59:42 1495426116
>>1456440 (OP)
Сап. Как создать указатель на:
SystemTime::now().duration_since(UNIX_EPOCH).ok().expect(...)
Тип справедливо выводится, как
Duration, а не fn() -> Duration
Можно сделать указатель на:
SystemTime::now().duration_since
Но тогда все ровно каждый раз придётся обрабатывать Result. Писать врапер?
Аноним 13/10/19 Вск 12:35:32 1495440117
>>1495415
Мне нравится gnome 3 wayland в целом - шустро, красиво, относительно стабильно, так что цель - более стабильный mutter, можно даже кусочек от него. Но вообще ты прав, задача навскидку довольно большая. В любом случае как минимум получу реальный опыт rust-а
Аноним 13/10/19 Вск 13:46:38 1495490118
>>1495426
Че сделать-то хочешь? Залей пример на плейграунд.
Аноним 14/10/19 Пнд 13:33:22 1496378119
Аноним 14/10/19 Пнд 19:20:13 1496615120
Аноним 20/10/19 Вск 12:41:55 1500526121
Аноним 20/10/19 Вск 12:57:56 1500539122
1429008356731.jpg (50Кб, 600x600)
600x600
Аноним 20/10/19 Вск 13:22:45 1500559123
>>1500526
Высокохудожественный говно-анализ посредтвенного перевода. Детишки играют в испорченный телефон, ок.
Аноним 20/10/19 Вск 18:15:16 1500865124
>>1500526
Насколько ты готов слушать человека, который считает, что в Расте можно шарить между потоками только глобальные переменные?
21/10/19 Пнд 03:38:37 1501196125
Аноним 21/10/19 Пнд 19:34:28 1501746126
>>1500526
"Если вас по телефону
Обозвали дураком
И не стали ждать ответа,
Бросив трубку на рычаг,
Наберите быстро номер
Из любых случайных цифр
И тому, кто снимет трубку,
Сообщите - сам дурак."

Долбоёбы были, есть и будут, тут ничего не поделаешь. Но нехуй тут всем доказывать, что ты тоже долбоёб. Окей, раст бесполезен, если ты уже пять десять пятнадцать лет хуяришь код на си или крестах. И что дальше? Проблему обезьян, которые хотят в скорость, но не могут в с(++), ака "я уже не чувствую ногу, дайте мне то, чем я не смогу в неё выстрелить", раст решил, а больше и не надо. Да, я ленивая мразь, которая хочет решать свои йоба-задачки без ебли и кучи UB, которые желательно все помнить. Но это мои йоба-задачки, хули ты тут вылез со своей пропагандой антипропаганды?
Аноним 22/10/19 Втр 08:21:53 1502002127
>>1501746
>пропагандой антипропаганды?
эм, скорее антипропагандой пропаганды. Да и, кстати, в примере, который они обсасывают, ясно же сказано, что чувак, типа, вообще не программист. Берёт сишечку и наступает на все возможные грабли, но в рантайме. А потом берёт раст и снова наступает, но уже при сборке.
Аноним 22/10/19 Втр 22:40:49 1502566128
Аноним 24/10/19 Чтв 00:05:03 1503486129
>>1500526
Пиздец. Узколобый подумал, что обсирают его любимую сишечку, но основная мысль статьи на хабре была другая: хруст не даёт сделать хуйню. Дебил сагрился на побочку
Аноним 24/10/19 Чтв 00:10:39 1503491130
1.png (244Кб, 1920x1080)
1920x1080
Ньюфаг в треде. Можно ли писать в подпроцесс и читать из него в цикле? Без использования сторонних крейтов.
Аноним 24/10/19 Чтв 11:28:26 1503694131
>>1503491
А чего у тебя сублайм не зарегистрирован? Пират чтоль??
Аноним 24/10/19 Чтв 14:23:33 1503798132
Аноним 24/10/19 Чтв 17:19:11 1503906133
2019-10-24-1618[...].png (85Кб, 1320x469)
1320x469
Аноним 24/10/19 Чтв 17:53:39 1503929134
Все смеются над вами, что у вас работы нет.
Вы похожи на христиан во времена римской империи, когда они были мелкой сектой.
Аноним 24/10/19 Чтв 19:52:54 1503998135
>>1503929
Звучит как комплимент.
24/10/19 Чтв 20:19:26 1504019136
чад-трудоустроенный > маня-теоретик > борщехлеб > сикпист > говно > моча > RUSTист
Аноним 24/10/19 Чтв 20:20:22 1504021137
>>1504019
Мань, ну не бомби. И тебя тоже когда-нибудь возьмут.
Аноним 24/10/19 Чтв 21:31:18 1504086138
Я хз как вы работу ищете, меня сраного дотнетчика-бекендера с опытом хуйлоада/дистрибутеда с облаками и видеонаблюдением за последние 2.5 года около 10 раз звали на вакухи писать сраные сетевые/стриминговые/игровые сервисы, где раст или желателен, или даже обязателен . Как раз 2.5 года назад я в резюмешке на хх/линкдине указал раст на микроконтроллерах в качестве хобби, в акке на гитхабе вообще пусто.

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

Прост для ждунов/милдов на расте работы рили нет и хорошо, а у синьоров/лидов опыт нерелевантный описан.

Посмотрите на растовые вакухи, в тч из других стран (в том же this week in rust), поймите, что серьезные дяди на нем делают, и расставьте соответственно акценты в своей резюмехе. Понятно что фронтендера с 10лет опыта на джс не будут звать делать бэк на расте.

И да, не ищите растовакухи на хх. Линк и ангеллист - от туда меня в основном хантили, на индид говорят еще часто появляются, но я там не зареган. А лучше вообще ходить на митапчики типа @ruRust_msk , хоть узнаете, как докладчики работу нашли. Не забудьте напечатать себе визиток с крабиком лол
Аноним 24/10/19 Чтв 22:07:17 1504124139
>>1504019
Подтверждаю.
мимо сикпист-борщехлёб, трудоустроенный питономакакой
Аноним 25/10/19 Птн 00:03:13 1504213140
>>1504086
Кстати, я заметил что в раст пытаются перекатиться очень много дотнетчиков. С чем это может быть связано?

Алсо, сколько у тебя опыта работы?
Аноним 25/10/19 Птн 00:05:24 1504216141
>>1504213
Вангую что это те дотнечики, который виндовые формы клепали.
Аноним 25/10/19 Птн 00:06:29 1504217142
>>1504216
Просто я сам дотнетчик, пилю всякое веб-говно, и хочу перекатиться
Аноним 25/10/19 Птн 00:13:52 1504220143
>>1504217
Перекатится во что и ради чего. Хочешь клепать веб говно на расте?
Аноним 25/10/19 Птн 01:25:02 1504241144
>>1504213
> Кстати, я заметил что в раст пытаются перекатиться очень много дотнетчиков. С чем это может быть связано?
Хз, у меня другая статистика по совсем нерепрезентативной выборке (из бывших коллег и знакомых):
C++ gamedev -> nodejs backend -> rust backend,
Python QA automator -> python backend -> rust backend,
C embedded -> c + c++ + asm в реверсинге -> то же + rust в каком-то инфобезе

Есть еще чувак, которого я года 3 назад из трейни довёл до стронгмидла-почтисеньора в aspnet fullstack, он удаленно поработал в пяти сраных крипто-блокчейно стартапах на rust+scala/nodejs/go/etc, и везде дольше полугода не задерживался.

> Алсо, сколько у тебя опыта работы?
12 лет в IT, из них 9 в разработке, из них 2 тимлидства.

>>1504217
> Просто я сам дотнетчик, пилю всякое веб-говно, и хочу перекатиться
Попробуй сначала из крудо-формошлепства перекатиться в чистый бекенд с кафками-куберами-облаками-grpc'ми-числодробилками-хуйлоадом, или с текущим стеком вкатись в предметку, которую часто на расте пилят, типа сраного криптоблокчейна - будет гораздо легче найти работку на расте.
Аноним 26/10/19 Суб 21:41:51 1505563145
Ребят, вопрос к знатокам. У меня возникла задача -- разработать виртуальную машину для основанных на System F и ее вариациях ЯП.
Для довольно узкой области, поэтому на всеобщность и очередного убийцу жабки/erlang/чего там еще не претендую. Раст мне понравился, потому что на нем можно без мозгоебли уровня крестов сделать то, что будет работать и работать будет быстро. К сожалению, скорее всего, буду реализовывать на си, потому что мне нужно часто вручную управлять памятью для реализации сборщика мусора да и вообще почти всего, что только возможно. Собственно, вопрос: целесообразно ли разрабатывать подобную систему на расте, если предполагается хитровыебанный алгоритм сборки мусора и если да, то как идиоматичнее обходиться с raw memory?
Аноним 26/10/19 Суб 22:09:06 1505595146
Аноним 26/10/19 Суб 22:35:39 1505633147
>>1505595
О, благодарю. Тут все то, что мне нужно.
Аноним 26/10/19 Суб 22:42:43 1505648148
>>1505563
Мда, так все просто делалось, а я через какую-то жопу память выделял.
Аноним 27/10/19 Вск 11:39:06 1505989149
>>1505563
>Раст мне понравился, потому что на нем можно без мозгоебли уровня крестов сделать то, что будет работать и работать будет быстро.
В низкоуровневых штуках которые ты собираешься писать он выебет тебе мозги ещё сильнее, лол. Хотя бы для рантайма, просто возьми C и не выёбывайся — точно напишешь быстрее.
Аноним 27/10/19 Вск 12:24:56 1506006150
Господа, подскажите, пожалуйста, в какую сторону мне копать, чтобы решить проблему.
Где-то год назад видел на сях либу, в которой реализовывались потоки уровня пользователя, причем преемптивные. Т.е., по истечении некоторого кванта времени в процесс посылался сигнал и происходило переключение исполняемой функции, с сохранением состояний регистров текущей функции в специально отведенный стек.
Вопрос следующий: как реализовать подобное на расте? Точнее, что можно почитать, чтобы стало понятно, как это реализовать, т.к. просто взять готовое слишком скучно, хочется понять, как оно сделано.
Аноним 27/10/19 Вск 12:31:08 1506013151
>>1505989
Ну вот я почитал книжку, которую мне вчера скинули, и понял, что у меня просто будет один огромный кусок unsafe-кода, так что проще на сях написать всю работу с потоками, исполнение байт-кода, jit-компиляцию, вот это все. И тогда закономерный вопрос -- а стоит ли тащить вторую технологию в стек?
Аноним 27/10/19 Вск 15:32:14 1506118152
>>1506006
Насколько я тебя понял, ты описал стейтфул корутины.
Собственно, гуглится на раз два https://github.com/Xudong-Huang/may , и реализация подсматривается там же. Ну либо в той либе на ц, если интересно именно изобрести велосипед на расте.

>>1506013
>проще на сях написать всю работу с потоками
Если тебе нужно было бы привязывать к бинарнику рантайм, то да. Но если тебе таки нужно сделать вм — эээ, нет.
>исполнение байт-кода
https://github.com/RustPython/RustPython
9 ансейфов на целый интерпритатор питона.
>jit-компиляцию
https://github.com/nbp/holyjit
2 ансейфа.

Просто именно GC, где вся деятельность — это ходить по стеку и искать ссылки — будет одним большим ансейфом, да.

Есть ли смысл брать раст — если хочешь сделать на скорость, то нет. Если ты собираешься делать какую-то низкоуровенную хуйню, у которой повышенные требования к безопасности (например, если она торчит в сеть, как браузер) — то да.
Аноним 27/10/19 Вск 15:33:06 1506120153
>>1506118
>если хочешь сделать на скорость
Всмысле, набросать за пару недель.
Аноним 27/10/19 Вск 16:52:10 1506240154
>>1506118
Насколько я понял, то, что ты скинул (may) -- это все-таки инструмент для кооперативной, не преемптивной многозадачности.
Мне же интересно прерывать исполнение процесса извне, а не изнутри него.
Аноним 28/10/19 Пнд 10:43:16 1507226155
Зачем существует ваш язык?
Аноним 28/10/19 Пнд 10:57:48 1507235156
>>1507226
Чтобы у тебя сгорел пукич.
Аноним 28/10/19 Пнд 12:24:20 1507266157
>>1507235
Я занимаюсь арбузным бизнесом. У меня вызывает нейтральную реакцию rust и все, что с ним связано.
Аноним 28/10/19 Пнд 17:56:40 1507672158
>>1507266
>ваш язык
>арбузным бизнесом
Щтёбы Ащущать прэкрасный вкюс твАего арбуза, дарагой!
Аноним 28/10/19 Пнд 17:58:13 1507675159
>>1507672
В прошлом я был Senior Java Developer'oм и я говорил нормально.

Аноним 28/10/19 Пнд 18:31:50 1507705160
>>1507675
Бля. Знаешь, что. Пруфани арбузом и глубокими познаниями жабы. Сам я тоже сорт-оф жабист, но без погонов.
Аноним 28/10/19 Пнд 18:35:09 1507711161
>>1507705
> пруфани арбузами
К счастью я еще не дошел до того, что выращиваю арбузы дома. Чем тебе пруфануть из хаты-то? Док-ты слать не хочу, ибо диванон.
> глубокими познаниями жабы
Ну, давай, нападай. Я периодически пилю свои проекты, так что не забыл почти.
Аноним 28/10/19 Пнд 18:58:40 1507733162
upload9882.jpg (16Кб, 700x437)
700x437
>>1507711
Да что я тебе накидаю, всё же гуглится. Вот как у твоей нашей жавы с потокобезопасностью дела, какие преимущества перед плюсами? Вот расшарил ты, такой, List в кучу тредов и радуешься.
Аноним 28/10/19 Пнд 19:26:57 1507751163
>>1507733
> pic related
Было время и я думал, что арбузы можно на дому хорошо растить.
> потокобезопасность
Писать потокобезопасные приложения на джаве, конечно, можно.
Неблокирующих алгоритмов предостаточно (List, Stack и бол-во java.util.concurrent) и вполне можно потому и радоваться.
Но на других языках, бесспорно, это часто проще.

> преимущества перед плюсами
Их тебе любой школьник назовет. Ну лан.
Я имел опыт работы с плюсами еще с времен Borland C++ Compiler, поэтому отвечу по житейски, что в джаве программировать в разы безопаснее и реже приходиться ебаться с дебаггером и смотреть, что за хуйня у тебя вылезла.
На джаве кодить проще, так как ты не задумываешь о выделении памяти, не думаешь о том, смаллочить один огромный кусок или по кускам, как собака, таскать. Ты не думаешь о том, когда тебе надо освободить кусок памяти.
На джаве кодить быстрее. У тебя есть вотакенная стандартная библиотека на все случаи жизни и ты не будешь делать очередную реализацию картошки с торчащими палочками.
На джаве МУЛЬТИПЛАТФОРМЕННЕЙ.
На джаве больше работы и меньше требований.
На джаве, иногда, бывает быстрее. Правда, это скорее из области фантастики, но JVM способна байт-код переводить наиболее оптимально в код платформы, откуда она вызвалась, таким образом, беря бремя платформенных оптимизазаций на себя.

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

Ебал в рот кресты и джаву, люблю си и ассемблер и мне похуй.
Аноним 28/10/19 Пнд 20:03:57 1507796164
>>1507751
>реже приходиться ебаться с дебаггером
Да, да. Смотришь, а там concurrent modification exception прилетел, конкретно с какой строки и всё видать - красота. Но это в рантайме - может вылезти при отладке, а может и только в продакшене, как повезёт. Сама по себе жаба по-умолчанию позволяет наступать почти на все те же грабли, что и плюсы, только они у неё помягше. Ну, если ты сеньор, то ты, конечно, уже про все грабли знаешь и не наступишь.
А вот раст чем хорош - что он ещё на этапе компиляции отсекает все твои попытки пройтись по граблям. Понимаешь? Не надо быть сеньором, чтобы писать потокобезопасно - сам компилятор не даст тебе писать небезопасно. Это сильно упрощает и удешевляет разработку, снимая кучу головной боли.
Кроме этого, раст ещё и сахарный, почти как питон.

Как докатился до арбузов-то? Дядя - арбузный король оставил наследство?
Аноним 28/10/19 Пнд 20:10:15 1507807165
>>1507796
>Как докатился до арбузов-то?
Отсидел за наёмничество. Скоро думаю заводить трактор, как срок давности пройдет. А вообще, на деле, арбузы не такая уж и плохая альтернатива программированию. Получаю хорошие деньги. В арбузах разбираться стал...

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

Аноним 28/10/19 Пнд 20:14:48 1507810166
Аноним 28/10/19 Пнд 20:19:29 1507822167
>>1507810
>В АТО воевал?
Палестина. Так вышло.
Аноним 28/10/19 Пнд 20:22:51 1507827168
>>1507807
>заказчиков
Крипту на нём уже пишут, так как безопасность там в приоритете. Там, глядишь, практика использования поднакопится, до остальных, более консервативных, сфер дойдёт.

>>1507822
>Java
>Палестина
>Арбузы
ЦАХАЛ?
Аноним 28/10/19 Пнд 20:25:21 1507832169
>>1507827
>ЦАХАЛ
Немного наоборот.
Аноним 28/10/19 Пнд 20:27:23 1507836170
>>1507832
Так, значит, ты - торговец арбузами, в прошлом ява-сеньор, отсидевший за наёмничество как палестинский боевик..?
Аноним 28/10/19 Пнд 20:30:05 1507842171
>>1507836
Не говори, а мы тут штаны просиживаем. Хотя, по арбузам можно было бы догадаться, что не ЦАХАЛ. Но я как-то решил, что было бы логично сперва работать жава-сеньором в кибуце, а потом пойти, соответственно, в ЦАХАЛ.
Аноним 28/10/19 Пнд 20:32:43 1507849172
>>1507842
> по арбузам
А что тебе арбузы обо мне говорят? Ну, решил я ими заняться и что? Почему все доебываются до блядских арбузов? Если бы я скажу, то все думаю, что я серьезный перец, а как арбузы - сразу какое-то предвзятое отношение. Несправедливо.
> ЦАХАЛ
Если бы там был, то не пришлось бы сидеть.
Аноним 28/10/19 Пнд 20:38:13 1507857173
>>1507849
Не знаю, как у вас, а у нас на рынке - что ни торговец арбузами, то с большой вероятностью, чисто внешне мусульманин.
Аноним 28/10/19 Пнд 20:40:54 1507864174
>>1507849
Сколько и где сидел? Тюрьмы нормальные? За кого воевал (и зачем - ты же программист епта, можешь переехать в любую страну)? Не очень разбираюсь, че там у вас.
Аноним 28/10/19 Пнд 20:43:50 1507866175
>>1507857
> А у нас на рынке - что ни торговец арбузами
У меня бизнес крутится в несколько другой плоскости. Я отвечаю, за организацию цепочки доставки с югов в регионы России, от Петербурга до Новосибирска. Я не занимаюсь курированием выращивания бахчевых культур.
А насчет этих уличных торговцев, могу сказать, что иногда думал заняться и этим, потому что часто они, несмотря на свой бомжеватый вид, гребут нормальные деньги. Я изучал этот вопрос и не мог понять, какого хуя они одеваются как бомжи, если получают такой титанический (для своей ниши) оборот. Вопрос, кстати, открытый.
Аноним 28/10/19 Пнд 20:52:29 1507874176
https://www.openbusiness.ru/html/dop/arbuz.htm
>Арбузный бизнес, как и всякий плодово-овощной, в России имеет ярко выраженную сезонную окраску. Зато его рентабельность может достигать 60-100%. Главное - суметь быстро организовать цепочку доставки арбузов с юга России в Петербург.
охх, не знаю, может и меня заебёт однажды программировать и подамся организовывать цепочки поставок голубоглазых сибирских шлюх в Китай, тут близко
Аноним 28/10/19 Пнд 20:56:53 1507878177
>>1507866
Потому что оборот != прибыль.
Это как в расте: язык есть, фичи есть, потокобезопасность есть — работы нет.
Аноним 28/10/19 Пнд 20:58:21 1507879178
>>1507864
>Сколько и где сидел? Тюрьмы нормальные?
Тюрьмы - пиздец, в колонии было нормально. Так как были некоторые connections в ФСИН.
Сидел я недалеко от родной республики. Говорить где, точно не буду, сами уж понимаете. За меня смогли договориться с нужными людьми и я сидел в хороших условиях, имел доступ в интернет, получал нормальную пищу и не было в камере никаких урков. Сейчас, такое не прокатит уже (вне Кавказа точно), так как в 18 году один авторитет пропалился СМИ о том, что он на зоне икру с шашлыком хавает и СК да ФСИН все ужесточили да сжали яйки всем, кто такое практиковал.
Поэтому грешно мне жаловаться. Начал даже очень много читать на зоне, зона ушла - привычка осталась. Стал практиковать медитации отчего жить стало проще и чище.
Все сейчас идет на исправление. Через год планирую, вот, в Германию свалить.
> За кого воевал
Одно из крыльев ФАТХ за освобождение палестины.
> Зачем
Не понимал, что бороться с Израилем, пока штаты стоят за ним бесполезно.
Аноним 28/10/19 Пнд 21:00:49 1507880179
>>1507874
>https://www.openbusiness.ru
Сайт очень годный и в одно время очень помог мне.
>голубоглазых сибирских шлюх в Китай, тут близко
Они сами находят свой путь. Время сутенеров медленно уходит вникуда и романтика нелегальных борделей тоже.
>>1507878
Да в том то и дело, что там по подсчетам и прибыль нихуйская была. Или они за крышу много отдавали, или они являются тайными воротилами теневой экономики. Третьего не вижу.
Аноним 28/10/19 Пнд 21:02:59 1507881180
28/10/19 Пнд 21:05:33 1507883181
>>1507878
>язык есть, фичи есть, потокобезопасность есть — работы нет.
Вангую, что через несколько лет работы будет много, если разработчики языка не уйдут в хаскельманду.
Аноним 28/10/19 Пнд 21:09:05 1507886182
>>1507880
Если точка не согласована, могут снести. А чтобы не снесли, доставай монетку. Продавцу зарплату плати, если сам не продавец (а если сам, то умей общаться, торговаться и целый день каждый день стоять или сидеть на жаре), за бензин плати, грузчикам плати, налоги плати. Где тут прибыль-то? Да и зачем дорого одеваться, если потом всё равно всё расхуячишь соком, когда арбуз резать будешь?
Аноним 28/10/19 Пнд 21:11:00 1507887183
>>1507886
>Да и зачем дорого одеваться
Я скорее про то, что они спят вместе с другими приезжими в бомжатниках.

А так ты верно все расписал про их издержки.
Аноним 28/10/19 Пнд 21:50:34 1507923184
Только вышел из треда, прихожу, а тут уже какие-то арбузные боевики.

Рассказывайте, кто что пилит на расте?
Аноним 28/10/19 Пнд 23:27:41 1507994185
>>1507879
Хуя себе история. Ты верующий, я правильно понял? Никогда еще не встречал верующих программистов. Ты исследовал коран? Видишь ли ты противоречия в нем? Как ты относишься к наличию разночтений у суннитов/шиитов и других направлений? Как ты относишься к тому, что все религии (и течения ислама) считают свое учение правильным, а все остальные - не совсем?

Тебе легко было решиться пойти воевать (с высоким шансом умереть), когда ты такой себе сеньер 300к/нс? На каком языке вы там говорили в Палестине? Какими были ребята, которые воевали с тобой, какое у них образование? Они воюют чисто за территории Палестины или там замешана религия? У тебя была военная подготовка или учили там на месте? Ты сидишь в /wm/?

Сейчас тебя беспокоит, что Израиль поступает несправедливо по отношению к Палестине? Как ты относишься к тому, что за 3000 лет территория современной Палестины захватывалась самыми разными народами: евреями, римлянами, арабами, османами, персами, греками, англичанами, немцами, французами и т.д. Так получилось, что последними были амеры с евреями. Почему важно, кто там сейчас управляет, ведь если пытаться опираться на историю, а не на текущее население Палестины, то и греки вполне могут претендовать на эти территории? Или причина конфликта в том, что евреи именно в наше время сильно прессуют арабское население в Палестине?

Есть ли у тебя знакомые евреи, которые являются хорошими людьми?

Аноним 29/10/19 Втр 00:33:34 1508039186
>>1507994
дебик, тебе бы историю подучить. До евреев на этой земле были только Кнааны, потом были евреи, коих силой изгнали оттуда и они 2000 лет шароебились по планете Земля и их прессовали по кд все кому не лень. Иерусалим в Торе упоминается свыше 150 раз, в Коране - ни разу (да-да, пошел нахуй, у меня знакомый аспирант востоковед и знает всю эту чепуху, лично я ссал на все эти религии плотной струей урины). Никакой палестины нет и не было никогда за всю историю всех народов, это все равно, блять, что утверждать, что ДНР - это полноценное государство и всегда существовало, лол. У нее никогда не было государства, она была подмандатная после первой мировой, сама земля в то время принадлежала вообще британцам. А палестинцам (на верный лад, филистимлянам) дали такую кликуху римляне, которые тоже были мимозавоевателями. Образование государства Израиль в 1948 году - не более, чем возвращение евреев на родину после изгнания длиною в 2000 лет.
Факт - за 70 лет евреи построили одно из самых развитых государств в мире (технологии, медицина, экономика на мировом уровне), а когда обоссаный конч Ариэль Шарон отдал Газу этим даунам, она из цветущих садов превратилась в чистилище ада буквально сразу. Про исковерканные толкования Корана начала 20ого века, где ВНЕЗАПНО появляется инфа, что Иерусалим вовсе не принадлежит евреям, это вообще рофл. В общем, собаки лают, караван идет.
мимонежид, бтв
Аноним 29/10/19 Втр 00:40:02 1508042187
>>1508039
>Факт - за 70 лет евреи построили одно из самых развитых государств в мире
А разве не американцы это сделали?
Аноним 29/10/19 Втр 00:48:18 1508050188
>>1508039
Я вообще не утверждал ничего, о чем ты бугуртишь. Палестина - это просто одно из названий той территории, из которого сразу понятно где это и что это. Не явлюяюсь фанатом евреев или арабов, я к этому конфликту никаким боком не отношусь, просто любопытно.

Почему ты так сгорел?
Аноним 29/10/19 Втр 01:08:26 1508061189
>>1508042
А разве американцы? По-твоему, союз == полное гособеспечение от А до Я? Тащемта, нет.

>>1508050
Я тоже не имею к этому отношения, но арабы в современной истории причинили огромное количество страданий людям разных народов. Чем занимались евреи? Строили свою страну, разрабатывали новые технологии, продвигали науку вперед. Чем занимались муслимы? Аллахакбарились в метро, на улицах в толпах ни в чем неповинных людей, резали людей на улицах, насиловали женщин по всей Европе. Абсолютное большинство террористических организаций в мире состоит чуть менее, чем полностью из муслимов. Обобщать не хочется, ибо это очевидно, что не АБСОЛЮТНО каждый муслим в мире == террорист, но статистика энивей играет не в их пользу. Евреи - созидатели, муслимы - разрушители. Я уважаю евреев за то, что они, несмотря на гонения длиною в ТЫСЯЧИ лет, не исчезли с лица Земли, как народ, а восстали как Феникс из пепла, да еще и построили свое государство достойным образом. И я презираю большинство муслимов за то, что в современной истории они сеют смерть и ненависть. Это факт, с которым сложно спорить.
Аноним 29/10/19 Втр 06:49:14 1508101190
>>1507994
>Хуя себе история. Ты верующий, я правильно понял?
Сложно ответить.
>Никогда еще не встречал верующих программистов.
Лично я заметил, что многие ударяются в буддизм (не совсем религия, но религозно-философское).
>Ты исследовал коран?
Да, я из рода хафизов, поэтому меня с детства думали сделать муллой. Я с ранних лет читаю, пишу по-арабски, поэтому это для меня не проблема.
> Как ты относишься к тому, что все религии (и течения ислама) считают свое учение правильным, а все остальные - не совсем?
Ислам считает все авраамические религии правильными. Все христиане и иудеи - ахль аль-Китаб, то есть люди писания, которых нельзя оскорблять, посягать на их имущество. Они, как мусульмане, попадут в рай, только будут подвержены большим испытаниям, согласно Корану и Хадисам.
>Тебе легко было решиться пойти воевать (с высоким шансом умереть)
Это решение было результат запущенного уныния, которое овладело мною. В то время я очень больно реагировал на любую несправедливость. Сейчас же я понял, что ей полна вся земля, и лучше изменить свое отношение ко всему, чем весь мир.
>На каком языке вы там говорили в Палестине?
Ебанутый вид арабского.
>Какими были ребята, которые воевали с тобой, какое у них образование?
Это простые ребята. Многие из них потеряли братьев, сестер, отцов, матерей и друзей от руки Израиля. Среди них было несколько людей с высшим, но бол-во - без него.
>Они воюют чисто за территории Палестины или там замешана религия?
Скорее смесь всего. Когда на твоей земле враг, который не дает тебе свободно молиться на твоих святынях, который загоняет тебя, аки скот, в резервации, который запрещает тебе даже вести свободно хозяйство на своей земле, то вопросов у многих и не было.
>У тебя была военная подготовка или учили там на месте?
Учили на месте. Военная подготовка до этого была.
>Сейчас тебя беспокоит, что Израиль поступает несправедливо по отношению к Палестине?
Сейчас уже нет. Многое в руках самих мусульман. Если бы все мусульманские страны пламенно желали залететь (и при этом действовали грамотно, а не на горячую голову) с моджахедами в Эль-Акса, то это бы уже произошло.
>Или причина конфликта в том, что евреи именно в наше время сильно прессуют арабское население в Палестине?
Именно. Это самый настоящий апартеид. Но миру - похуй. Пусть щемат палестинцев, пусть щемат уйгуров. Все будут молчать пока в том есть выгода.
>Есть ли у тебя знакомые евреи, которые являются хорошими людьми?
Среди евреев много хороших людей.
>в Коране - ни разу
Да. Он упоминается в Хадисах.
>Образование государства Израиль в 1948 году - не более, чем возвращение евреев на родину после изгнания длиною в 2000 лет.
Этот тезис смешной. Может теперь ассирийцам ближневосточным всю Месопотамию подмять?
>Факт - за 70 лет евреи построили одно из самых развитых государств в мире
С них надо брать пример.
>она из цветущих садов превратилась в чистилище ада буквально сразу.
Как ты эти чистилища приберешь, если тебе Израильское Goverment почти не дает свободно вести предпринимательскую деятьельность под угрозой смерти?
>А разве не американцы это сделали?
Скорее немцы. Иронично.
>Почему ты так сгорел?
Потому что этот анон не держит себя в руках.
>но арабы в современной истории причинили огромное количество страданий людям разных народов
Я соглашусь. Им стоит вспомнить, то что во времена халифата все было наоборот.
>И я презираю большинство муслимов за то, что в современной истории они сеют смерть и ненависть.
Я не понимаю, зачем мусульмани идут на это, если в Коране чётко написано то, что их действия, терроризм и прочее - ебанный стыд и грех.




Аноним 29/10/19 Втр 06:49:58 1508103191
>>1508101
>мусульмани
*мусульмане
Аноним 29/10/19 Втр 10:25:42 1508152192
>>1508101
У меня в голове пока что плотно сидят 2 тезиса (я считаю это фактами)
1. Израиль будет сговорчивее, если в Палестине ко власти придёт партия, не ставящая своей целью уничтожение Израиля (сейчас там Хамас, он ставит, ФАТХ был миролюбивее - и с ним почти договорились)
2. Арабы (Саудовские и прочие) заинтересованы в том, чтобы Палестина была вечной кровоточащей раной - им это нужно для мобилизации собственного населения, для поддержания образа врага. Они то и поспособствовали смене ФАТХ на Хамас, так как мир им не выгоден.

Что касается помощи от США и проч: евреи, пусть на помощь США, пусть, организовали у себя государство первого мира с IT, медициной, фармакологией, кибуцами, космической программой и прочим. То есть, не сидят, сложа руки. Арабы, сидя на нефти, имея с неё гораздо больше, чем Израиль от США, только и делают, что пользуют Наташек и спонсируют "братьев" (в том числе некоторых жава-сеньоров) по всему миру. Рашка в этом плане не лучше, но это другой разговор.
Я про то, что если смыть Израиль в океан, то арабы не построят там ничего путного взамен, как не построили они в других странах (есть у них Дубай, но там ни черта не производят, это чисто мировой офис).
Аноним 29/10/19 Втр 10:33:22 1508158193
>>1508152
С тезисами я согласен. Евреи и арабы должны как-то научиться жить вместе (звучит смешно, но им придется). Только произойдет это даже позже чем раст станет мейнстримом.
Аноним 29/10/19 Втр 11:08:27 1508178194
Всем привет. Я Олег.
Аноним 30/10/19 Срд 12:06:52 1509001195
Выделение016.png (40Кб, 387x701)
387x701
Анон, нид хелп

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

что хочу: хочу 2 структуры чтобы одна (child) был вложена в другую (parent) и могла звать функции родителя. Можно такое провернуть без лишних изъёбов, на одном только Weak? Пробую, а всё никак: то, видите ли, parent owned, то ссылка lives not enough.
Аноним 30/10/19 Срд 13:00:50 1509027196
>>1509001
Нахуя ты в палестинотред это говно притащил? Пшел отсюда.
Аноним 30/10/19 Срд 13:01:44 1509028197
>>1509001
Создай парента через Rc<RefCell<>>, у Rc создай слабую ссылку.

Какую задачу ты решаешь? Скорее всего тебе такая ересь не нужна.
Аноним 30/10/19 Срд 14:20:03 1509083198
>>1509028
>Какую задачу ты решаешь?
Чтобы child мог асинхронно через метод парента ответ вернуть.
Аноним 30/10/19 Срд 15:21:47 1509136199
>>1507923
>Рассказывайте, кто что пилит на расте?
Движок для создания интерактивных карт для отображения истории Палестины.
Аноним 30/10/19 Срд 15:27:53 1509141200
>>1509083
Трейты с дефолтом не подходят?
Аноним 30/10/19 Срд 15:33:34 1509143201
Ну что вы, мученики?
Найдете вы еще работу себе, не переживайте.
Аноним 30/10/19 Срд 15:43:37 1509151202
>>1509143
Большинство тут с работой. Просто не педеRUSTами.
Аноним 30/10/19 Срд 15:44:55 1509152203
>>1509143
>>1509151
сдрыстрине в местный жс/пистон тред, макакам тут не рады
Аноним 30/10/19 Срд 15:59:19 1509158204
>>1509152
Я считаю, что ты ведешь себя неподобающе и нарушаешь дискуссию, которую ведут тут добропорядочные аноны. Своими действиями ты позоришь себя и все, что ты с собой олицетворяешь. Я бы задумался и прекратил вести себя столь глупо и неуместно, дабы не пятнать своё достоинтсво подобными выходками.
Аноним 30/10/19 Срд 16:10:22 1509170205
>>1509141
Думал о таком, а разница будет? Ща попробую.
Аноним 30/10/19 Срд 16:22:13 1509174206
>>1509158
>с собой олицетворяешь
>достоинтсво
>>1509170
Просто трейты — это раст вей, ООП через ансейф — не раст вей. В сущности, какая тебе разница, выносить функции в трейт или в методы парента? Если там серьёзная разница в коде между методами парента и чайлда, то имплементишь отдельно. А если маленькая разница, то в функцию можно передать кложуру.
Аноним 30/10/19 Срд 21:23:20 1509385207
Аноним 30/10/19 Срд 22:27:19 1509431208
>>1509385
Да, уже решил через парент, переданный чайлду как нужный трейт.
Аноним 30/10/19 Срд 23:12:52 1509451209
>>1509431
Покажешь псевдокод решения? Просто интересно стало.
Аноним 31/10/19 Чтв 08:10:24 1509572210
Аноним 31/10/19 Чтв 19:57:45 1510127211
Зачем нужно это гавно кагда есть яваскрипт и нода?
Аноним 01/11/19 Птн 00:44:42 1510354212
>>1510127
А точно, че это мы все тут. Го на яве пилить софт.
Аноним 01/11/19 Птн 02:57:19 1510402213
Накопил денег, уволился с галеры, хочу сделать себе Diablo 2, как OpenXRay или OpenMorrowind, только на русте. Подскажите в какую сторону копать, а то этот гейдев какой-то сложный сильно.
Аноним 01/11/19 Птн 03:02:22 1510404214
>>1510402
постри piston2d, gellium, vulkano и типо того
Аноним 01/11/19 Птн 14:24:47 1510603215
>>1510404
Ещё Amethyst есть, хотя он сложный и пока не все мастхев фичи для игры есть.
Аноним 01/11/19 Птн 21:18:02 1510966216
>>1456440 (OP)
Подскажите, что за прога в webm шапки
Аноним 01/11/19 Птн 21:19:23 1510968217
>>1510127
Типы, контроль за выделениями памяти. Куча ошибок детектится на этапе компиляции
Аноним 03/11/19 Вск 12:29:32 1511898218
like-paintball.png (40Кб, 465x569)
465x569
Аноним 03/11/19 Вск 12:47:11 1511921219
Ананасы, почему ржавый не стреляет. Он вроде как замена си и крестов, а на должности в область системного программирования энивей в 99% случаев требуют знания си или плюсов, но никак не раста
Ватафак?
Аноним 03/11/19 Вск 12:51:47 1511924220
>>1511921
Наверное потому что если у тебя уже написан софт на си и ты открываешь вакансию, ты будешь искать того, кто будет писать на си?
Новые проекты и кампании довольно часто используют раст. Посмотри на те же крипту.

Но вообще, раст не только и не столько про системное программирование, сколько про безопасную и быструю альтернативу без гц.
Аноним 03/11/19 Вск 13:03:12 1511933221
>>1511921
Потому что 99% разработчиков не пишут браузеры и подобную хуйню где фичи раста нужны
Аноним 03/11/19 Вск 13:11:08 1511940222
>>1511933
А что и на чем они пишут?
Аноним 03/11/19 Вск 13:24:14 1511952223
>>1511921
Потому что для ядра он всё ещё жирный, а для плюсов слишком сложный как второй язык. А для простых утилит го проще и либы у него все есть. Вот где у раста что-то подобное go x/crypto/ssh?
Аноним 03/11/19 Вск 13:25:23 1511953224
>>1511952
Тебя не смущает что "простые утилиты" по факту пишутся либо на расте либо сразу на ноде, а не на го? ripgrep один чего стоит.
Аноним 03/11/19 Вск 13:29:30 1511956225
>>1511940
Ну я математику пишу например. Шаблоны крестовые очень заходят, а вот борроу чекер не пришей пизде рукав
Аноним 03/11/19 Вск 13:35:41 1511961226
Аноним 03/11/19 Вск 13:44:56 1511968227
>>1511953
Не смущает, ибо у меня обратный опыт. Щито поделать.jpeg
Взять хотя бы недавний https://github.com/neex/phuip-fpizdam - казалось бы питон идеален, но пок почму-то на го.
>>1511956
Ну они ж пиздец. В d куда проще.
Аноним 03/11/19 Вск 13:59:59 1511975228
>>1511968
И чем питон идеален? Тем что для запуска тулзы у тебя в системе должен стоять питон? Нет спасибо.

Незнаю что за го-пхп хуйня по ссылке, но у меня есть альтернативный пример. Рискну предположить что количество людей которые пользуются vscode на порядк выше тех, кому нужен эксполит для пыхи. vscode для поиска по проекту испольует ripgrep. Про то что все крупные игроки (мозила, гугл, мс, амазон, ...) так или иначе уже используют раст для своих нужд тоже отличный показатель.
Аноним 03/11/19 Вск 14:30:51 1512010229
>>1511975
Класс. Напомню, вопрос был не в том кто использует раст, а кто разрабатывает на нём. ripgrep в контексте твоего примера - либа, на чём она написана не важно. В мире грепалок люди всё также продолжают использовать grep и egrep, они всё так же хороши для их задач. Мой пример - это новая утилита, автору было всё равно на чём её писать, но он взял и написал на Go. Так вот, почему Го, а не раст/плюсы/си? Потому что Го прост и достаточен для решения этой задачи. Ты просто берёшь блокнот и пишешь код на уровне между сишкой и вторым питоном, и получаешь что тебе нужно. Раст же тебе сразу диктует кучу требований к правильной архитектуре приложения, что для наколеночной тулзы уже слишком сложно.

Обратный пример - Кубер. Он классный, но его сложность превысила инструменты языка и они напилили костылей только чтобы не переписывать всё на новом языке. Но почему они начали на го, если знали что пилят? Хз.

> И чем питон идеален? Тем что для запуска тулзы у тебя в системе должен стоять питон? Нет спасибо.
Для сборки гошного бинаря тебе тоже нужен компилятор. Питон просто намного более декларативен, что для Proof of Concept куда приятнее. В мире эксплоитов похуй на чём они написан, лишь бы работали. Куча скриптов вообще на повершелле, ибо винда.
И да, покажи мне систему без питона. Нескучный DE для WSL не предлагай.
Аноним 03/11/19 Вск 15:22:56 1512045230
>>1512010
> Но почему они начали на го, если знали что пилят?
Они начинали на джаве, но потом сверху спустили команду форсить го.

> Питон просто намного более декларативен
Имперптивный донельзя, как и гопараша.
Аноним 03/11/19 Вск 16:30:25 1512148231
Аноним 03/11/19 Вск 18:05:24 1512233232
>>1512148
К содалению, в списке полтора серьезных проекта, а остальное - очередные http-библиотеки и консольные утилиты
Аноним 03/11/19 Вск 18:08:32 1512234233
>>1511956
И что такого в крестовых шаблонах тебе заходит? Они пиздецом перестали быть только в свежем стандарте с приходом концептов.
Inb4 вариадик темплейтс, но я пока не встречал примера, где от вариадиков жизнь кардинально поменялась
Аноним 03/11/19 Вск 18:26:29 1512240234
>>1512234
>И что такого в крестовых шаблонах тебе заходит
Динамическая типизация. Когда ты используешь их по изначальному назначению - а именно как слегка типизированный вариант сишного препроцессора, они охуенны. Можно комбинировать алгоритмы в статике, можно, подставлять флоаты и т. д. Самое приятное, что это работает даже на CUDA.
А концепты наоборот хуйня. Потому что одно дело тайпклассы, которые могут разрешаться ad-hoc, а могут тянуть за собой указатель таблицу функций и быть полиморфными в рантайме, концепты это просто способ чуть менее запутанно падать во время компиляции. Мне это вообще никак не помогает.
Аноним 03/11/19 Вск 18:43:26 1512246235
Анонс, такой проблем. Есть некий алгоритм, с 3 вложенными циклами, который имеет отличия в самом нижнем лвл
for x in (0..9){
for y in (0..9){
for z in (0..9){
SOME_OPERATION

вот этот SOME_OPERATION бывает нескольких типов. Как бы тут и переиспользовать код, и не проебать оптимизации? Ну, чтобы и if или вызов внешней функции внутрь не засовывать, и копипастой не заниматься.

Я придумал такой вариант - передавать параметром inline функцию, но что-то сомневаюсь - а конпелятор это норм отпимизирует?
Аноним 03/11/19 Вск 18:48:08 1512252236
>>1512240
Дженерики растовые разве не то же самое? А если тебе нужен почти одинаковый — но таки разный — код для каждого типа, то просто
fn foo<T, F>(t: T, f: F)
where F: FnOnce() {} // or Fn() or FnMut()
И пихаешь кложуру в этот <F>.
>>1512246
Пихаешь кложуру. Насчёт оптимизации не ебу, честно говоря, это надо гуглить.

Почти всё про пихание кложур наглядно расписано вот тут:
https://doc.rust-lang.org/rust-by-example/fn/closures/input_parameters.html
Аноним 03/11/19 Вск 19:17:30 1512269237
>>1512252
Вот беру я код из примера по дженерикам

use std::fmt::Display;

fn main(){
print_pro(10 as u8);
print_pro(20 as u16);
print_pro("Hello TutorialsPoint");
}

fn print_pro<T:Display>(t:T){
println!("Inside print_pro generic function:");
println!("{}",t);
}

Стираю :Display

fn print_pro<T>(t:T){
println!("Inside print_pro generic function:");
println!("{}",t);
}

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

И вот допустим я пишу точную математику, и у меня есть тип данных Qfloat, который как double, только сильно жирнее. Далее мне нужна полифорная функция, которая может обрабатывать float'ы, double'ы и вот этот qfloat. На крестах я ее просто беру и пишу, поставив вместо типа темплейт. Если не хватает каких-то функций, я их реализую. При чем мне компилятор сам скажет, чего ему не хватает.
А на расте https://rust-num.github.io/num/num_traits/float/trait.Float.html
Йоба. Ребята, мне никогда в жизни не понадобится столько функций для моего qfloat. Поэтому возникает два стула, либо стабы, либо какие-то ебические количества микротрейтов. Это уже проходили в хаскеле, когда оказалось, что монада это апликативный функтор, а вот прелюдия думает по-другому.
Короче, лично для меня отсутствие темплейтов это большой и бессмысленный гемор, который выливается в еблю с системой типов вместо програмиирования.
Аноним 03/11/19 Вск 19:30:06 1512278238
>>1512246
Алсо крайне забавно что в крестах подобный код вообще бы вопросов не вызвал будет ли оптимизирован или нет.
Можно даже тупо template<enum> сделать и свитч в коде ебнуть. Очень просто и наглядно.
Аноним 03/11/19 Вск 20:00:27 1512296239
>>1512269
Круто, хули. Но в чём проблема написать два слова в T:?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fe7aa58b6b945075590d6a16f63e1762

Для простеньких структур есть #[derive] вместо кучи прописываемых руками impl'ов.
Тебе же не нужно вписывать в ограничения типа функции все трейты, нужно вписывать только те, которые ты используешь.
Но да, писать надо чуть больше, чем в C++.
Аноним 03/11/19 Вск 20:07:34 1512300240
Аноним 03/11/19 Вск 20:18:25 1512307241
>>1512269
Дядя, а ты не путаешь trait objects и generics? Дженерики-то как раз реализованы через мономорфизацию типов, прямо как шаблоны плюсов. А trait objects - это как раз те самые 2 указателя, прямой аналог виртуальных функций плюсов.
Аноним 03/11/19 Вск 20:37:24 1512324242
>>1512296
>Но в чём проблема написать два слова в T:?
Нужно знать эти два слова.
Вообще это типичные два стула между статикой и динамикой. Темплейты - это динамика, которая не требует описания, но зато падает со стектрейсом. А вот баунды падают не так громко, зато требуют дополнительной бюрократической работы. Которая лично мне не пришей пизде рукав.
Аноним 03/11/19 Вск 20:46:09 1512329243
>>1512324
Да тебе конпелятор прямо в ебло выдаёт эти слова, вроде "std::ops::AddAssign", "Copy" или "Send". Не вижу проблемы. А вот выгоды, если ты пишешь в команде хотя бы из двух человек — вижу. Потому что если ты хочешь передать в функцию некий тип, то ты сразу видишь, реализацию каких трейтов тип должен иметь. И тебе не надо ползать по функции, выискивая плюсы, минусы, шифты и прочее, потому что всё, что применяется к этому типу ты видишь прямо в начале функции.
Аноним 03/11/19 Вск 20:53:38 1512332244
>>1512329
> Потому что если ты хочешь передать в функцию некий тип, то ты
Пиздуешь имплементировать трейты для того чтобы просто использовать функцию со своим типом. Даже если 90% функций трейта тебе нахуй не нужны.
Аноним 03/11/19 Вск 21:02:13 1512339245
>>1512332
Ты так говоришь, будто ты каждый день по типу добавляешь, для которого надо трейт Float реализовывать
Аноним 03/11/19 Вск 21:12:01 1512341246
Screenshot from[...].png (155Кб, 776x1394)
776x1394
>>1512339
Алсо, пикрил я сгенерил одним хоткеем за 2 секунды и ненужные методы можно не реализовывать.
Аноним 03/11/19 Вск 21:13:14 1512342247
>>1512341
Это упадет в рантайме?
Аноним 03/11/19 Вск 21:17:53 1512347248
Аноним 03/11/19 Вск 21:18:14 1512348249
>>1512332
Если это простая структура, то тупо #[derive], а если сложная, то ты всё равно должен или имплементить Add, или оверлоадить +, если ты будешь его использовать в той функции. Вот только в расте ты можешь сразу посмотреть, есть ли нужные тебе трейты, даже не прогоняя код через компилятор. И какая разница, сколько функций трейта тебе нужны, если все они требуют имплементить только одну функцию? А если не одну-две, то нахуя ты вообще это трогаешь, если оно тебе не надо? Мне кажется, ты пришёл в раст, потому что раст на SO четвёртый год подряд "мост лавед", потыкался, попытался сделать то, что не очень приятно делать на расте, и разочаровался в языке.
Аноним 03/11/19 Вск 21:40:37 1512376250
>>1512269
>>1512324
>>1512332
>>1512342
Твоя проблема из пальца высосана. Хочешь писать C++-way - придется делать стабы. Хочешь писать по-нормальному - либо пиши свой трейт для типа, либо реализуй чужой трейт. Все это займет максимум час и проблем позже не доставит. И не надо говорить, что мол геморно - ты каждый день новые реализации float не пишешь, так что реализовать даже чужой огромный трейт - задача ненапряжная. Зато потом другим разработчикам (да и тебе самому) не надо будет ползать по исходникам, выискивая заиспользованные операции.

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

Даже C++ отказывается от говнопрактики, которую ты юзаешь, а ты на Rust пеняешь.

>>1512347
alt-insert в idea
Аноним 03/11/19 Вск 21:48:37 1512390251
>>1512341
Твой unimplemented реализован через panic и падает в рантайме. А в плюсах будет ошибка компиляции. Плюсы вин.
Аноним 03/11/19 Вск 22:00:54 1512410252
>>1512269
Если твоя функция должна обрабатывать только стандартные флоаты и твой qfloat, то какого хуя ты нашёл num_traits крейт? Потому что функция, которая обрабатывает обычные флоаты не требует этого крейта, если только не имплементит все трейты для обычных флоатов (или не превращает флоаты в кастомную структуру за сценой. Тогда тебе надо имплементить только две функции, которые выглядят как "foo(q: qfloat) -> generic_float {}" и превращение в обратную сторону. Но если для обычных флоатов уже известны все константы, то тебе эти константы для qfloat надо знать, если ты хочешь реальное превращение оттуда-сюда и обратно. А это будет ебля хоть в расте, хоть в крестах) под этот крейт. А если тебе нужен этот крейт, то сперва будь уверен, что тебе нужен именно этот крейт. Потому что он очень специфичный, сделан под #![no_std]. И если qfloat ничем не отличается от обычных, то кто мешает тупо скопипастить имплементацию обычных?
>>1512390
https://docs.rs/num-derive/0.3.0/num_derive/derive.Float.html
Муля, не нервируй меня!
Аноним 03/11/19 Вск 22:04:21 1512414253
Screenshot from[...].png (267Кб, 2502x1728)
2502x1728
Screenshot from[...].png (414Кб, 2114x1952)
2114x1952
>>1512390
В Rust-е нет дженериков, которые сопоставляют шаблонный параметр с фактическим интерфейсом, заюзанным в шаблонной функции. И правильно сделали - хочешь использовать дженерики - укажи интерфейс шаблонного параметра заранее, блеать.

А если хочешь использовать фичу, которая даже в самих плюсах с 20-го стандарта объявлена устаревшей - ебись с ошибками в рантайме. Да, анон, в C++20 от тебя требуют писать ровно те же трейты, что и в Rust. Только в Rust-е это обязательно, а в плюсах - можно забить и написать говнокод.

Аноним 03/11/19 Вск 22:04:48 1512415254
>>1512376
И часто ты этим alt-insert пользуешься? Как вообще поддеркжа раста в идее? Сама иде не тормозит?
Аноним 03/11/19 Вск 22:08:31 1512422255
>>1512415
alt-insert юзаю постоянно и во многих языках: C++, java, scala, rust. Плагин раста в идее работает еще хуже, чем скаловский, но выбирать как-то не приходится. Сама идея тормозит только в исключительных случаях, если выдать ей гигов 8 памяти (что все и делают)
Аноним 03/11/19 Вск 22:10:26 1512426256
>>1512422
>Сама идея тормозит только в исключительных случаях, если выдать ей гигов 8 памяти (что все и делают)
В смысле практически никогда не тормозит, если выдать ей дохера оперативы
Аноним 03/11/19 Вск 22:12:39 1512430257
>>1512426
Сравнивал с альтернативами? И что умеет расто-плагин? Точнее даже, что не умеет?
Аноним 03/11/19 Вск 22:48:50 1512479258
Аноним 04/11/19 Пнд 00:02:44 1512523259
Может кто написать сравнение Rust vs D ? В чем их разница и какие преимущества у каждого?
Аноним 04/11/19 Пнд 00:18:08 1512529260
>>1512523
В расте вообще нет GC. Собственно, главное различие. Все остальные различия примерно те же, что между любым C-based-lang с ограничениями и растом. Но мало кто будет сразу ,да и вообще писать на D без GC потому что без GC он ничем не лучше крестов, а обратная совместимость, сам понимаешь. А в расте у тебя выбора нет, но он и без GC выглядит неплохо, пока ты не упираешься в какую-то грязь, которая требует ансейфа и изъёбов в основном это алгоритмы с нестандартными структурами данных и просто нестандартные или оптимизированные для чего-либо структуры данных.
Аноним 04/11/19 Пнд 01:59:41 1512578261
>>1504241
> Попробуй сначала из крудо-формошлепства перекатиться в чистый бекенд с кафками-куберами-облаками-grpc'ми-числодробилками-хуйлоадом
А где этому учиться? Можешь посоветовать книжек и ресурсов?
Мимо-embedded на си, который учит node.js и хочет заниматься дрочкой серверов
Аноним 04/11/19 Пнд 03:02:59 1512602262
>>1512529
> которая требует ансейфа и изъёбов в основном это алгоритмы с нестандартными структурами данных
Как двусвязный список, например? Очень нестандартная структура данных.
Аноним 04/11/19 Пнд 03:06:41 1512604263
>>1512602
Спасибо, Капитан. А если это был сарказм, то скажи мне, сколько раз ты использовал двусвязный список в своём коде? На каждую сотню использованных векторов и каждый десяток очередей? Как часто тебе нужен был модифицированный список?
Аноним 04/11/19 Пнд 03:14:02 1512609264
Ананасы, нужна мотивашка учить раст. Ради интереса - без б, но исключительно интерес на хлеб не намажешь. Работы на расте почти нет. Что на нем пишут сейчас вообще?
Аноним 04/11/19 Пнд 03:22:16 1512611265
rust.png (122Кб, 1430x1153)
1430x1153
>>1512609
Дохуя всего абсолютно, вон пикрил посмотри.
Аноним 04/11/19 Пнд 03:25:48 1512613266
>>1512611
Толсто. И hh.ru чуть ли не самый худший вариант для поиска работы на расте, хотя и там иногда проскальзывают вакансии. Пока что Рашка не доросла до раста, ракорастов берут пока что только в Европке или Америке.
Аноним 04/11/19 Пнд 03:36:03 1512617267
>>1512611
раст основным хард-скиллом не идет вообще нигде. Только как плюс лол
В заголовках везде джава и макакаскрипт с сисярпом
Аноним 04/11/19 Пнд 03:59:29 1512621268
>>1512613
Возможно ли растом делать 7к$ на удаленке, если условно входишь в top25%?
Аноним 04/11/19 Пнд 05:15:50 1512642269
>>1512621
Нет, ибо на раст нет работы и так, что уж там про удаленку говорить, да еще и за 7к. Только если свою ОС на ржавом напишешь
Аноним 04/11/19 Пнд 13:38:39 1512828270
>>1512602
ну чтож...

struct PieceOfShit {
parent: Option<Weak<Rc<RefCell<PieceOfShit>>>>,
some_data: String,
child: Option<Weak<Rc<RefCell<PieceOfShit>>>>,
}
Аноним 04/11/19 Пнд 14:18:21 1512870271
Аноним 04/11/19 Пнд 15:41:23 1512978272
>>1512828
>child: Option<Weak<Rc<RefCell<PieceOfShit>>
Зачем такая длинная запись, просто Option<RefCell<>> не катит?
Аноним 04/11/19 Пнд 15:50:39 1512987273
>>1512978
с виком я вроде слегка обосрался,
но вот Rc<RefCell нужен для мутабельности (не мутекс конечно, но тоже неплохо)

>>1509028
а вот это я и пародировал
Аноним 04/11/19 Пнд 20:20:20 1513246274
image.png (272Кб, 1026x772)
1026x772
image.png (59Кб, 820x593)
820x593
Попробовал ночную сборку Servo, пока очень сыро. Сначала он тупо валился т.к. не мог создать графический контекст Failed to create graphics context!: NoCurrentContext (thread main, at src\libcore\result.rs:1165). На angle завёлся. Мультипроцесс под виндой тоже не работает [2019-11-04T17:18:21Z ERROR constellation::pipeline] Multiprocess is not supported on Windows or iOS.
Аноним 04/11/19 Пнд 21:43:21 1513336275
>>1513246
>пока очень сыро
https://wiki.mozilla.org/Oxidation#Shipped
Сухим он никогда и не будет, все готовые куски просто тащат в фф и мерджить с гекко, а в серво будут тащить новые экспериментальные фичи.
Аноним 04/11/19 Пнд 22:20:06 1513367276
Аноним 05/11/19 Втр 00:42:01 1513456277
>>1513367
Так себе сравнение если честно, для меня нет победителей. С++ просто нечитаемое говно, а раст при первом же упоминании list скатывается в unsafe
Аноним 05/11/19 Втр 00:47:06 1513459278
Screenshot2019-[...].png (870Кб, 1080x2248)
1080x2248
Screenshot2019-[...].png (1468Кб, 1080x2248)
1080x2248
>>1512578
> А где этому учиться?
На работе, на должности бекенд-разраба.
> Можешь посоветовать книжек и ресурсов?
Пикрилы например, + видосы со всяких highload'ов. Первое для получения хоть какой-то базы, второе чтоб контекст в голове получился.
> node.js
> дрочкой серверов
Посмотри на хх, сколько вакух на чистый js backend, и сравни с питоньим и гошным бэком. Почитай, что хотят в вакансиях. И походи по собесам. Так, для понимания рыночка.

Тебе понадобится знание языка, платформы+фреймворка, какой-нибудь sql/nosql-бд, какого-нибудь брокера сообщений, общие поверхностные знания о сетях/протоколах/форматах данных/способах предоставить api, и умение пользоваться докером с каким-нибудь оркестратором (compose/swarm/кубер).
Аноним 05/11/19 Втр 10:30:42 1513585279
>>1513456
У Сишки нет генериков, и даже без них Раст даёт банальные вещи вроде человеческого стектрейса по ООМ, который в Си нужно отдельно вкорячивать костылями. У всех остальных языков к двунаправленному списку нужно прибавлять весь код сборщика мусора, потому что без него он не имеет смысла.

Мораль в том, что двусвязный список - это нифига не что-то тривиальное, если браться серьезно. А ансейф - это часть языка, причем далеко не повсеместно нужная.
Аноним 05/11/19 Втр 19:33:09 1513976280
Всё-тки, аноны, нужно пробросить в дочернюю структуру постоянно хранимый коллбэк, иначе никак. И, знаете, очень странно, что с этим пиздец какие сложности. Постоянно "self doesn't live long enough" и подобная ебола. Вот как объяснить конпелятору, что это, сука, родитель, передаёт коллбэк, сука, потомку, которым сам же и владеет, а посему потомок никак родителя не переживёт и можно конпелять. Вот как?

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=c2b0c60df88a888b0e68705f36bfd6ab вообще шедеврально:
note: ...so that the types are compatible:
expected &&mut Parent<'_>
found &&mut Parent<'_>
note: but, the lifetime must be valid for the lifetime '_ as defined on the impl at 13:13...
Аноним 05/11/19 Втр 19:56:05 1513994281
>>1513976
Потому что ты вызываешь функцию чайлда на данные парента. И данные парента не должны сдохнуть до того, как сдохнет чайлд. Конпелятор не может этого обещать, потому что вызывает drop() на весь парент, а не на куски его данных. И я до сих пор не могу понять, нахуя тебе вот это вот наследование, если оно в расте реализуется только через уёбищное Box<dyn TraitObject>. Тем более, у тебя нихуя нет наследования, потому что парент i32, а чайлд u32. Если тебе надо только строку расшарить, то Rc<String> и клонируешь стронк референс. А если тбе иногда надо мутать эту строку, но ты её мутаешь редко и не в цикле, то Rc<RefCell<String>>, там оверхед маленький, если постоянно не менять эту строку. А если тебе эту шнягу из разных потоков надо менять, то Arc и Mutex.
Аноним 05/11/19 Втр 20:05:39 1513996282
>>1513994
>данные парента не должны сдохнуть до того, как сдохнет чайлд
>Конпелятор не может этого обещать
эм, а почему, собсно? Ведь чайлд, это тоже данные парента. Как, разве может парент проебаться, а чайлд - нет?

>надо только строку
в том и дело, что это только в этом примере. В реальности без коллбэка никак ну никак, мам!
Аноним 05/11/19 Втр 20:07:49 1513997283
>>1513994
>наследование
не смотри на данные, нет там цели что-то отнаследовать, эт я так, для более дальнейшего примера добавил и забил, а удалить забыл.
Аноним 05/11/19 Втр 20:10:01 1513998284
>>1513996
Что мешает сделать так?
struct Data { vec: Vec<usize>, other_vec: Vec<f32> }
pub struct Parent { d: Rc<Data>, p: i32 }
struct Child { d: Rc<Data>, c: u32 }
Аноним 05/11/19 Втр 20:16:42 1514002285
>>1513998
>Что мешает сделать так?
Через Rc<RefCell<Mutex<Box<Uebox<... все могут. А я хочу понять, какого конпелятор по-умолчанию считает, что парент может проебаться раньше чайлда (или что там значит его ругань на лайфтаймы, если не это самое)
Аноним 05/11/19 Втр 20:28:34 1514008286
>>1514002
Если бы у тебя было
struct Parent {}
struct Child { p: &Parent, c: i32 }
То конпель и слова бы не сказал, потому что ссылку на парент ты передашь только с лайфтаймом. А про ссылку на часть данных я тебе уже рассказал, так что не нервируй меня, Муля.
Но если интересно, почему ссылка без овнершипа недействительна, смотри Pin в стандартной библиотеке.
Аноним 05/11/19 Втр 20:48:12 1514022287
>>1514002
А, чёт в глаза ебусь. У тебя же child — это кусок парента. А ты хочешь из чайлда вызвать функцию на другой кусок парента. Это селф-референс, правильно я тебя в Pin отправил. Если прочитал про Pin, но нихуя не понял, то загугли repr(Rust) в номиконе. И если у тебя чайлд — это кусок парента, то хули ты просто из парента не вызовешь функцию? Ты же можешь тупо достать любые данные чайлда, потому что он кусок парента. То есть
impl Parent{
fn wtf(&self) -> AnyType {
let data = self.child.get_data();
return self.do_smth_with_data(data)
}
}
Аноним 05/11/19 Втр 21:08:40 1514038288
>>1514022
> прочитал про Pin
прочитал, чё-т примерно понял, что данные в расте могут мотаться по памяти туда-сюда. Ухх.
>хули ты просто из парента не вызовешь функцию
тому що, в реальном примере смыл в том, чтобы её позвал чайлд (один из).
Аноним 05/11/19 Втр 21:16:20 1514048289
>>1514038
В таких случаях пихаешь парентов и чайлдов в разные коллекции (типа как в SQL) и хранишь в объектах не ссылки, а индексы в векторах.
Аноним 05/11/19 Втр 21:23:32 1514056290
Купили как-то суровым сибирским лесорубам японскую бензопилу.
Собрались в кружок лесорубы, решили ее испытать.
Завели ее, подсунули ей деревце.
«Вжик» — сказала японская пила.
«У, бля...» — сказали лесорубы.
Подсунули ей деревце потолще. «Вж-ж-жик!» — сказала пила.
«Ух, бля!» — сказали лесорубы.
Подсунули ей толстенный кедр. «ВЖ-Ж-Ж-Ж-Ж-Ж-Ж-ЖИК!!!» — сказала пила.
«Ух ты, бля!!» — сказали лесорубы.
Подсунули ей железный лом. «КРЯК!» — сказала пила.
«Ага, бля!!!» — укоризненно сказали суровые сибирские лесорубы! И ушли рубить лес топорами…
Аноним 05/11/19 Втр 21:23:40 1514057291
>>1514038
То есть, у тебя есть N переменных, и все они должны читать одни и те же данные? Это
struct Data<T, U> { some_data: T, other_data: U }
struct Child { d: Rc<Data> }
impl Clone for Child {
fn clone(&self) -> Self {
Self { d: Rc::clone(&self) }
А если они ещё и менять данные должны, то либо Rc<RefCell<T>>, либо Arc<Mutex<T>>, либо ансейф.
Ты хотя бы Книгу прочёл, или сразу пошёл код хуярить?
Аноним 05/11/19 Втр 21:43:41 1514082292
>>1514057
>у тебя есть
У меня есть плюсовый код ndk приложения для ведроида с кучей unsafe вызовов к api ведроида и коллбэков, как завязанных на api, так и чисто внутренних.
Сейчас я просто решил внутренний коллбэк переписать в растовом стиле, без этих *mut ctx и прочей жути.
Можно, конечно, переосмыслить и переписать раставейно, но я бы предпочёл сперва получить рабочий вариант, а уж потом его переосмыслять.
И да, книг не читал, т.к. у меня в голове так ничего не откладывается. В режиме поиска ответов на возникающие вопросы оно как-то лучше прёт.
Аноним 05/11/19 Втр 21:46:32 1514090293
Кто-то когда-то юзал в своей практике double linked list? Я вот - нет.
Аноним 05/11/19 Втр 21:58:15 1514116294
>>1514082
То есть, вместо того, чтобы тыкать во врага копьём, ты пытаешься руками затупить наконечник, чтобы потом можно было махать как дубиной? Как же был прав анон с анекдотом про лесорубов.
Короче, либо листаешь быстренько Книгу, особенно внимательно читая семнадцатую главу, либо пиздуешь писать на том языке, который уже знаешь. Если не хочешь Книгу, то читай rust by example, там та же книга, но в виде комиксов.
А если вообще ничего не хочешь читать, то либо дай уже ссылку на то, что ты реально хочешь сделать, либо пихай селф-референс через ансейф Pin, либо делай как тут написано >>1514057
Аноним 05/11/19 Втр 22:07:46 1514122295
>>1514090
Начиная от юзерской и крудовой хуиты (любое приложение со списком: плеер/контакты/список дел, любое приложение с вкладками: браузер/файловый манагер/консоль, любое приложение где нужно undo-redo: текстовый редактор/wyswig редактор/редактор таблиц, любая круд залупа в конце-то концов и тд), проходя байтойобство (любой GC, любой тред манагер, любая система сборки и тд), и заканчивая хуай-теч еботой (любой конпелятор, любая распределёнка, любая jit-вм). Вот нигде, блядь, не нужная структура данных. Я хз вообще что ты там можешь писать.
Аноним 05/11/19 Втр 22:09:01 1514125296
>>1514122
Перечитал, и понял что с GC перегнул, там односвязным все обходятся, ладно.
Аноним 05/11/19 Втр 22:14:22 1514129297
>>1513367
Ну, в плюсах и сях, в отличие от раста, списки обычно все делают руками (или юзают буст, если он уже есть в проекте), ибо неинтрузивный список = 2x оверхед от ожидаемого, и std::list персона нон грата в любом проекте, так что сравнивать странно.

Кстати, а во что разворачивается растовый LinkedList? Хранит ссылку как std::list или инлайнит данные? Вангую что первое, и в расте по-хорошему так же надо делать сырые списки руками, гыг.
Аноним 05/11/19 Втр 22:46:01 1514158298
>>1513585
Лень гуглить, как выглядят генерики в расте? Просто указываешь от чего наследовать шаблонный параметр?
В джаве ебанина какая-то переусложнённая
Аноним 05/11/19 Втр 22:47:21 1514162299
>>1514158
Ну так генерики джавы придумал Одерски (автор скалы), оттуда и type erasure, и прочая околоакадемическая ебанина.
Аноним 05/11/19 Втр 22:49:30 1514164300
>>1514129
> Хранит ссылку как std::list
Как там в С++03? У нас тут в будущем появились операторы перемещения и прочие ништяки.
Аноним 05/11/19 Втр 22:53:58 1514170301
>>1514129
Сорцы же можно посмотреть из доков.
https://doc.rust-lang.org/src/alloc/collections/linked_list.rs.html#38-43
Лист состоит из нод, нода — структура из данных и двух указателей (с размером указателя, даже несмотря на обёртку Option<>, потому что NonNull<> указатель, а Option::None разворачивается в null, которого в расте нет, только в байткоде раста). Это вроде как интрузив.
>>1514158
Как foo<T>( variable: T) -> T { return variable }
Где T — любой тип, позволяющий производимые операции. Выглядит так, работает чуть иначе, чем выглядит.
Аноним 05/11/19 Втр 23:05:46 1514182302
Аноним 05/11/19 Втр 23:15:38 1514191303
>>1514182
А что ты хочешь? Какую-нибудь ультра-ансейф
mem::transmute<Node, T>(node)
структуру вообще без обозначения этой структуры, чтобы какие-то байты там отвечали за данные, а какие-то за указатели, но процессор при этом вообще бы не знал, какие там данные за что отвечают? Иди читай repr(rust) главу в номиконе, тебе и так компилятор оптимизирует всё то, что по стандарту С не оптимизируется, а ты хочешь какую-то магию ебаную, которую даже на ассемблере не сделать.
Аноним 05/11/19 Втр 23:16:05 1514193304
Ребят, подскажите, что я делаю не так.

#![feature(alloc, heap_api)]
use std::alloc::heap;

сразу же вот такая ошибка отдается
unresolved import `std::alloc::heap`

Где теперь искать heap? Очень нужно выделять куски памяти произвольного размера простым api.
Аноним 05/11/19 Втр 23:16:35 1514195305
>>1514122
Немного неясно выразился. Я говорил не о списке, как он определяется в линейной алгебре, а о структуре данных «двусвязный список» с O(1) добавлением/удалением в конец/начало/середину и с возможностью обратного прохода по списку. Ни разу не встречал еще необходимости именно в полном списке этих свойств. Всегда список можно было заменить на односвязный или на банальный массив
Аноним 05/11/19 Втр 23:19:07 1514199306
>>1514158
Смотри обсуждение выше по треду. Вкратце - дженерики тут охуенные. И баунды, которые тебе не нравятся в джавовских дженериках есть в расте. Как и в С++20, лол
Аноним 05/11/19 Втр 23:19:50 1514202307
>>1514193
Был box кейворд, но его так и не стабилизировали. Смотри функции вот тут
https://doc.rust-lang.org/alloc/alloc/index.html
Или в std::alloc
В коре аллока нет, если ты микропроцессор через core пишешь.
Аноним 05/11/19 Втр 23:23:08 1514204308
>>1514195
Ещё один блядскую магию хочет. В любую точку списка тебе O(1) не вставит, потому что дойти до этой точки по указателям — O(N). O(1) только туда, куда у тебя уже есть указатель. Обычно это начало и конец.
Аноним 05/11/19 Втр 23:24:02 1514207309
>>1514202
Ну т.е. мне нужно смотреть в сторону функции alloc_array и юзать ее для u8, если я хочу получить аналог malloc из c, я правильно понимаю?
Аноним 05/11/19 Втр 23:27:01 1514210310
>>1514191
Я хочу, чтобы данные просто лежали в памяти вместе с ссылками. Для понимания: в плюсах для этого просто наследуются от класса с ссылками и всем остальным. В расте способов замутить такое (кроме макросов, которые ниебически раздуют код) как я понимаю, нет?

>>1514195
Ну так перечитай моё сообщение, я тебя правильно понял, и все примеры в том посте именно о структуре данных, лол. Как ты что угодно с undo-redo/вперёд-назад или lru без него замутишь?
Аноним 05/11/19 Втр 23:28:37 1514212311
Аноним 05/11/19 Втр 23:31:32 1514214312
>>1514210
Ты ёбнулся? Я тебе дал ссылку на сорцы, рассказал, что структура для данных хранит в себе не только данные, но и два указателя. А ты начал пиздеть, что не интрузив. А что тебе тогда интрузив, ебанутый?
Аноним 05/11/19 Втр 23:31:36 1514215313
>>1514204
Маня, вставлять в список можно, имея итератор. Совсем необязательно идти в место ставки, чтобы вставить/удалить элемент
Аноним 05/11/19 Втр 23:33:10 1514217314
>>1514215
Это ты про итератор который может инвалидироваться и ты начнешь писать хуй пойми куда? Классические кресты?
Аноним 05/11/19 Втр 23:36:32 1514218315
>>1514215
Это в том списке, в котором указатели не в структуре с данными, а в массиве на стеке лежат. А в нашем тебе надо по куче бегать по указателям: берёшь ячейку, берёшь из неё указатель, берёшь по нему следующую ячейку, берёшь из неё указатель... И так пока не найдёшь нужную ячейку.
Аноним 05/11/19 Втр 23:46:46 1514227316
>>1514214
Пока пиздел тут, загуглил типы данных раста, и понял что это не интрузив лист нихуя.

В таком листе лежит 3 ссылки (и длинна зачем-то), вместо 2 ссылок и данных. В первом случае для доступа к данным после того, как мы доитерировались до нужной ноды, нам придётся лезть в рандомный кусок памяти хуй пойми где на бенчмарках это редко видно, потому что твоя программа в одиночку активно срёт в память, хотя даже по ссылке выше видно разницу в простом бенчмарке но ирл без компактирующего гц ноды раскидывает по всей оперативке), а в первом данные всегда будут в кэше сходу, как только мы дошли до ноды. Так понятно?
Аноним 05/11/19 Втр 23:57:30 1514232317
>>1514227
PhantomData — не ссылка, а структура с нулёвым размером, которая просто говорит компилятору, что у нас тут Box<T>, а не Option<NonNull<T>> (который и есть Box<T>, что я тебе в самом первом посте объяснил. И нет, у нас тут не C, где нулёвые структуры занимают 1 байт, у нас раст, где нулёвые структуры занимают 0 байтов).
И если ты мне сейчас не скажешь, как ты хочешь, чтобы выглядел псевдо-байткод, то я с тобой разговаривать не буду больше. А когда ты мне покажешь байткод, я тебе скажу, что он точно так же выглядит в расте (и даже лучше в большинстве случаев, потому что компилятор сам оптимизирует расположение элементов в структуре, а твои кресты с обратной совместимостью так не могут).
Аноним 05/11/19 Втр 23:58:20 1514234318
>>1514227
>а в первом
во втором
Аноним 06/11/19 Срд 00:00:14 1514236319
1.png (6Кб, 437x148)
437x148
>>1514227
Да ёптваю мать. На пике структура Node. Она содержит в себе две ссылки и объект (НЕ ССЫЛКУ НА ОБЪЕКТ, БЛЯТЬ). Как только мы дошли до ноды, нужные данные лежат ровно на 16 байт ниже этой ноды (А НЕ В РАНДОМНОМ МЕСТЕ, БЛЯТЬ).

Определись, что тебе надо. Я не знаю, может ты хочешь выделять память на стеке. Тогда тебе растовый LinkedList не поможет. Но у меня ощущение, что ты сам не знаешь, что несешь.
Аноним 06/11/19 Срд 00:14:19 1514247320
Screenshot 2019[...].png (195Кб, 1800x984)
1800x984
190218120225709[...].jpg (36Кб, 600x400)
600x400
>>1514232
>>1514236
Блять, я всё это время смотрел на структуру LinkedList вместо Node, и понял это только когда посмотрел на LLVM IR.

Извини, антоша, что порвал тебе жепу, я не специально.
Аноним 06/11/19 Срд 00:19:34 1514251321
>>1514247
А еще я прочитал-таки твою ссылку:
>For the intrusive list variations, the data are entered into a vector and then pushed back to the intrusive list.

Оказывается вызывать malloc один раз - это быстрее, чем вызывать его один раз. Удивительные открытия.
Аноним 06/11/19 Срд 00:20:43 1514253322
>>1514251
>чем вызывать его один миллиард раз
Аноним 06/11/19 Срд 00:21:30 1514254323
Аноним 06/11/19 Срд 07:36:49 1514371324
>>1514254
Наверняка есть какая-то штука, типа no_mangle, чтобы так не сувал.
Аноним 06/11/19 Срд 10:25:33 1514398325
>>1514371
repr(C) называется. Вот только ты уверен, что разберёшься с памятью лучше конпеля? Эта структура без оптимизации занимает на четыре байта больше.
Аноним 06/11/19 Срд 10:35:21 1514404326
Аноним 06/11/19 Срд 11:14:58 1514424327
Аноним 06/11/19 Срд 11:34:19 1514430328
>>1514424
Ты же знаешь, что packed просто так работать не будет? Что это ансейф для процессора, и каждый раз, когда ты что-то делаешь с запакованной структурой, ты должен чётко понимать, что делаешь?
https://doc.rust-lang.org/nomicon/other-reprs.html#reprpacked
Аноним 06/11/19 Срд 11:40:28 1514435329
>>1514424
А ещё, у меня в твоём примере поменялись местами "aaaa" и "cccc". Так что не бита.
Аноним 06/11/19 Срд 11:55:57 1514438330
Аноним 06/11/19 Срд 12:39:35 1514460331
Аноним 06/11/19 Срд 12:41:41 1514463332
>>1514460
а, да, это найтли, но и похуй. В стейбл арифметику указателей не завезли, но куда без неё - рано или поздно этот ptr_offset_from или что-то наподобие стабилизируют.
Аноним 06/11/19 Срд 12:56:17 1514475333
>>1514460
Поздравляю! Выглядит так себе, но если работает, то хули тут.
>>1514463
Может и завезут, но она в расте не нужна, если ты не с FFI работаешь.
Аноним 07/11/19 Чтв 19:25:43 1515687334
1557611486660.png (24Кб, 300x441)
300x441
Асинк-эвейт завезли в стейбл!
Аноним 07/11/19 Чтв 19:41:27 1515710335
Аноним 08/11/19 Птн 09:22:57 1516072336
О, переделал метод из fn в async fn - и оно без задней мысли сконпелировалось. И что, даже работать будет?
Это я всё с переписыванием с крестов - в крестах для вызова этого метода аж поток форкался.
Аноним 08/11/19 Птн 10:27:37 1516112337
>>1516072
Откуда мы можем знать, будет ли оно работать, если мы не знаем, что должно работать? Но вообще, да, должно. Async возвращает Future, которая сама по себе ничего не делает. Чтобы она что-то сделала, надо её выполнить. Но вот когда ты будешь её выполнять, это уже сам решай.
https://rust-lang.github.io/async-book/01_getting_started/04_async_await_primer.html
Аноним 08/11/19 Птн 10:55:22 1516122338
>>1516112
Вот, эт самое, а можно её выполнить без блокировки? Ну, тип, надо мне записать файл - чтобы оно там как-нибудь пошло записываться, а выполнение дальше пошло.
Аноним 08/11/19 Птн 11:12:39 1516130339
Аноним 08/11/19 Птн 11:14:25 1516131340
Аноним 08/11/19 Птн 11:39:24 1516143341
>>1516122
А зачем тебе async, если тебе просто в файл записать что-то надо? Не проще заспавнить тредак, который этот файл обработает? А если тебе надо убедиться, что два тредака не полезут в один файл, то там всё равно будут блоки, вроде FIFO очереди с задачами, где следующая выполняется после того, как предыдущая вернула некое Ok(imma_done).
Аноним 08/11/19 Птн 12:20:02 1516161342
>>1516143
>Не проще заспавнить тредак
Дак там у меня полно raw пойнтеров, а с ними "cannot be sent between threads safely".
Аноним 08/11/19 Птн 12:30:27 1516169343
Аноним 08/11/19 Птн 12:31:57 1516171344
>>1516169
О, лол, я даже не заметил, что там есть AtomicPtr, который как раз рав поинтер, но Send.
Аноним 08/11/19 Птн 20:24:14 1516501345
В-обсчем, аноны, соснул я с тредами.
Что так через тупо вызов треда, что эдак через async & LocalSpawn - получаю 'Unable to spawn: SpawnError("shutdown")' даже на вызове пустой функции-заглушки без параметров.
Надо попробовать воспроизвести на чистом примере и багулю куда-нить репортнуть.
И да, это я всё под ведроид корячу.
Аноним 08/11/19 Птн 21:53:59 1516561346
>>1516501
Короч, завелось асинхронное сохранение. Сделал тред, в который передаю AtomicPtr (спасибо, аноний), до этого передавал слайсом, который получал через from_raw_parts. Но, что странно, версия с LocalSpawn вылетела вообще без передачи каких-либо параметров. Но это, мож я проглючил и затестил старый бинарь.
Можете меня поздравить, у меня теперь есть рабочая аппликуха, представляющая собой переписанный пример камеры отсюда https://github.com/android/ndk-samples/ (я взял texture-view и добавил в него функционал съёмки и сохранения из basic)
Осталось теперь работу найти.
Аноним 08/11/19 Птн 22:01:35 1516565347
>>1516561
Ссылок и примеров реального кода не будет? Да и переписывать что-то на раст, балуясь ансейфом и голыми указателями просто так, а не ради оптимизации — так себе затея.
А ещё, я проебался немного по поводу AtomicPtr, он Sync, а не просто Send.
Аноним 09/11/19 Суб 08:19:23 1516759348
>>1516565
>Да и переписывать что-то на раст, балуясь ансейфом и голыми указателями просто так
Это я пока только пример переписал, дальше буду делать из него полноценное приложение. Буду брать за него деньги и жить на острове в гареме с наташками. Если не фартанёт, то выложу в попенсорс.

Что касается голых указателей - без них никак, так как там идёт очень плотное взаимодействие с API.
Аноним 10/11/19 Вск 14:48:36 1517746349
>>1516561
А не проще на Kotlin писать, зачем на андроиде раст?
Аноним 10/11/19 Вск 14:57:39 1517752350
>>1517746
Смотря где. На андроиде проще, на ios не проще, в хайлоаде проще.
Аноним 10/11/19 Вск 14:58:47 1517754351
>>1517752
В хайлоаде проще на расте
Самофикс
Аноним 10/11/19 Вск 15:24:43 1517786352
>>1517746
Ну, для всякой риалтайм залупы-то даже на андроиде выбор из плюсов или раста.
Аноним 10/11/19 Вск 15:34:07 1517800353
>>1517786
А у него там реалтайм-залупа? Подозреваю какую-нибудь дорисовку рожиц на лицах, но в андроиде уже по идее все либы для этого есть, чтобы прямо из явы дёргать, ну и в самом андроиде всякие апи, которые эффективнее не реализуешь, а FFI в любом языке одинаково работает.
Аноним 10/11/19 Вск 15:42:14 1517806354
>>1517800
Ну хочет написать имиджпроцессинг/игровой движок/кроссплатформенный гуй на (без гб памяти на старте) — пусть пишет. Низкоуровенных библиотек (тем более на мобилках, часах итд) всегда поле непаханное, тем более что всё дырявое как ебаное сито (что ведро что айос). Я хз чего ты доебался.
Аноним 10/11/19 Вск 22:08:28 1518129355
>>1517746
Мне ko-ko-kotlin не интересен, в отличие от раста. С другой стороны - писать хайлоад-сервисы в качестве домашнего проекта не интересно, а вот приложуху - оче даже. Так что, в лучшем случае у меня будет приложение и прокачка в расте, в худшем - только прокачка.

Алсо, сам по себе нативняк при работе с камерой позволяет решать "в лоб" задачи, для которых на жабе/котлине пришлось бы пуд соли съесть, чтобы работало и не тормозило.
Аноним 10/11/19 Вск 22:26:12 1518138356
>>1518129
>нативняк при работе с камерой позволяет решать "в лоб" задачи, для которых на жабе/котлине пришлось бы пуд соли съесть, чтобы работало и не тормозило
Какие? Т.е. что конкретно ты будешь делать?
Для обработки пикселей должны уже быть либы готовые, с NEON-оптимизациями, раст тебе в этом не поможет. Там конечно есть интринсики, но вряд ли ты их будешь писать сам, т.к. та ещё еботня. Да и не сильно сложнее вызывать асм-код из явы (т.е. скомпиленный отдельно ассемблером), интринсики реже используют на практике.

Я не к тому, что раст не нужен, просто интересно зачем тебе он понадобился на андроиде.
Аноним 10/11/19 Вск 22:37:34 1518151357
>>1518138
>либы готовые, с NEON-оптимизациями
Для обработки пикселей есть renderscript или vulkan, если уже по-большому ходить.

>понадобился на андроиде
прост. NDK жи есть, но на стрёмных плюсах. А тут я хочу на модном расте попробовать, ну и самоцель - больше в изучении языка.
Аноним 11/11/19 Пнд 10:59:13 1518457358
Аноны, а есть какой-нибудь парсер раста в виде отдельного крейта? Чтобы можно было вытащить все сучности из кода, функции там, их параметры и проч. Для чего:
есть куча ffi функций вида ACaptureRequest_setEntry_rational , ACaptureRequest_setUserContext и т.д., которые принимают первым параметром "request: *mut ACaptureRequest" - хочу через build.rs нагенерить для этого всего обёрток, чтобы автокомплит работал.
Аноним 11/11/19 Пнд 11:26:52 1518472359
Аноним 11/11/19 Пнд 19:19:17 1518804360
>>1518457
Юзай обычный стек для процедурных макросов: proc_macro2 + syn + quote. Покроешь все кейсы.
Аноним 13/11/19 Срд 20:18:19 1520396361
Посаны, а это правда, что если раст выстрелит и будет везде юзаться в системщине, то хацкеры вымрут как вид, ибо нечего будет эксплоитить? Или это маняфантазии?
Аноним 13/11/19 Срд 20:21:52 1520400362
15735055643860.jpg (46Кб, 1080x1076)
1080x1076
>>1520396
>маняфантазии
This.
Даже если всё переписать на руст, unsafe процессор всё равно вылезет и начнётся: meltdown, spectre, хуектер. А если мы закатаем процессор в ещё 3 виртуальных процессора, то начнутся дырявые сетевые протоколы. А потом, когда и их залатаем, для пущей безопасности надо хотя бы размещать датацентры в космосе будет.
Аноним 13/11/19 Срд 20:24:27 1520405363
>>1520396
В скриптах (пхп, питон), жаве (и остальном поверх жвм) итд находят уязвимости.
Аноним 13/11/19 Срд 21:28:34 1520462364
>>1520405
Там узявимости тащем-то уровня "на си написали, а тут — бац — и буфер оверфлоу".
Аноним 13/11/19 Срд 22:36:02 1520486365
Аноним 14/11/19 Чтв 00:53:44 1520558366
>>1520486
Ну ты сейчас берёшь, открываешь радномный ченджлог рандомной скриптохуйни
https://www.php.net/ChangeLog-5.php
и наслаждаешься
>Mbstring:
>Fixed bug #77370 (Buffer overflow on mb regex functions - fetch_token). (CVE-2019-9023)
>Fixed bug #77371 (heap buffer overflow in mb regex functions - compile_string_node). (CVE-2019-9023)
>Fixed bug #77381 (heap buffer overflow in multibyte match_at). (CVE-2019-9023)
>Fixed bug #77382 (heap buffer overflow due to incorrect length in expand_case_fold_string). (CVE-2019-9023)
>Fixed bug #77385 (buffer overflow in fetch_token). (CVE-2019-9023)
>Fixed bug #77394 (Buffer overflow in multibyte case folding - unicode). (CVE-2019-9023)
>Fixed bug #77418 (Heap overflow in utf32be_mbc_to_code). (CVE-2019-9023)
>Phar:
>Fixed bug #77247 (heap buffer overflow in phar_detect_phar_fname_ext). (CVE-2019-9021)
>Xmlrpc:
>Fixed bug #77242 (heap out of bounds read in xmlrpc_decode()). (CVE-2019-9020)
>Fixed bug #77380 (Global out of bounds read in xmlrpc base64 code). (CVE-2019-9024)
вот вообще ни разу не так.
Потом мотаешь ниже и там всё по новой
>Fixed bug #73279 (Integer overflow in gdImageScaleBilinearPalette()).
>Fixed bug #73280 (Stack Buffer Overflow in GD dynamicGetbuf).
>Fixed bug #72482 (Illegal write/read access caused by gdImageAALine overflow).
>Fixed bug #72696 (imagefilltoborder stackoverflow on truecolor images). (CVE-2016-9933)
>Imap:
>Fixed bug #73418 (Integer Overflow in "_php_imap_mail" leads Heap Overflow).
Аноним 14/11/19 Чтв 01:27:41 1520564367
Аноним 14/11/19 Чтв 01:40:16 1520571368
>>1520558
>gdImageScaleBilinearPalette
Как раст спасет от ошибок в сишных либах? Или ты предлагаешь все окружение на расте переписать? К тому же сейчас можно пересобрать либы с защитой стека, и ROP-ы не так страшны как раньше.
Аноним 14/11/19 Чтв 01:59:29 1520573369
>>1520571
Ну так эта ветка диалога и началась с фразы "а шо если всё переписать на руст"?
>К тому же сейчас можно пересобрать либы с защитой стека
Ведь все в мире аутисты гентушники, и собирают под себя весь мир.
Аноним 14/11/19 Чтв 02:03:31 1520575370
>>1520573
>Ведь все в мире аутисты гентушники, и собирают под себя весь мир.
Если тебе безопасность важна, то это сделать гораздо проще, чем переписать все окружение на другом языке.
Аноним 14/11/19 Чтв 02:56:53 1520585371
>>1520575
А потом повторять для каждой версии 0.0.0.1 a/b/c/d?
Аноним 14/11/19 Чтв 03:06:41 1520586372
>>1520585
Проще поставить hardened дистрибутив, где все уже собрано.
Аноним 14/11/19 Чтв 11:49:20 1520777373
Аноним 14/11/19 Чтв 12:10:02 1520809374
Аноны, ecть одна строка, которую нужно проматчить.. Все уже напряглись, я чувствую. Её нужно проматчить другой, сука, строковой переменной. Это вообще возможно?
Аноним 14/11/19 Чтв 12:13:52 1520815375
Аноним 14/11/19 Чтв 14:44:46 1520997376
>>1520815
Вот оно что, михалыч.
Аноним 15/11/19 Птн 20:30:25 1522042377
Аноны, чего притихли? Давайте, хвалитесь, чего за неделю накодили.
Я, вот, распарсил через ебаный syn не, ну на кой мне в ast запятые со стрелочками? Бошку сломал, пока структуру разгреб выхлоп bindgen и сделал симпатичную обёртку поверх андроидных структур. Навряд ли это где-то ещё пригодится, так как в андроиде оче удобно это всё поименовано: СтруктураНейм_методНейм, но мне должно помочь.
Аноним 16/11/19 Суб 15:56:42 1522665378
>>1522042
Я всю неделю ходил на работу и массаж/лфк. Мне сейчас не до наворачивания своих проектов на расте в свободное время
Аноним 17/11/19 Вск 04:02:37 1523018379
Ананасы, зачем в расте unsafe? Ведь если не пихать код в ансейф вообще, то его будет невозможно взломать, 0 шансов на переполнение стэка/кучи/использования данглинг поинтера и т.п.
Или есть подводные? Ну или как всегда "хуяк-хуяк и в продакшн" превыше всего?
Аноним 17/11/19 Вск 08:53:06 1523062380
>>1523018
unsafe иногда дает такие возможности, что-бы которые реализровать в сейв нужно затратить куча ресурсов.

например банально скопировать цвет из u16 в [u8, u8, u8, u8]. (хотя может я уже устарел и такая фича есть в сейве, но тем не менее)

еще удобно писать сейф враперы под С либы из ансейв кода.
Аноним 17/11/19 Вск 08:53:44 1523063381
Аноним 17/11/19 Вск 11:53:53 1523093382
>>1523062
>скопировать цвет из u16 в
уже есть to_be_bytes/to_le_bytes. А вот обратно пока вроде ансейф.

>удобно писать сейф враперы под С
Взаимодействие с сишным кодом - в принципе unsafe. Какой-то, хуй его знает откуда полученный, указатель, а ты его хуяк - и дереференсишь в конкретную структуру. Смысл в том, что если на этом месте у тебя сегфолт наебнёт, то ты сразу знаешь, куда копать.
Аноним 17/11/19 Вск 13:03:09 1523128383
>>1523018
Затем, что раст — системный язык. Собственно, этим всё сказано. Но если ты хочешь примеров, то пожалуйста.
Имплементить Send и Sync для кастомной структуры — ансейф. Либо не балуешься кастомными структурами, которые не ловят Send и Sync автоматом, что охуеть какое ограничение, либо сосёшь лапу.
Голые указатели. Тут даже говорить ничего не буду, потому что растовая ссылка — голый указатель с обёрткой лайфтайма для компилятора.
Всякие страшные байтоёбища, тот же mem::transmute, что иногда очень удобен, но очевидно, что сейф трансмута не было и не будет никогда. Вот тебе пример, где без трансмута хуй обойдёшься: >>1514404
Аноним 17/11/19 Вск 18:47:50 1523454384
>>1523018
Без ансейфа ты сможешь... ты не сможешь написать ничего. Тебе все равно нужен IO, взаимодействие с внешними либами, а оно by design unsafe, так как хуй пойми откуда там появляются указатели, как работают функцуии и т.п. То есть ты даже hello world не напишешь без unsafe, строго говоря.

Альтернативой может быть разве что ОС и весь софт, написанный на расте, работающий поверх архитектуры, в которой раст это машинный язык (ведь мы понимаем, что использование ассемблерных вставок это тоже unsafe, да?).
Аноним 17/11/19 Вск 22:46:42 1523687385
1
Аноним 18/11/19 Пнд 21:14:35 1524290386
>>1523454
>архитектуры, в которой раст это машинный язык

Система типов безопасного раста тупо не позволяет выразить вещи типа растущего массива произвольного размера.
Аноним 19/11/19 Втр 11:14:21 1524533387
>>1524290
Да она нихуя не позволяет. Вот, скажем, есть для разных примитивов такая штука как
pub fn to_ne_bytes(self) -> [u8; 8]
И на самом деле это просто обёртка для mem::transmute(). Или обёртка обёртки для mem::transmute(), смысл от этого не меняется.
Вообще, мы как-то слишком дохуя пиздим про очевидность того, что без unsafe раста не было бы раста вообще. Или был бы со сборщиком мусора.
Аноним 19/11/19 Втр 11:21:32 1524536388
>>1524533
Но, заметь, оно стабилизировано - то есть, разработчики мамой клянутся, что будет работать. Да и, тащемта, весь конпелятор внутри unsafe - как иначе-то с памятью работать, чтобы тебе safe вектор наружу предоставить?
Аноним 19/11/19 Втр 11:28:16 1524539389
>>1524536
Да так и я о том же, что никак. Но вот как отсюда >>1523018 началось, так мы и пиздим уже два дня на тему "зачем в расте unsafe", хотя всё очевидно.
Аноним 19/11/19 Втр 12:10:44 1524559390
>>1524533
Зато тебе надо проверить и отполировать только ансейф блоки.
Аноним 19/11/19 Втр 12:22:45 1524566391
Аноним 19/11/19 Втр 12:40:47 1524575392
>>1524566
Поэтому я для своих ансейфов написал дебажный макрос, в котором тупо вываливаю в лог, что за ансейф вызов и откуда зовётся, а после вызова репорчую об успехе. Так сразу видно, что и где упало.
Аноним 19/11/19 Втр 12:42:43 1524577393
>>1524575
А можно его посмотреть? А то статик анал-лизаторов в раст кроме бороу чекера пока не завезли.
Аноним 19/11/19 Втр 12:48:01 1524581394
Выделение042.png (39Кб, 506x605)
506x605
>>1524577
>посмотреть
Да ничего хитрого, собсно. Потом прямо в этот макрос заворачиваешь свой вызов и вперде. Можно даже с фигурными скобками, чтобы с/на простой unsafe легко менять было.
Аноним 19/11/19 Втр 13:08:20 1524594395
>>1524581
А хорошо выглядит, слушай. Только со статусом непонятно. Это для случаев, когда ансейф вызов завершился неудачно? Типа меняешь no_check на check_zero и ловишь код выхода, с которым программа завершилась после этого ансейфа?
Аноним 19/11/19 Втр 13:23:28 1524604396
>>1524594
Это на случай вызова ffi функций, которые результатом возвращают код статуса со смыслом 0 = успех, остальное = фейл.
Есть ещё макрос для функций, у которых возвращаемый статус имеет некий enum тип - там в случае ошибки можно вывести строкой значение статуса.
Аноним 21/11/19 Чтв 22:29:01 1526283397
Аноним 21/11/19 Чтв 22:42:57 1526287398
>>1526283
Почему у этого зумера-додика так печёт от ||? Почему он так цепляется к одинаковым идеям? Есть хоть один язык ничего не пиздивший ниоткуда, лол?
Аноним 21/11/19 Чтв 23:54:39 1526319399
>>1526287
Потому что он не удосужился хотя бы ржавый мануал пролистать, а просто начал хлопать рваной жопой от вида двух палок.
Аноним 22/11/19 Птн 11:02:06 1526528400
>>1526287
Потому что он не умеет работать, может только "хайпить" хр-тьфу, блять! и лепить ярлыки на всё подряд. Он как попугай: вообще похуй что сказать, лишь бы кукарекнуть.
Майкрософт вечно ебутся с багами — "долбаёбы, мелкомягкие мастдай, хуле". Майкрософт заебала ебля с дырками в ансейф крестах и они ползут на раст в критичных узлах — "пидарасы, код писать не умеют, юзают какую-то парашу".
Тут нет смысла что-то обсуждать. Хочешь обосрать раст? Отлично, иди подсоси этому добоблогеру в комментариях. Хочешь поспорить с попугаем? Дон Кихот аплодирует тебе стоя. Хочешь решать реальные задачи? Тогда не читай бложик со смысловым наполнением в стиле "Дом-2".
Аноним 23/11/19 Суб 09:45:49 1527326401
Аноны, я тут, короч, всю неделю проебался с переводом камеры на свои врапперы, которые делал предыдущую неделю. Всё, работает, збс. Теперь, вот, осталось избавиться от Option, которые пришлось использовать во множестве, так как в ебаных плюсах сперва инициируется структура с кучей null полей, а уж потом они заполняются. Старался писать 1:1, поэтому вот так.
Какие у вас успехи?
Аноним 23/11/19 Суб 09:49:07 1527327402
>>1527326
Бизнес-логику пишем
мимо крестоблядь
Аноним 23/11/19 Суб 11:15:54 1527361403
Суп программач. Поясни по хардкору. Какие задачи решает раст? Что на нём делают?

На данный момент я веб макака питон/жс вот думаю взяться за какой-нибудь ещё язык чтобы расширить кругозор. Думал учить го, т.к. стильно, модно, молодежно, но хочется выбрать проект который ближе по моему мировоззрению. Вот мозилла мне ближе чем Гугл, поэтому сейчас рассматриваю раст. Пока не знаю чего сам хочу от языка, узнать бы что на нём можно делать.
Аноним 23/11/19 Суб 11:34:00 1527381404
>>1527361
С таким подходом можно только нахуй идти. Если ты питономакака, то не лезь сюда, а иди в предназначенный для этого язык - GOвно. Писать тут можно всё то же, что и на крестах.
Аноним 23/11/19 Суб 11:42:37 1527391405
Как там альфа Токио? Выглядит годно, заебался писать портянки. Оно стабильно работает?
Аноним 23/11/19 Суб 14:51:44 1527594406
А можно в VS Code как-то запилить автодополнение для подключаемых крейтов? Очень напрягает, что надо смотреть в доках как там пишутся поля/функции.
Аноним 23/11/19 Суб 19:05:55 1527839407
image.png (28Кб, 851x358)
851x358
image.png (5Кб, 267x117)
267x117
>>1527594
Не завезли ещё. Все слишком ленивы, чтобы такое написать, поэтому просто на crates.io заходят и жмут эту кнопку.
Аноним 23/11/19 Суб 19:39:04 1527873408
Как же я заебался. Помогите сделать портянку. Есть один асинхронный метод, который должен возвращать некие данные. В нём идёт открытие файла, если ошибка открытия - через match в обработчике ошибки надо выполнить ещё одно открытие файла опять с обработкой ошибок. Надо чтоб было в пакете в пакете. Проблема в том, что не получается одновременно возвращать нужное значение и делать возврат из обработчика ошибок, т.к. обработчик ошибок требует один тип, а из метода надо другой. Причем это говно идёт по цепочке из вложенного обработчика. Если делаю в конце Err(e) возврат такого же Err(e), то обработчики работают, но уже компилятор требует возвращать из метода io::Error и не даёт вернуть моё значение. Если делаю нужный Err для возврата из метода, то обработчики ругаются на то что я им Future подсовываю вместо нужного типа. Как фиксить? Нагуглить не смог как обрабатывать ошибки и возвращать значения, везде примеры только с чем-то одним и оно естественно без проблем работает.
Аноним 23/11/19 Суб 19:42:53 1527875409
>>1527873
Делаешь enum MyErrors {}, и возвращаешь ошибки через него. что-то вроде
enum MyErrors {
IOError(huytd::io::Error),
SomeOtherError(other::error::Type),
SomeOtherErrorTwo(foo::bar::Error),
}
Но может тебе и не подойдёт такое решения, я не ебу, что у тебя там в коде сделать надо.
Аноним 23/11/19 Суб 20:24:30 1527906410
>>1527875
Так и не понял куда твой enum пришить можно.
Вот что значит иметь VS Code вместо IDE. Каким-то адским брутфорсом смог попасть в нужные типы и оно собралось. Вот такое говно я пытался сваять - https://repl.it/repls/ButteryWorseRuntimeenvironment
Аноним 23/11/19 Суб 20:28:51 1527909411
>>1527906
К пизде. Когда тебе надо несколько разных типов в одно место передать, но как один тип — суёшь их в один енум, а потом на месте разворачиваешь матчем по типу
if let Err(foo) {
match foo {
IOError(bar) => obrabotat_ioerr(bar),
SomeOtherError(bar) => obrabotat_soe(bar),
_ => generic_error(),
}
Аноним 23/11/19 Суб 20:37:04 1527918412
>>1527909
Но ведь это надо где-то рядом собирать в enum это говно и тащить до match. Разве это не костыли? Вот у меня есть вложенный обработчик внутри другого, мне надо здесь и сейчас обрабатывать ошибку не выходя никуда из него.
Аноним 23/11/19 Суб 20:42:50 1527925413
>>1527918
Если ты не можешь возвращать один и тот же тип из обработчика, то не костыль. А если можешь, но почему-то не возвращаешь, то да, костыль.
Аноним 24/11/19 Вск 14:09:52 1528348414
>>1527381
Зачем так грубо. Я просто хочу идти не по пути хайпа, а как велит сердце!11
Аноним 24/11/19 Вск 15:56:24 1528438415
>>1528348
Так GOвно сейчас на хайпе. Или молодежный Dart. Но никак не Rust.
Аноним 24/11/19 Вск 18:54:36 1528640416
>>1527361
Любые, потому что системный язык с ансейфом. Но как обычно — если у тебя есть камень, то забить гвоздь или сделать молоток можно, но долго. Но можно. Так и с растом, собственно. Он удобнее, чем руками писать нолики, единички и goto, даже удобнее С, но он — не питон, поэтому программа, которая считает 1+1 на расте пишется дольше, чем на питоне. А вот если тебе нужна программа, которая считает 1+1 на голом железе без ОС, или ты планируешь вкатываться в 3D гейдев, то тут питон можно выбрасывать. Молотком забивают гвозди, но из него не сделаешь пилу.
Аноним 24/11/19 Вск 19:12:41 1528659417
>>1528640
> программа, которая считает 1+1 на расте пишется дольше, чем на питоне
Но ведь это не правда. Можно кинуть две палки и посчитать как в калькуляторе без лишних символов.
Аноним 24/11/19 Вск 19:41:56 1528695418
>>1528659
Правда. В питоне ты сразу пишешь
print(1+1)
А в расте тебе ещё мейнить надо:
fn main() { println!(1+1) }
Аноним 24/11/19 Вск 20:56:40 1528756419
>>1528695
Так в питоне тоже надо явно точку входа прописывать. Весь этот огород с
if __name__ == "__main__"
А в Расте ты пропустил форматирование, надо println!("{}", 1 + 1)
Аноним 24/11/19 Вск 21:25:26 1528771420
>>1528756
У меня интерпретатор одинокий файл кушает без точки входа. И я вспомнил про форматирование, но уже лень поправлять было, один хуй в питоне конечный автомат быстрее пишется.
Аноним 24/11/19 Вск 21:29:13 1528773421
>>1528771
Так ты же пишешь "программа", а не скрипт. Или это одно и тоже?
Аноним 24/11/19 Вск 21:44:25 1528786422
>>1528773
А, тут я проебался, да. Ну, вот и дошли до точки, где с питоном начинается ебля — компиляция. Можно ещё вспомнить отсутствие многопоточности в самом питоне и кучу других минусов по сравнению с растом, но смысл и так понятен.
В любом случае, раст учится дольше питона, и 999999999999999999999999999999999 * 999999999999999999999999999999999999999999999999999999999999999999999999999999999999999090909090909090909090909090909980898980898989880898080808080808080808089898989898989898989898989898989898989898989
ты в расте не умножишь прямо из коробки. Подключить BigInt либу не проблема, конечно, но не вижу смысла спорить, всё равно язык от задач выбираешь. Это если пять лет на расте код пишешь, тебе уже похуй, что на нём писать, ты и так всё можешь и знаешь.
Аноним 24/11/19 Вск 21:50:51 1528793423
>>1528786
>Можно ещё вспомнить отсутствие многопоточности в самом питоне и кучу других минусов по сравнению с растом, но смысл и так понятен.
Тут-то навыки системного программирования и нужны. Если бы я не знал о существовании memory mapped файлов, то-то бы я охуел с мультипроцессингом в питоне
Аноним 26/11/19 Втр 02:45:52 1529697424
Аноны, как можно пройтись по элементам и их индексу
знаю что есть for (index, el) in vec.iter().enumerate(), но в таком случае я буду только брать референс, и если надо переместить это все в другой вектор мне нужно его полностью клонировать, без итератора вроде я сую только разметку.

может конечно я обосрался, что произойдет если я .to_owned() на вектор применю, а потом закину в друоой вектор? он полностью склонируется или только оглавление? и что случится в дальнейшем с элементом, на который ссылается этот референс?
Аноним 26/11/19 Втр 02:59:10 1529701425
Аноним 26/11/19 Втр 02:59:34 1529702426
Аноним 26/11/19 Втр 06:18:18 1529715427
Аноним 26/11/19 Втр 06:47:37 1529721428
>>1529715
сейм щит, оно полностью склонировало вектор
Аноним 26/11/19 Втр 10:18:05 1529786429
>>1529697
into_iter().filter(...).map(...).collect();
Аноним 26/11/19 Втр 10:55:08 1529821430
>>1529697
Нихуя не понял, что тебе надо сделать, но если у тебя есть индекс, и надо переместить кусок вектора куда-то, то для одного элемента есть всякие Vec.remove(index) (swap_remove намного быстрее, но если после каждого ремува ты просто делаешь remove_count += 1; remove(next_index - remove_count), то у свап-ремува там посложнее с индексовой математикой, и свап-ремув не сохраняет порядок вектора; но он безусловно быстрее) .
Для некоторой последовательности основная вытягивалка — это Vec.drain(index..other_index). Ещё посмотри методы слайсов, которые на странице вектора есть, там куча полезных, может есть и нужный тебе.
И изменять вектор в тот момент, когда ты пиздуешь по нему итератором — плохая идея. Сперва вычисли нужные тебе индексы, потом уже по ним работай.
Если брать твой пример, то я бы его превратил в такое:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0aa3e60327bfca518e78d9ab5bf54f86

>>1529786
Ну, или так, если у тебя вся сортировка в фильтр влезет, а все операции в map.
Аноним 26/11/19 Втр 11:13:36 1529831431
>>1529821
Спасибо, посмеялся. Особенно с if в цикле.
Аноним 27/11/19 Срд 11:13:36 1530547432
Что за говно с зависимостями у карго? Какого хуя нельзя токио 0.2 и реквест использовать вместе? Причем если я не прописываю features = ["full"] у токио, то всё работает и он выкачивает 0.1.22 для реквеста и 0.2 для меня. А с full пиздит что нет нужных зависимостей. Пиздец какой-то. Как эти шарады разгадывать?
Аноним 27/11/19 Срд 11:27:37 1530553433
>>1530547
Мне пердолиться с cargo пришлось даже для запуска tui dvach из шапки

Мимо проходил
Аноним 27/11/19 Срд 11:40:21 1530559434
>>1530553
Я вот не могу понять, в чем сложность компилить нужные зависимости под крейты, а для меня те что я указал? Тут же нет никаких конфликтов, через use работают только из моих зависимостей имена, у крейтов свои зависимости. Это ебень какая-то. Вот как мне последние релизные версии tokio и reqwest использовать? А никак, блять. Есть альфа reqwest 0.10, но там tokio в зависимостях =0.2.0-alpha.6 . И даже если я прописываю эти альфы, то нихуя не работает, он почему-то тянет имена из 0.1.22 мне в код. Как же горит.
Аноним 28/11/19 Чтв 19:33:34 1531770435
>>1530553
С чем именно пришлось пердолится?
Аноним 28/11/19 Чтв 20:38:34 1531812436
2019-11-28-1937[...].png (225Кб, 1876x1017)
1876x1017
>>1531770
git clone && cargo run
crago update && cargo run

Выплевывает пикрил


Вручную гуглил дерево депсов и допердолился до обновления scraper до 0.10.1 , лол
Я дебил и это можно было исправить одной командой?
Аноним 28/11/19 Чтв 21:00:41 1531826437
>>1531812
Обновил зависимости через cargo upgrade. Вроде работает.
Аноним 28/11/19 Чтв 21:17:48 1531838438
Аноним 28/11/19 Чтв 21:34:46 1531855439
>>1531826
>>1531838
Потому что оп-говнодел пофиксил зависимости 30 минут назад.
Аноним 28/11/19 Чтв 21:44:06 1531858440
>>1531855
>пофиксил зависимости 30 минут назад.
Так про них и пишу

Я не знал, что upgrade в третегруппных пакетах; теперь разобрался
Аноним 29/11/19 Птн 10:56:33 1532179441
>>1456440 (OP)
Поясните за ваше говно для системника и дрочера на параллельки-перформанс:
1) насколько легко ВОЙТИ?
2) как там с флагами компиляции, ифдефами-ифндефами-дефайнами?
3) Насколько легко биндить с плюсами и какой оверхед? (например, хочу циклически вызывать плюсовой код с куда/опенсиэль кернелами)
4) (необязательный, но интересный пункт) возможно ли интегрирование в существующие сишные и/или плюсовые проекты для нового кода, без рерайта старого, и какие для этого костыли будут, и как там с мейкфайлами?
Аноним 29/11/19 Птн 11:11:45 1532192442
>>1532179
1. Нелегко, особенно если сразу пытаться дрочить параллельность/асинхронность. Но конпелятор отзывчивый, многое подсказывает.
2. https://doc.rust-lang.org/1.30.0/book/first-edition/conditional-compilation.html
3. Оверхеда никакого, гугли rust ffi
4. Хуй его знает. Я в андроидный проект интегрировал норм. Но тут лучше сразу всё на раст переписать, так как при тесной интеграции с ffi ты проебёшь безопасность, которая с сишными указателями в расте не работает.
смысл то как раз в том, что когда у тебя есть ебически большой проект, то там и начинаются проблемы с одновременным доступом к памяти, освободил - не освободил, ой, где-то потекло. А писать маленький кусок на расте, ну ты на и си его напишешь - никакой разницы. Разве что раст сахарнее.
Аноним 29/11/19 Птн 12:43:04 1532254443
>>1532179
>Насколько легко биндить с плюсами и какой оверхед?

Через нужно определять плюсовые функции через extern "C", в остальном бесплатно.
Аноним 30/11/19 Суб 02:17:52 1533413444
захотел я функциональщины, почитал хачкель, симпатично но слишком академично, ерланг нахер, решил потрогать ваш руст, я сильно от него охуею как ссаный скриптер
Аноним 30/11/19 Суб 03:09:54 1533428445
>>1533413
> я сильно от него охуею как ссаный скриптер
в каком плане?
Аноним 30/11/19 Суб 11:31:01 1533522446
>>1533428
в плане непохожести на всякие пихоны, скрипучих жаб и тд
Аноним 30/11/19 Суб 12:07:10 1533541447
>>1533522
Ты вообще нормальный ЯП хоть раз видел?
Аноним 30/11/19 Суб 12:12:44 1533544448
>>1533541
Начнём с того, что нормального системного ЯП до раста не было. Ассемблер, С, кресты — всё это писалось не для людей, совсем не для людей. И раст, будучи системным императивным языком, действительно сильно отличается от крестов. А функциональщине детей не учат, почему-то.
Аноним 30/11/19 Суб 12:45:05 1533586449
>>1533544
> почему-то
Потому что он медленный?
Аноним 30/11/19 Суб 13:22:14 1533635450
>>1533586
Легионерам тоже сразу давали стальные мечи, вместо того чтобы сперва отпиздить рекрутов деревянными?
Аноним 30/11/19 Суб 13:23:31 1533636451
>>1533413
Попробуй лучше OCaml.
Аноним 30/11/19 Суб 13:32:07 1533644452
Аноним 30/11/19 Суб 19:34:25 1533961453
Аноним 01/12/19 Вск 11:08:30 1534320454
Аноны, никак не могу въехать в
https://doc.rust-lang.org/std/pin/

какое минимально шаманство нужно, чтобы припиннить структуру? Только в Box::pin, иначе никак? Гемор какой-то. А почему просто добавление поля
_pin: PhantomPinned
не спасает?
Аноним 01/12/19 Вск 11:59:43 1534389455
>>1533413
Есть несколько семейств языков на выбор. В порядке возрастания сложности: Лиспы (Racket или другие диалекты Scheme, Clojure, Common Lisp, etc), ML-семейство (Standard ML, OCaml, F#, Haskell, etc), ну и Erlang/Elixir.

Мой топ это: Диалекты Scheme, Clojure, Standard ML, F#, и в последнюю очередь Elixir.
Аноним 01/12/19 Вск 12:31:47 1534460456
image.png (34Кб, 1217x262)
1217x262
image.png (30Кб, 920x147)
920x147
>>1534320
А нахуя тебе пин без самого пина? Ну, то есть, можно тупо сунуть фантом пин в структуру, но в чём смысл?
Аноним 01/12/19 Вск 12:33:56 1534463457
>>1534320
Ты по своей ссылке читал хоть что написано, пидоRUST?
Аноним 01/12/19 Вск 13:33:49 1534568458
>>1534389
Лисп лютое байтоебство
Аноним 01/12/19 Вск 13:42:02 1534576459
>>1534568
>Лисп лютое байтоебство
Чиво? Лисп самый высокоуровневый язык за всю историю. Думать надо прежде чем писать.
Аноним 01/12/19 Вск 17:32:00 1534913460
Может есть какой-нибудь гайд для ретардов по рустовому ресту?
Аноним 01/12/19 Вск 17:49:25 1534925461
>>1534913
Rustonomicon, The Book, Rust by example, Reference; а также Rustc book, Cargo book, Embedded book, Rustdoc book и Unstable book идут в документах к стейбл расту. Я не знаю, что ты ещё хочешь. Путь вроде такого:
Rust\.rustup\toolchains\stable-x86_64-pc-windows-gnu\share\doc\rust\html
Аноним 02/12/19 Пнд 07:20:42 1535551462
>>1463625
>Например, использует системные потоки.
Питон тоже. import threading
Аноним 02/12/19 Пнд 10:04:29 1535600463
Уже пишут бекенды на расте? Кто-нибудь из анонов писал? Хочу наконец перекатиться с го на серьезный язык, имею вес в конторе и могу протолкнуть интересные мне технологии в новые проекты.
Аноним 02/12/19 Пнд 11:24:21 1535682464
>>1535600
Я пишу. Вебня на rocket, и симуляции на amethyst.
Еще пробовал seed-rs. Очень неплохо, но для фронта, конечно, пока что мало батареек.
Аноним 02/12/19 Пнд 14:42:07 1535887465
>>1535600
думаю тебе стоит подождать месяцок или два и закатиться на actix (можно щас, но там асинк/авейт не робит нормально, и еще нет асинхронных запросов к дб).

рокет даже не пробуй, не асинка, не нормальных ответов, нихуя - сырое говно уровня шаблонайзера
Аноним 02/12/19 Пнд 14:46:22 1535889466
>>1535887
а вообще, довольно приятная вещь(актикс), можно актеры прямо в приложение пихать без всякой кронопараши и прочих нигройдных лайфхаков, скорость по сравнению со скриптами нереально быстрая, в хайлоаде тоже чувствует себя прилично
Аноним 02/12/19 Пнд 15:58:37 1535959467
>>1535887
>Не пиши код, подожди, пока нейронки не научатся писать его за тебя, тогда норм будет вкатываться.
Аноним 02/12/19 Пнд 22:21:48 1536215468
>>1535887
Ты писал что-то сложнее туду на актиксе? Ебля та еще.
Аноним 03/12/19 Втр 00:05:05 1536281469
>>1536215
ес, картинкодоску пишу
Аноним 03/12/19 Втр 00:30:47 1536293470
>>1536281
>сложнее туду
>картинкодоск
>пишу
Аноним 03/12/19 Втр 01:43:23 1536304471
>>1536293
а ты загружай 25 10 500 постов + 25 10 500 * 8 атачментов в кэш каждые 30 секунд по запрочу юзера, слегка так ахуеешь (естесна это все в 2, ну максимум 3 запроса с последующей сортировкой на твоем япе)
Аноним 03/12/19 Втр 03:29:06 1536325472
>>1536304
У тебя в базу всё упрется, а не в раст.
Аноним 03/12/19 Втр 05:02:08 1536334473
>>1536325
ответы ты как сортировать к тредам будешь?
Аноним 03/12/19 Втр 10:53:18 1536398474
>>1536334
Про "ORDER BY" не слышал?
пхписта в тебе прозреваю я.
Аноним 03/12/19 Втр 11:11:53 1536408475
>>1536398
>order by
оно и так лол, это говно все равно нужно заполнять в ебанный вектор в векторе ну ты понел

Vec<Thread, Post, Vec<Post>>
Конечно на других япах это тоже можно, но на всяких пыхах и прочему эти действия займут куда больше времени I think и да, я знаю что другие япы умеют в with_capacity
Аноним 03/12/19 Втр 11:53:15 1536424476
>>1536408
BTreeMap(Set) сразу используй, если тебе надо часто вставлять в середину или пересортировывать. Если только один раз надо отсортировать, то лучше собрать и отсортировать вектор, разумеется. И если ты хочешь туда-сюда ссылки на посты разбрасывать, то лучше делать это через id поста, а не объекты хранить. Что-то вроде такого:
use u128 as PostId;
struct Post {
id: PostId
answers: Vec<PostId>,
data: Box<TextAndImages>,
}

Хотя может быть, эффективнее было бы хранить idшники в качестве ассоциативных указателей:
let thread = HashMap<PostId, Post>
struct Post {
answers: Vec<PostId>,
data: Box<TextAndImages>,
}
Аноним 03/12/19 Втр 13:33:39 1536482477
>>1536408
Да ты пили, пили, оно полезно.
Но вообще, почему в вебе взлетело скриптоговно - как раз потому, что вся работа для кода там, это гонять данные из/в БД. Если код и тормозит, то обычно в тех случаях, когда мудила-прогер не осилил SQL и сперва выгребает всё содержимое БД, а уж потом скриптом делает выборку.
Аноним 03/12/19 Втр 14:21:56 1536512478
>>1536424
Я так и делал, до того момента, пока не не понадобилось индексировать борды по шорт кеям, перешел на костыль (внешняя либа) multimap, увы оптимизация в минус сразу ушла, да, кто то скажет мол у тебя шорт может внутри лежать (НО оно сука лежит мутексе, по этому увы все так), может есть btreemultimap?
>>1536482
> сперва выгребает всё содержимое БД, а уж потом скриптом делает выборку.
так и храню кэш хули
Аноним 03/12/19 Втр 14:32:02 1536522479
15723772708140.png (348Кб, 512x512)
512x512
Макаки наплыли, тред замейнтримился
Уже не чувствую таким тупым люблю вас всех
Аноним 03/12/19 Втр 14:48:39 1536561480
>>1476369

Ох какое мы ленивое нежное говно.

Чтобы оставаться на плаву и продолжать получать 5000кк в секунду нужно в месяц как минимум на два доклада материала по новым технологиям изучать (и понимать с первого же взгляда), потому что уже как минимум каждые полгода появляется новая актуальная технология, или подход прием к этой же.
Аноним 03/12/19 Втр 14:51:22 1536563481
>>1476535

Кто провалился, ты провалился, епта.

Хайпецкий на рынке труда нефиговый, сейчас весь хайлоад, где не хватает усатых усачей - обоСсанов/крестовиков в оргазме от раста, трейдинг, криптобиржи, криптовалюты, высокочастотный й трейдинг, бабки, бабки, бабки, вот это всё.
Аноним 03/12/19 Втр 16:09:19 1536688482
>>1536512
>индексировать борды по шорт кеям
Что, это значит? Что такое "шорт кей" и зачем тебе индексировать борды по его значению?
Я бы просто продолжал пихать айдишники:

use String as BoardName;
let all_boards: HashMap<BoardName, ImageBoard>;
use String as SectionName;
struct ImageBoard {
sections: Hashmap<SectionName, Section>,
};
use u32 as ThreadId;
struct Section {
banners_adverts_and_everything: DiscBox<Data>,
thread_id_pool: bit_set::BitSet,
// Если раздел без тредов, вроде главной или пасскодной, то None.
threads: Option<nohash_hasher::IntMap<ThreadId, Thread>>,
}
use u32 as PostId;
struct Thread {
posts: nohash_hasher::IntMap<PostId, Post>;
}
struct Post {
answers: Vec<PostId>,
data: DiscBox<TextAndImages>,
}
enum DiscBox<T> {
NotDownloaded { data_url: String },
Cached(Box<T>),
OnDisc { path: String },
}

Строки часто можно сильно сократить по объёму, потому что многие части повторяются, и их можно просто матчить и format! по типу:

let first = match x {
0 => (),
2 => "2ch.hk/",
};
let second = match y {
0 => (),
1 => "pr/",
2 => "b/",
};
return format!("{}{}", first, second)

А, например, номер треда из url двача можно превратить в число и хранить в u32 (u64, u128, BigInt, лол), но так сразу я не напишу сокращалку.
Аноним 03/12/19 Втр 16:41:09 1536736483
>>1536512
>так и храню кэш хули
Охх, попробуй подтюнить БД сервер, сириусли, не изобретай велосипед.
Я кады на хостинге работал, помню решал клиентам проблемы тупым увеличением кешей в my.cnf в 10-100 раз. Потом заебался и сделал автотюнинг на основе тарифа при развёртывании шаблона.
Аноним 03/12/19 Втр 20:06:01 1536966484
>>1536563
Весь этот хайлоад отлично работает на го/скале/эликсире/кложе.
Аноним 03/12/19 Втр 20:06:43 1536969485
>>1536966
Ну да, всего лишь в пару раз медленнее.
Аноним 03/12/19 Втр 22:19:19 1537108486
>>1536969
Ну и каким образом бистро работающий код ускорит твой хуйлод?

Ты вообще понимаешь какие там вообще проблемы и как они решаются? В 95% случаев перформанс упирается в доступ в базу/хранилище и в запросы к другим сервисам, в остальных случаях в эзернет. От того что твой код быстрее байтики переставляет толком ничего не изменится.
Аноним 03/12/19 Втр 23:15:39 1537150487
>>1537108
Так, блять. Это не тред анекдотов, ты ошибся.
Аноним 04/12/19 Срд 00:51:56 1537252488
>>1536969
Что, простите? Ну да, у го будет латенси 1.2 мс, а у раста 1.17? Раскрой свой ответ поподробнее плз.
Аноним 04/12/19 Срд 01:41:54 1537276489
1575412887007.png (86Кб, 1556x924)
1556x924
>>1537252
ГОвно даже хуже жвм.
Аноним 04/12/19 Срд 01:49:51 1537277490
>>1537276
Ты только что сам подтвердил
> у го будет латенси 1.2 мс, а у раста 1.17
Аноним 04/12/19 Срд 01:51:04 1537278491
>>1537276
бля 25 лет уже прошло, а жабаговно так и не выдавили из ИНДУСтрии... и оно еще смеет шевелиться там, результаты какие-то показывать. ХРРРРТЬФУ
Аноним 04/12/19 Срд 02:32:43 1537289492
>>1537108
а у тебя кэш тоже в базе данных хранится или костылируешь его в редисе?
Аноним 04/12/19 Срд 03:06:40 1537297493
Nurgle.jpg (239Кб, 500x657)
500x657
>>1537278
на жабе весь бизнес стоит, даже если внезапно закрыть все текущие разработки работы по одному поддержанию хватит на десяток лет вперед
жаба это такой здоровенный монстр а остальные языки карланы по сравнению, опять же котлины, спринги и тд, жаба по факту перерождается в них в новой обертке
Аноним 04/12/19 Срд 08:51:34 1537324494
>>1537277
Ну если четверть для тебя мало, то хуй знает.
Аноним 04/12/19 Срд 09:25:21 1537329495
>>1537289
Redis не подошёл по ряду причин.
Юзаем CouchBase.
Аноним 04/12/19 Срд 11:30:40 1537375496
Аноним 04/12/19 Срд 15:48:24 1537518497
>>1537276
>ГОвно даже хуже жвм.
Fasthttp не хуже JVM.
Аноним 04/12/19 Срд 16:08:50 1537540498
>>1537276
А ну-ка пруфы в студию. И я тебе в ответ не один такой же маняграфик скину, где го выше жявы.
Аноним 04/12/19 Срд 17:14:15 1537586499
>>1537540
много видел тестов го всегда ниже был
мимо
Аноним 04/12/19 Срд 17:17:30 1537589500
Аноним 04/12/19 Срд 18:14:32 1537621501
Аноним 04/12/19 Срд 21:31:39 1537736502
L9Wg06VuZm9UU6s[...].png (457Кб, 640x456)
640x456
Аноним 05/12/19 Чтв 00:25:29 1537851503
>>1537736
Option::<&str>::None к примеру, ну или любой другой тип, у которого есть типаж AsRef<Path>
перекат Аноним 05/12/19 Чтв 00:25:58 1537853504
будет?
Аноним 05/12/19 Чтв 02:56:52 1537902505
>>1537586
Ниже жявы? Ну-ну, пруфов-то конечно же не будет.
Аноним 05/12/19 Чтв 03:15:45 1537905506
c.jpg (90Кб, 1080x584)
1080x584
>>1537589
>>1537621
Какая же наглая брехня в стиле медиа-манипуляторов. На JS в uWS написан только интерфейс. Так что нода не быстрее го. А вот C и C++ быстрее го, согласен.
Однопоточный эвентлуп типа JS может быть близким по скорости к языкам типа го только в некоторых ситуациях. В задачах с concurrency го показывает себя отлично и явно лучше него по скорости наверное только раст и кресты. Остальные либо примерно схожи (clojure, scala, erlang, про языки типа шарпа и джавы не в курсе), либо вообще не могут конкурировать, как JS.
Аноним 05/12/19 Чтв 03:26:11 1537906507
>>1537905
>На JS в uWS написан только интерфейс.
На C/C++ написан только ввод/вывод. На минуточку, нода тоже написана на C++. И в нее можно встраивать аддоны на C++.

>Однопоточный эвентлуп типа JS может быть близким по скорости к языкам типа го только в некоторых ситуациях.
OCaml в один поток может уделать Go. И в ноде уже есть многопоточность.

>В задачах с concurrency го показывает себя отлично и явно лучше него по скорости наверное только раст и кресты.
Не только. .NET Core не хуже как минимум, он сейчас обходит Джаву, и развитие продолжается. А вот в Go оптимизировать думаю уже некуда. Про Erlang думаю и говорить не нужно, у него лучшая конкурентность из коробки. И еще можно насчитать пяток платформ, если не больше.

>либо вообще не могут конкурировать, как JS
Это ложь, что уже доказали. И это только начало. V8 быстрее Go, нужно только правильно использовать этот движок. Нода написана не очень с точки зрения производительности. Вот чувак запилил легковесное IO, и результат впечатляющий. кстати он писал что-то и для Go, вроде либу для сериализации, которая в 10 раз быстрее чем стандартная.
Аноним 05/12/19 Чтв 03:28:26 1537907508
>>1537905
>Остальные либо примерно схожи
MLton в некоторых случаях (большая кодовая база) уделывает C/C++. Вот и еще одна платформа.
Аноним 05/12/19 Чтв 11:45:17 1538039509
Аноним 05/12/19 Чтв 19:02:43 1538442510
>>1537906
>в ноде уже есть многопоточность.
О чём ты говоришь? Нет там многопоточности. Ты про кластеры? Это совсем не многопоточность.
>Не только. .NET Core не хуже как минимум, он сейчас обходит Джаву, и развитие продолжается. А вот в Go оптимизировать думаю уже некуда. Про Erlang думаю и говорить не нужно, у него лучшая конкурентность из коробки. И еще можно насчитать пяток платформ, если не больше.
Про erlang я упомянул. И не сказал бы, что он явно лучше. Дотнет по бенчмаркам на уровне.
>Это ложь, что уже доказали. И это только начало. V8 быстрее Go
Сорян, но это толсто. Где доказали? Этот пруф с uWS не пруф. Ты сможешь наспавнить в V8 миллион lightweight threads, у каждого из которых размер стека начинается с 2 килобайт? Нет.
Аноним 05/12/19 Чтв 20:14:04 1538481511
>>1538442
>Нет там многопоточности.
Уже есть. https://tproger.ru/translations/guide-to-threads-in-node-js/

>Этот пруф с uWS не пруф.
У тебя подгорает от того, что оказывается Нода может быть по производительности не хуже, а иногда и лучше Go. Главная фишка не в Ноде, ее можно вообще выбросить, и написать другую обвязку. Райан Даль кстати недавно анонсировал новую Ноду, - Дино, которую сделал очень похожей на Го. Не знаю как там по тестам, думаю она быстрее Ноды.

Главная фишка производительности JS это V8. Нода это только iO. Так вот Нода написана не очень, поэтому выступает бутылочным горлышком. Если ее переписать нормально, то производительность будет отличная. Чувак взял и написал свою обвязку, в чем проблема? Все равно всю работу делает V8, а код пишется на JS. Если затюнить движок, убрать все лишнее, то JS может работать быстрее чем C++.

>Ты сможешь наспавнить в V8 миллион lightweight threads, у каждого из которых размер стека начинается с 2 килобайт? Нет.
И че, это для JS вообще не нужно. js и в один поток может быть на уровне. А теперь есть и многопоточность.

Сколько миллионов тредов ты сможешь сделать на Го? Эрланг может на одной ноде создать более 100 миллионов изолированных процессов! Го такое не под силу.
Аноним 05/12/19 Чтв 21:32:44 1538567512
image.jpg (27Кб, 291x291)
291x291
Блять что за uWS?
Только начал переписывать свое говно с инвалидной сокетио на руст а тут уже даже жс бинды на этой куйне обгоняют

Мейнстрим бэк либа для Restа все-таки Rocket?
Погуглил всякие Tide-ы но они какие-то сомнительные и в мейнтенерах соевые активисты
Аноним 06/12/19 Птн 02:57:13 1538833513
>>1538481
> Уже есть. https://tproger.ru/translations/guide-to-threads-in-node-js/
> Сравнивает воркер с горутинами / акторами
Твой уровень понимания ясен.
> У тебя подгорает от того, что оказывается Нода может быть по производительности не хуже, а иногда и лучше Go
Не подгорает, ведь нода не быстрее го.
>JS может работать быстрее чем C++
Сделал мой день.
> И че, это для JS вообще не нужно
Ну да, когда не можешь что-то сделать, скажи что тебе это не нужно.
> Сколько миллионов тредов ты сможешь сделать на Го? Эрланг может на одной ноде создать более 100 миллионов изолированных процессов! Го такое не под силу.
На одном и том же железе примерно одинаковое количество, может совсем немного больше. При этом эрланг/эликсир нагрузит cpu в пару раз сильнее и задержка будет выше. Но я не говорю, что эрланг/эликсир абсолютно хуже. Я любитель и эликсира, и го, и раста.

Ты можешь продолжать копротивляеться, но это не поменяет следующего факта: то, что делает uWS такими быстрым, написано на C++. И в будущем скорее всего будет подобная реализация на расте. Если честно, я даже не совсем понимаю, зачем ты так копротивляеться за жс. Разве что потроллировать.
Аноним 06/12/19 Птн 04:11:11 1538843514
где перекат?
Аноним 06/12/19 Птн 04:13:20 1538844515
>>1538833
>Не подгорает, ведь нода не быстрее го.
>Сделал мой день.
https://blog.mozilla.org/javascript/2013/08/01/staring-at-the-sun-dalvik-vs-spidermonkey/
http://ffp4g1ylyit3jdyti1hqcvtb-wpengine.netdna-ssl.com/javascript/files/2013/08/Dalvik-vs-ASM-vs-Native-vs-JS.png

Там в конце есть ссылка на эту картинку, кинул на случай если не заметишь. В трех задачах из семи JS быстрее C++, в одной на таком же уровне.
Аноним 06/12/19 Птн 04:28:45 1538846516
>>1538833
>Ну да, когда не можешь что-то сделать, скажи что тебе это не нужно.
>Твой уровень понимания ясен.
>Сравнивает горутины с евентлупом
Твой уровень ясен. В JS не нужны потоки, потому что есть эффективный евентлуп. И акторы как раз можно сравнивать с горутинами, потому что это два вида конкурентности.

>На одном и том же железе примерно одинаковое количество, может совсем немного больше.
Кого ты лечишь?! В Go 100 миллионов горутин на одной машине не создашь, если и создашь будет дикий оверхед. В Эрланге это возможно.

>Ты можешь продолжать копротивляеться, но это не поменяет следующего факта: то, что делает uWS такими быстрым, написано на C++.
И? Это не меняет того факта, что C++ компилируется в машинный код. Можно написать движок JS без C++ не менее, а может и более эффективно. MLton написан на самом себе (Standard ML), и как я уже говорил, для сложных задач бывает быстрее C/C++, как и OCaml.
Аноним 06/12/19 Птн 07:30:30 1538870517
2019-12-06064349.png (28Кб, 1197x459)
1197x459
2019-12-06064616.png (81Кб, 1193x1257)
1193x1257
2019-12-06070758.png (5Кб, 447x201)
447x201
>>1538844
Там сам автор говорит, что
>SunSpider-specific optimizations, ironically, make SunSpider a poor benchmark for talking about plain Javascript performance.
Так что зелёную полосу на графике можно не принимать во внимание. Asm.js тоже далёк от 99% js-кода.

>>1538846
>акторы как раз можно сравнивать с горутинами, потому что это два вида конкурентности
А я что, говорил обратное? Я говорил, что нельзя сравнивать воркер треды с горутинами либо с акторами, а ты этим как раз и занимаешься.

>В JS не нужны потоки, потому что есть эффективный евентлуп
Завязывай толстить глупостью.

>Кого ты лечишь?! В Go 100 миллионов горутин на одной машине не создашь, если и создашь будет дикий оверхед. В Эрланге это возможно.
Тебя, болезного. Ок, не на "немного больше", как я сказал, но и далеко-далеко не колоссальная разница. Вот исследование. На одной машине запускали Scala/Akka, Go и Erlang. http://eprints.bournemouth.ac.uk/30239/1/sac-18.pdf
>Scala/Akka can support the largest number of processes: ∼11M
У erlang 9, у го 3. Только это нереалистичный кейс и скейлить по другим машинам можно всех троих. Ну и когда потребуется совсем много, реально 100 миллионов, как ты сказал, возьмут скорее всего erlang/elixir, поскольку для такого он и был создан. Но и ресурсов ему понадобится весьма много. Тестилось ещё время спавна, на реальных 100к тредах го быстрее других спавнит, да и в остальных тестах он хорошо себя показывает. Ну и в самом важном и тесте го показал себя прекрасно, второй пик. Как раз основная задача - передача сообщений.

В этом бенчмарке https://stressgrid.com/blog/benchmarking_go_vs_node_vs_elixir/ го нигде не показал себя хуже эликсира, а в одном из тестов эликсир показал себя хуже (сожрал весь cpu). Ну и нода знатно соснула у обоих.

Тут у ноды хорошо только с потреблением памяти, лол https://hashrocket.com/blog/posts/websocket-shootout

Тут разница в латенси серьёзная (3 пик) https://hackernoon.com/aws-lambda-go-vs-node-js-performance-benchmark-1c8898341982

Тут нода быстрее только в тех самых бинарных деревьях, как по ссылке первого анона https://benchmarksgame-team.pages.debian.net/benchmarksgame/fastest/go-node.html

Здесь (один из самых популярных бенчмарков) го гораздно ближе к топу https://www.techempower.com/benchmarks/
У го в районе 300к рпс, у ноды 100к.

Есть и другие, но и так хватит.

Я вообще не фанат бенчмарков, потому что бессмысленно сравнивать огрызок (ноду) с языками с реальным конкарренси. Просто там, где требуется реальный хайлоад конкарренси, ноду ни один нормальный инженер не возьмёт. Он возьмёт го/эликсир/скалу/жяву/шарп/кложу. Или кресты, если совсем лютый хайлоад. Да и в вычисления го так себе умеет, эликсир совсем хуёво, тут только кресты/раст.

>И? Это не меняет...
Это значит, что противопоставляя uWS и го, ты сравниваешь кресты и го, а не жс и го.
Аноним 06/12/19 Птн 10:33:28 1538936518
>>1538870
>кресты, ко-ко-ко, нода, ко-ко-ко, Goвно, ко-ко-ко
Вот это тебя подорвало. V8 все равно эффективней, как ты там не рви задницу. Даже в один поток может уделать Goвно. Если убрать всю шелуху, вроде самой Ноды и остального, и сравнивать перформанс рантайма, то V8 может уделать всех, что и подтверждают тесты. Там дофига оптимизаций, и есть JIT, поэтому он может быть быстрее нативного кода, особенно на больших кодовых базах. Ноду к твоему сведению, используют в очень нагруженных проектах, в США, Европе, Азии. Даже с учетом оверхеда самой Ноды против чистой виртуальной машины.
Аноним 06/12/19 Птн 10:34:59 1538940519
>>1538870
Зачем ты в треде Rust обсуждаешь скриптопарашу? Репорт.
Аноним 06/12/19 Птн 11:15:36 1538969520
>>1538940
Scala, Go, Elixir - скриптопараша? Ну я под спойлер всё спрячу, если тебе неприятно.

>>1538936

>V8 все равно эффективней
В чём? В конкарренси - нет, как ты там не рви задницу.
>Даже в один поток может уделать Goвно
Пруфов не будет, конечно.
>V8 может уделать всех
Толсто.

Что-нибудь сможешь сказать по делу, кроме очередных мантр в стиле "ряяя, у тебя баттхёрт"?
Аноним 06/12/19 Птн 19:31:02 1539531521
Аноним 10/12/19 Втр 03:09:13 1542499522
>>1490326
Standard ML использует gc, а в расте его нет
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов