М.Двач / Программирование

Этого треда уже нет.
Это копия, сохраненная 18 ноября 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

Rust #8 /rust/ 19 авг, 19:30 1456440 В конец треда | Веб

242 Кб, 1200x859648 Кб, 1200x9912,4 Мб, webm,
1920x1056, 0:12

Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.

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

https://www.rust-lang.org

Продолжение шапки: https://gist.github.com/TatriX/183c816f1346d418f969c4576c2b9b41

Ответы474226476334484259489749495426510966

133 Кб, 720x1280
2 21 авг, 16:12 2 1457681

It's happening!

Ответы457701

3 21 авг, 16:30 3 1457701

>>1457681
и как скоро асинк запилят? левые крейты заебали, пердолинг с потоками тоже

Ответы457707

4 21 авг, 16:36 4 1457707

>>1457701
1.39 стейбл выходит 5 ноября по их словам. Но можно на найтли уже потыкать

5 21 авг, 18:38 5 1457814

Кстати, по ощущениям компилятор стал намного шустрее.

6 29 авг, 20:46 6 1463413

Тут говорят, что rust для системщины. А что лично вы на нём написали для системщины, или хотя бы собираетесь писать?

Ответы463625465045

7 29 авг, 21:07 7 1463441

Нахуя вам джва треда

Ответы463514

8 29 авг, 22:08 8 1463514

>>1463441
№8 только один, это №7 два

Ответы463523

9 29 авг, 22:24 9 1463523

>>1463514
седьмой ушёл в бамплимит
https://web.archive.org/web/20190801205410/https://2ch.hk/pr/res/1369496.html

10 30 авг, 08:01 10 1463625

>>1463413
>rust для системщины
системный, не значит для. Значит, что он наиболее близок к ос и железу. Например, использует системные потоки.

Ответы463787

11 30 авг, 13:37 11 1463787

>>1463625
На Си тоже можно писать не только системщину, но мы же понимаем, что для прикладного ПО лучше всего подходят языки со сборщиком мусора.

Ответы463850

12 30 авг, 14:39 12 1463850

>>1463787
>мы же понимаем
Вы - это кто? Да и чего уж там - сразу один жабаскрипт для всего прикладного.

13 30 авг, 15:49 13 1463915

Оказывается, для винды до сих пор нет драйвера F2FS. Было бы круто, если б кто-нибудь на расте драйвер запилил. С железом для разработки проблем не будет, так как флешки есть у всех. Линуксоиды тоже заинтересованы, ибо приходится давать флешки виндузятникам.

14 30 авг, 17:23 14 1463989

Растишки, а есть какие-нибудь best practices и советв, как перестать воевать с borrow checker'ом и начать жить? Очень часто приходится некоторые места у себя переписывать из-за ссылок и лайфтаймов. Большое всего бесит наверное про несколько мутабельных заимствований или про получение ссылки на элемент структуры и вызов с &mut self с этой ссылкой а качестве параметра .

Ответы464021464071465110465355

15 Кб, 300x300
15 30 авг, 17:41 15 1464021

>>1463989
>как перестать воевать с borrow checker'ом и начать жить
C++

16 30 авг, 18:26 16 1464071

>>1463989
Либо смотри в сторону другой архитектуры, типа ECS, либо смотри в сторону более функционального подхода, либо юзай interior mutability, Rc, Cell, Arc, Mutex, вот это все.

Ответы465707

17 1 сен, 11:00 17 1465045

>>1463413
декодер, ресемплер

18 1 сен, 13:20 18 1465110

>>1463989
Нормальный язык возьми

19 1 сен, 18:45 19 1465355

>>1463989
Не используй ссылки, чтобы связывать между собой объекты. Заимствование - это строго для передачи аргументов в функции и для структур, которые живут сугубо на стеке. Для всего остального используй индексы в вектор или Rc. В особых случаях, когда ну прямо совсем-совсем критичен перформанс (перформанс с графовыми структурами, хех, мда), указатели.

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

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

Ответы465707

20 1 сен, 22:11 20 1465453

1

21 2 сен, 14:09 21 1465707

>>1464071
Вот со всеми этими боксами ещё больше геморроя. Матчить что-то в них , borrowck орет ещё больше. Хотя может опыта просто нет нормального, как писать все это дело.
>>1465355
> Есть причина, почему это не одна функция? Вытаскивать наружу кишки, а запихивать их же обратно - это как-то не по людски.
А я и в одну функцию делал. Один хрен, в нее запихнешь, а в ней появляется еще одно мутабельное заимствование. Единственный воркэраунд нашел для этой штуки - это оборачивать такие переменные в RefCell и пропихивать его куда надо, но как-то больно уродливо получается. Ну да и что выше написал к нему же относится .

Ответы473957

22 15 сен, 21:55 22 1473957

>>1465707
Аноны, кто-нить пробовал скрещивать раст и NDK? У меня такой проблем:
через MaybeUninit создаю пустую структуру
скармливаю NDK-шной функции
после assume_init с простыми полями структуры всё збс - данные читаются и вполне валидны, но вот при обращении к ссылочным полям выкидывает сегфолт.
То есть, то ли проблема при конвертации изначально сишного пойнтера в растовый, то ли при вызове что-то недоинициализировалось, то ли я заголовки криво сконвертил через bindgen, то ли ещё ебола какая.

Ответы474056

23 16 сен, 00:31 23 1474056

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

Ответы474177

24 16 сен, 11:31 24 1474177

>>1474056
Попробовал, не помогло. Короч, было так: структура, а у ней внутри анонимный union с указателями. bindgen сделал внешний тип union и вставил поле с ним в структуру. В итоге помогло тупо засунуть указатели из этого union в исходную структуру.

Вообще, чё-т дохуя накопилось уже правок в сгенеренном bindgen-ом заголовке, хоть в гит его добавляй

25 16 сен, 13:26 25 1474226

>>1456440 (OP)
Поясните фастом без особых подробностей о языке по хардкору.
Если заинтересует, хочу вкатиться. От С блевать уже тянет.
Что на нем можно писать? Системное по? Мобилку? Гуи? Веб?
Есть какие-то либы для облегчения жизни и менеджеры зависимостей?
Что там с платформозависимостью? Есть какие-то фатальные недостатки или жуткие изъебы языка?
Спасибо.
Мимо perl, С программист

Ответы474295

26 16 сен, 14:20 26 1474295

>>1474226
>Что на нем можно писать? Системное по? Мобилку? Гуи? Веб?

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

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

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

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

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

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

Если не считать изъебов с борроу-чекером и мов-семантикой, язык на порядок проще плюсов, да и, в каких-то отношениях, чего-то типа СиСярпа, особенно если не нужно трогать Ансейф. Замыкание - это просто структ с одной функцией, Фьючур - это просто конечный автомат, и т.п.

Ответы474321

27 16 сен, 14:32 27 1474321

>>1474295
Спасибо. Думаю, стоит потратить недельки 2-3 на вкатывание, а там посмотрим как зайдет.

28 16 сен, 15:24 28 1474373

растишки, дайте какой нить гайд по async/await
тока без сторонних крейтов по возможности

Ответы474453

29 16 сен, 17:40 29 1474453

>>1474373
Официальная книга https://rust-lang.github.io/async-book/

30 16 сен, 17:48 30 1474458

Актуальный перевод https://doc.rust-lang.ru/async-book/

31 16 сен, 19:12 31 1474513

Вот еще новичкам https://old.reddit.com/r/rust/comments/d28mt0/standard_async_tutorials_and_examples/
Особенно коммент D1plo1d доставляет.

72 Кб, 1526x293
32 16 сен, 21:02 32 1474562

поглядите, аноны, что я сотворил:

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

код выглядит валидно, конпеляется, а работает - пиздос.

Ответы474864474958

33 16 сен, 22:01 33 1474864

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

Ответы475065

34 16 сен, 23:53 34 1474958

>>1474562
Где-то читал про контейнеры раста (не помню где), что в таких случаях (до сотни элементов) выгодней всего использовать вектор https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fa287995b1bfdf41f29bcbcc90ed453b
и HashSet если больше.

35 17 сен, 10:15 35 1475065

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

Ответы475415

36 17 сен, 18:07 36 1475415

>>1475065
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=0119f580a10b1aff1f10bdcc46e2c8ef

Ответы475842

37 18 сен, 00:05 37 1475763

Есть еще match
https://play.rust-lang.org/?version=stable&mode=debug&
edition=2018&gist=f9103375a42eec79b0043584d35684b3

Ответы475766

38 18 сен, 00:15 38 1475766

>>1475763
Есть еще комбинаторы
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=08f5f3c872bc29dad3dd758d4d9a3ad8

39 18 сен, 07:59 39 1475842

>>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

Короче, я ни хуя не понимаю, если это не ошибка разрабов языка, то что. Багулю завести, что-ль..

Ответы475843

40 18 сен, 08:00 40 1475843

>>1475842
>результат будет другой
бля, туплю, результат будет тот же. Но вот вызывать замыкание в примере выше вообще не нужно было.

Ответы476123

41 18 сен, 15:39 41 1476123

>>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.

Ответы476216

42 18 сен, 17:47 42 1476216

>>1476123
И вот так, шаг за шагом, наступая на грабли на каждой строчке, я таки напишу свой хэллоуворлд. Впрочем, я утрирую, не всё так плохо, конечно.

Ответы476246476641

43 18 сен, 18:09 43 1476246

>>1476216
Вообще если у тебя проблемы с понимаем почему это так работает, тебе бы лучше SICP почитать.
unwrap_or это обычный метод, который на вход принимает значение. Поэтому параметр будет вычислен перед передачей. А раз у тебя там была паника, то она взорвет приложение.
Код вида foo.bar(panic!("pizda")) не вызет ведь вопросов?

Ответы476369

82 Кб, 268x265
44 18 сен, 20:02 44 1476334

>>1456440 (OP)
>3 webm
А как так сделать?
Хочу вкатиться в раст и зачекать язык в целом, искал идей для мини проекта. То, что на вебмке очень хочется повторить но с другим ресурсом ест-но.

Ответы480733

45 18 сен, 20:21 45 1476369

>>1476246
>SICP почитать
чтобы охуеть, выкатиться и не мешать серьёзным дядям шлёпать круды?

46 19 сен, 01:02 46 1476535

Почему это говно провалилось?

Ответы477394

47 19 сен, 10:22 47 1476641

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

48 20 сен, 08:33 48 1477394

>>1476535
слишком эзотерическое говно

49 24 сен, 15:26 49 1480733

>>1476334
Веб-клиент https://github.com/rustasync/surf и отображение https://github.com/fdehau/tui-rs

Ответы481215

12 Кб, 373x200
50 25 сен, 00:06 50 1481215

>>1480733
Спасибо тебе, анон.

51 26 сен, 08:20 51 1481947

Зачемпотерли пост про сжв плюсовичку?

52 26 сен, 08:48 52 1481951

Лол. Тест.

295 Кб, 2409x1314
53 26 сен, 08:48 53 1481952

К.

54 26 сен, 08:51 54 1481953

Ену

55 26 сен, 20:29 55 1482492

19 Кб, 722x11317 Кб, 587x127

Эх, аноны, какой же это пиздос.

Ответы483634

56 26 сен, 20:55 56 1482528

Аноны, как передавать растовые функции как сишные коллбэки? Если просто объявить функцию
extern "C" fn blabla () {}
и передать без задней мысли - сишный код это схавает? А то растовый-то конпеляется.

57 28 сен, 15:22 57 1483634

>>1482492
Ты уверен, что у тебя нет проблем с версией либы? Там из новых версий убрали GlobalRef::new(), может ещё какая-то херня с этой функцией была в разных версиях, до того как убрали.
Можно попробовать прописать полный путь: jni::objects::GlobalRef::new
Маловероятно, но вдруг это GlobalRef::new из какой-то другой либы?
А если нет, то пиздос, да.

Ответы483794

58 28 сен, 17:34 58 1483794

>>1483634
Да, я видел, что убрали, откатился на последнюю, для которой дока написана - а там это. Видимо, потому и убрали, что такая свистопляска. Ну да я пока кастанул типы через as , конпелируется, правда, я пока это даже не пробовал запускать на живом ведроиде - наверняка куча ошибок повылазит.
Ты тоже жабу с растом скрещиваешь?
И, если вдруг, тоже под ведроид?

Ответы483966

37 Кб, 1044x256
59 28 сен, 19:49 59 1483966

>>1483794
Лол, нет, просто стало интересно, почему такая хуета могла возникнуть, загуглил "GlobalRef::new rust", а мне выдало старую версию либы. Я посмотрел сорцы того, что мне выдало на
https://docs.rs/jni/0.5.3/jni/objects/struct.GlobalRef.html
Там вроде как не должно выпадать такой проблемы. Посмотрел ещё последнюю версию этой либы, но другие смотреть уже не полез, своих забот полно.

70 Кб, 640x570
60 29 сен, 06:29 60 1484259

>>1456440 (OP)
Привет, двач. Есть у кого на примете годный курс лекций по алгоритмам? Знаю, что библией алгоритмизации считается книга Кормэна(потом по нисходящей идут Дасгупта и Бхагарва, тоже знаю) и мне нравится её полнота, однако, формальный язык очень и очень отталкивает, не способствуя пониманию. Да и вообще, формат лекций мне как-то ближе, нежели просто чтение книги. В общем, какие требования? Полнота(речь не об N-полноте, лол) Кормэна в сочетании с интересным, не сухоформально рассказывающим преподом. А, да, и чтобы на русском(знаю, что охуел). Подскажите чего по сабжу?

61 1 окт, 04:38 61 1485894

Че, растаны, когда ATC завезут? А то как лохи без манаток сидите.

Ответы485977

62 1 окт, 09:57 62 1485977

>>1485894
https://ru.wikipedia.org/wiki/АТС
https://en.wikipedia.org/wiki/ATC
Ты про какой из этих ATC?

Ответы485988

63 1 окт, 10:40 63 1485988

>>1485977
Associated type constructors. Ну или Generic associated types, кому как нравится

Ответы486379

64 1 окт, 16:51 64 1486280

Аноны, поясните, как вы живете с tokio, блятб. Я заебался вкуривать, как мне данные считывать циклически и передавать их на обработку связанной структуре.
В asio я могу заюзать например async_read(...), пихнув в callback shared_ptr с контекстом и потом вызывать это чтение дальше до тех пор, пока не произойдет какой-нибудь пиздец.
Посмотрел в tokio, ебать в рот, какой-то хуй обсасывает пример как клиентом подключиться - с фьючерсом, естественно, но там какое-то блокирующее дерьмо по итогу выходит в работа в полудуплексе. Есть нормальное чтиво для понимания как это дерьмо разгребать, а то меня по-маленьку этот ваш Rust начинает вымораживать со своими "выебонами".

Ответы486383486425

65 1 окт, 18:14 65 1486363

Что конкретно не так?
https://tokio.rs/docs/getting-started/hello-world/
https://docs.rs/tokio/0.2.0-alpha.6/tokio/

66 1 окт, 18:30 66 1486379

>>1485988
>Generic associated types
https://github.com/rust-lang/rust/issues/44265
почитал RFC, но ни хуя не понял. В nightly уже есть, но с багами.

67 1 окт, 18:32 67 1486383

>>1486280
Бросай это говно для смузихлебов и иди в кретред.

Ответы486384

68 1 окт, 18:32 68 1486384

>>1486383
крестотред

69 1 окт, 19:13 69 1486425

>>1486280
Я не спец, но могу посоветовать https://github.com/tokio-rs/tokio#example
если тебе в этом примере ничего не понятно, значит ты какой-то тупой покури ещё мануалы/попиши хэллоуворлды.

70 5 окт, 17:42 70 1489468

Учусь в вузике, не могу решить что учить, раст или кресты. С одной стороны все говорят что раст много лучше, но с другой вакансий то нет.

Ответы489497489687489690490496

71 5 окт, 18:26 71 1489497

>>1489468
Кресты, конечно.

72 5 окт, 22:25 72 1489687

>>1489468
Двачую кресты. Сначала наступишь на все крестовые грабли, зато потом, перейдя на раст, не будешь ругаться на борроучекер.

Ответы489856

73 5 окт, 22:30 73 1489690

>>1489468

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

К расту вернёшься, когда износишь пятый свитер и отрастить бороду.

74 6 окт, 00:07 74 1489749

>>1456440 (OP)
Давно не интересовался этим перспективным языком. Скажите, нечитаемые неинтуитивные сообщения компилятора уже пофиксили?

Ответы489852

75 6 окт, 08:37 75 1489852

>>1489749
Какие именно? Было у меня одно https://github.com/rust-lang/rust/issues/52941 - пофиксили.

76 6 окт, 08:44 76 1489856

>>1489687
RAII

Ответы489858

77 6 окт, 08:52 77 1489858

>>1489856
И на эти тоже, ага.

Ответы489859

78 6 окт, 08:53 78 1489859

>>1489858
у зумера всегда язык виноват

Ответы489875

79 6 окт, 09:44 79 1489875

>>1489859
>язык виноват
Это вопрос для долгой дискуссии. Однако, могу назвать сходу 3 возражения:
1. Лучше учиться правильно управлять памятью на ошибках конпелятора, чем рантайма.
2. Ты не всегда можешь знать наверняка, что с твоими данными сделает сторонняя либа. Каждый раз лазить в исходники? Ну нафик. А раст тебе сразу скажет, что сторонний крейт хочет то и это, поэтому обеспечь, пжалста, вот это.
3. Я не зумер и всю жизнь избегал сей с плюсами ровно потому, что мне бы програмить, а не о подводных камнях думать. Раст тут думает за меня

Ответы490326

80 6 окт, 19:08 80 1490326

>>1489875
>Лучше учиться правильно управлять памятью на ошибках конпелятора, чем рантайма
Задумка годная и намерения благие, а как на деле? Вот например есть Standard ML с математически доказанной безопасностью. Почему мне стоит выбрать Rust а не его?

Ответы490337490459

81 6 окт, 19:13 81 1490337

>>1490326
Как минимум потому что crates.io

82 6 окт, 20:45 82 1490459

>>1490326
Это как гвидон vs руби. Как бы ни был второй прогрессивнее, но первый выбирают из-за батареек. Так и с растом - он уже взлетел, есть куча батареек и мануалов, отзывчивое коммьюнити, это вот всё. Даже если появится что-то в теории лучше, на практике все, кому нужна безопасная работа с памятью без сборки мусора - уже на расте.

83 6 окт, 21:02 83 1490496

>>1489468
Не стоит вопрос что учить. Язык учится в процессе разработки программы.
Стоит вопрос на чём эффективнее писать софт. Неверно принятое решение может потом дорого стоить.

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

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

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

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

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

Язык мне нравится, он уже не настолько маргинальный, как звезда хайпа прошлых лет - Haskell, выглядит практичным, продуманным и удобным.
На нём уже пишут какой-то софт, та же мозилла (хотя и про хаскель можно то же самое сказать, и на нём писали немало).
Но всё равно не хватает по-моему до того, чтобы выбрать раст для решения практической задачи.
Здесь ему немного не повезло - плюсы начали активно развиваться и реализовали многие вкусные фичи. Не было бы C++11 и последующих стандартов, тогда бы Rust конечно выглядел шикарно, а так единственное серьёзное преимущество это что язык изначально сдизайнен грамотно.

83 6 окт, 21:02 83 1490496

>>1489468
Не стоит вопрос что учить. Язык учится в процессе разработки программы.
Стоит вопрос на чём эффективнее писать софт. Неверно принятое решение может потом дорого стоить.

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

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

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

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

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

Язык мне нравится, он уже не настолько маргинальный, как звезда хайпа прошлых лет - Haskell, выглядит практичным, продуманным и удобным.
На нём уже пишут какой-то софт, та же мозилла (хотя и про хаскель можно то же самое сказать, и на нём писали немало).
Но всё равно не хватает по-моему до того, чтобы выбрать раст для решения практической задачи.
Здесь ему немного не повезло - плюсы начали активно развиваться и реализовали многие вкусные фичи. Не было бы C++11 и последующих стандартов, тогда бы Rust конечно выглядел шикарно, а так единственное серьёзное преимущество это что язык изначально сдизайнен грамотно.

Показать весь текст
Ответы490605

84 6 окт, 22:31 84 1490605

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

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

Ответы490638

85 6 окт, 23:07 85 1490638

>>1490605
>А ещё гугл, Cloudflare и пейсбук
Пробуют на единичных проектах, не более. Зачастую это просто инициатива конкретной команды/разработчика. Если полазить по гитхаб-организациям этих компаний, там и более редкие языки можно найти. Например, OCaml.
Активнее всего продвигает мозилла, оно и понятно, остальные пока не так активны. Просто осторожный интерес.

>уже подразумевает некую изолированность от внешних библиотек
По большей части да, но мало кто вообще никакой внешний код не импортирует. Обычно будет хотя бы несколько библиотек. Или по крайней мере скопипащенные в свой проект исходники на си/плюсах.

86 6 окт, 23:13 86 1490643

Ещё бы нормальный игровой движок на нем, гейрабы мигом распробовали бы.

Ответы492990

87 8 окт, 00:25 87 1491400

Rust не тони

Ответы491576

88 8 окт, 12:17 88 1491576

>>1491400
А почему нет? У нас есть SO, растофорум на английском и куча книжек по расту. Зачем нам ещё на дваче тредак?

Ответы491750491805

89 8 окт, 16:42 89 1491750

>>1491576
А вакансий нет...

Ответы491814

90 8 окт, 18:01 90 1491805

>>1491576
for teh lulz очевидно

91 8 окт, 18:25 91 1491814

>>1491750
На реддите была какая-то тема с вакансиями.

Ответы491817492864493148

92 8 окт, 18:29 92 1491817

>>1491814
Более того на реддите постоянно висит реклама от parity.io про вакансии на расте. В общем, было бы желание.

93 10 окт, 08:40 93 1492864

>>1491814
Мне бы вот в расеюшке. Переезжать не хочу, семья тут. А удаленка - это то ещё приключение. Зато на гошке вон даже в мухосранях вакансии есть. И мозгами шевелить не нужно , когда на ней что-то пишешь.

Ответы493149

94 10 окт, 11:39 94 1492990

>>1490643
Ой нахер. Я после своего опыта на sdl2, попытался переписать свою одну игрулю на растишку и только поел говна. Все слишком сложно, передавать туда сюда игровые объекты внезапно стало трудно. Я вроде с растом где-то уже год вожусь, а когда начинаются проблемы с борровком и лайфтаймами, то все, ласты клею. В плюсах все те же махинации обстоят гораздо проще. Так что лучше так же , как и раньше на них писать и не страдать ерундой, выбирая БизАпАснаТь.

Ответы493004

95 10 окт, 11:53 95 1493004

>>1492990
Есть же RefCell, эдакий "Мамой клянусь" - обёртывай в него, когда совсем туго.

Ответы493370

96 10 окт, 15:38 96 1493148

>>1491814
Нахуй твой soydit не нужен.

97 10 окт, 15:39 97 1493149

>>1492864
> Переезжать не хочу, семья тут.
Господи, какое же быдло.

Ответы493233

98 10 окт, 17:05 98 1493233

>>1493149
Будет круто, если после такого комментария ты пруфанёшь своё местоположение

мимо

Ответы493272

99 10 окт, 17:34 99 1493272

>>1493233
Мнение про "быдло" не разделяю, но сам переехал с семьей. Зависимость есть, брат жив.

Ответы493316

100 10 окт, 18:43 100 1493316

>>1493272
Куда переехал, как живется?

Ответы493554

101 10 окт, 20:00 101 1493370

>>1493004
И как жить потом со всеми Option<Rc<Refcell<..ещё какая-нибудь херня..>>>?

Ответы493411493554

102 10 окт, 20:36 102 1493411

>>1493370
Превозмогать. Можно и без Rc, и без RefCell, на одних лайфтаймах выехать - если грамотно структуру приложения и данных выстроить. А если ты в тупую сишный код переписываешь, ну дак так оно и будет.

103 10 окт, 23:15 103 1493554

>>1493316
В Норвегию. Збс живется.
>>1493370
Посмотри, например, на specs. Никаких Rc/RefCell.

Ответы493604494086

136 Кб, 400x388
104 11 окт, 00:58 104 1493604

>>1493554
такую хуйню тебе писал когда сходил с ума изза пездеца по жизне спасибо за все люблю тебя респект до гроба

105 11 окт, 13:05 105 1493830

Ну что, ржавожопые, работу нашли уже?

106 11 окт, 18:06 106 1494086

>>1493554
> specs
Знаю про эту штуку. Но я пытался свои плюсовые велосипеды переписать. Там у меня и компоненты сгруппированы в памяти. И индексы для них хорошие. Хотел чисто поглядеть, насколько похожа будет производительность. У спекса просто интересно бы ещё пробенчмаркать что-нибудь более-менее тяжёлое. Хотя оно наверное и не надо. Век уже не тот, чтобы игры оптимизировать

107 12 окт, 18:12 107 1494915

Анука анонцы, скажите, а что на нём пишите лично вы или собираетесь. Хоть один? Напоминает хаскелиную историю: всё можно, но на деле никто не будет

Ответы494954495131

108 12 окт, 18:48 108 1494954

>>1494915
Собираюсь контрибьютить в графический менеджер redox и потом портануть его на линупс, потому что даже в модном mutter-wayland память корраптится, аноны радуются артефактам на экране, баги не фиксятся годами, а самому пофиксить нереально из-за конченной культуры разработки free desktop

Ответы494972495025

109 12 окт, 19:11 109 1494972

>>1494954
начинай портировать, а там и законтрибьютишь

110 12 окт, 20:37 110 1495025

>>1494954
>портануть его на линупс
А тулкиты под него тоже сам портанёшь?

Ответы495397

111 12 окт, 23:10 111 1495131

>>1494915

> всё можно, но на деле никто не будет
Хз, уже второе место работы подряд, где пишу на расте. Первое - блокчейны, сейчас - решение, связанное с ИБ.

Ответы495336

112 13 окт, 07:26 112 1495336

>>1495131
>Первое - блокчейны
шта, Данила, не вышел каменный цветок?

Ответы495370

113 13 окт, 09:28 113 1495370

>>1495336
Ну как не вышло, заебали задачи + заебала удаленка. Ща в офисе сижу, заебись.

114 13 окт, 10:48 114 1495397

>>1495025
Ты про qt/gtk? Они умеют в wayland, так что достаточно его поддержать в orbital. А может уже кто-то чисто под wayland написал DM и композитор на расте. Тогда еще проще

Ответы495415

115 13 окт, 11:32 115 1495415

>>1495397
По "rust wayland" гуглится несколько проектов, насчёт WM не уверен, что есть что-то юзабельное. Как по мне, слишком масштабная задача, слишком много там внутри подводных камней, связанных с драйверами, тулкитами и прочим. Такое делать нужно сразу большой командой, имея кучу бабла, менеджмент, роадмапы и пиар.
Иначе будет очередной проект " Latest commit ab123cd 2 years ago".

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

Ответы495440

116 13 окт, 11:59 116 1495426

>>1456440 (OP)
Сап. Как создать указатель на:
SystemTime::now().duration_since(UNIX_EPOCH).ok().expect(...)
Тип справедливо выводится, как
Duration, а не fn() -> Duration
Можно сделать указатель на:
SystemTime::now().duration_since
Но тогда все ровно каждый раз придётся обрабатывать Result. Писать врапер?

Ответы495490496378496615

117 13 окт, 12:35 117 1495440

>>1495415
Мне нравится gnome 3 wayland в целом - шустро, красиво, относительно стабильно, так что цель - более стабильный mutter, можно даже кусочек от него. Но вообще ты прав, задача навскидку довольно большая. В любом случае как минимум получу реальный опыт rust-а

118 13 окт, 13:46 118 1495490

>>1495426
Че сделать-то хочешь? Залей пример на плейграунд.

119 14 окт, 13:33 119 1496378

>>1495426
Тебе замыкание нужно, что ли?
let func = || SystemTime::...;

https://doc.rust-lang.org/rust-by-example/fn/closures.html

120 14 окт, 19:20 120 1496615

>>1495426
https://aws.amazon.com/blogs/opensource/aws-sponsorship-of-the-rust-project/

121 20 окт, 12:41 121 1500526

Раст-пропаганда пробила очередное дно
https://tsar1997.blogspot.com/2019/10/blog-post_6.html

Ответы500539500559500865501196501746503486

50 Кб, 600x600
122 20 окт, 12:57 122 1500539

>>1500526

123 20 окт, 13:22 123 1500559

>>1500526
Высокохудожественный говно-анализ посредтвенного перевода. Детишки играют в испорченный телефон, ок.

124 20 окт, 18:15 124 1500865

>>1500526
Насколько ты готов слушать человека, который считает, что в Расте можно шарить между потоками только глобальные переменные?

sage 125 21 окт, 03:38 125 1501196

>>1500526
>tsar1997

126 21 окт, 19:34 126 1501746

>>1500526
"Если вас по телефону
Обозвали дураком
И не стали ждать ответа,
Бросив трубку на рычаг,
Наберите быстро номер
Из любых случайных цифр
И тому, кто снимет трубку,
Сообщите - сам дурак."

Долбоёбы были, есть и будут, тут ничего не поделаешь. Но нехуй тут всем доказывать, что ты тоже долбоёб. Окей, раст бесполезен, если ты уже пять десять пятнадцать лет хуяришь код на си или крестах. И что дальше? Проблему обезьян, которые хотят в скорость, но не могут в с(++), ака "я уже не чувствую ногу, дайте мне то, чем я не смогу в неё выстрелить", раст решил, а больше и не надо. Да, я ленивая мразь, которая хочет решать свои йоба-задачки без ебли и кучи UB, которые желательно все помнить. Но это мои йоба-задачки, хули ты тут вылез со своей пропагандой антипропаганды?

Ответы502002

127 22 окт, 08:21 127 1502002

>>1501746
>пропагандой антипропаганды?
эм, скорее антипропагандой пропаганды. Да и, кстати, в примере, который они обсасывают, ясно же сказано, что чувак, типа, вообще не программист. Берёт сишечку и наступает на все возможные грабли, но в рантайме. А потом берёт раст и снова наступает, но уже при сборке.

128 22 окт, 22:40 128 1502566

https://ru.wikipedia.org/wiki/WebAssembly

А я не верил, что раст все заменит.

129 24 окт, 00:05 129 1503486

>>1500526
Пиздец. Узколобый подумал, что обсирают его любимую сишечку, но основная мысль статьи на хабре была другая: хруст не даёт сделать хуйню. Дебил сагрился на побочку

244 Кб, 1920x1080
130 24 окт, 00:10 130 1503491

Ньюфаг в треде. Можно ли писать в подпроцесс и читать из него в цикле? Без использования сторонних крейтов.

Ответы503694503798

131 24 окт, 11:28 131 1503694

>>1503491
А чего у тебя сублайм не зарегистрирован? Пират чтоль??

132 24 окт, 14:23 132 1503798

>>1503491
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=b1f2c86b48ca7136891904d28097bb00

85 Кб, 1320x469
133 24 окт, 17:19 133 1503906

https://this-week-in-rust.org/blog/2019/10/22/this-week-in-rust-309/

134 24 окт, 17:53 134 1503929

Все смеются над вами, что у вас работы нет.
Вы похожи на христиан во времена римской империи, когда они были мелкой сектой.

Ответы503998

135 24 окт, 19:52 135 1503998

>>1503929
Звучит как комплимент.

sage 136 24 окт, 20:19 136 1504019

чад-трудоустроенный > маня-теоретик > борщехлеб > сикпист > говно > моча > RUSTист

Ответы504021504124

137 24 окт, 20:20 137 1504021

>>1504019
Мань, ну не бомби. И тебя тоже когда-нибудь возьмут.

138 24 окт, 21:31 138 1504086

Я хз как вы работу ищете, меня сраного дотнетчика-бекендера с опытом хуйлоада/дистрибутеда с облаками и видеонаблюдением за последние 2.5 года около 10 раз звали на вакухи писать сраные сетевые/стриминговые/игровые сервисы, где раст или желателен, или даже обязателен . Как раз 2.5 года назад я в резюмешке на хх/линкдине указал раст на микроконтроллерах в качестве хобби, в акке на гитхабе вообще пусто.

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

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

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

И да, не ищите растовакухи на хх. Линк и ангеллист - от туда меня в основном хантили, на индид говорят еще часто появляются, но я там не зареган. А лучше вообще ходить на митапчики типа @ruRust_msk , хоть узнаете, как докладчики работу нашли. Не забудьте напечатать себе визиток с крабиком лол

Ответы504213

139 24 окт, 22:07 139 1504124

>>1504019
Подтверждаю.
мимо сикпист-борщехлёб, трудоустроенный питономакакой

140 25 окт, 00:03 140 1504213

>>1504086
Кстати, я заметил что в раст пытаются перекатиться очень много дотнетчиков. С чем это может быть связано?

Алсо, сколько у тебя опыта работы?

Ответы504216504241

141 25 окт, 00:05 141 1504216

>>1504213
Вангую что это те дотнечики, который виндовые формы клепали.

Ответы504217

142 25 окт, 00:06 142 1504217

>>1504216
Просто я сам дотнетчик, пилю всякое веб-говно, и хочу перекатиться

Ответы504220504241

143 25 окт, 00:13 143 1504220

>>1504217
Перекатится во что и ради чего. Хочешь клепать веб говно на расте?

144 25 окт, 01:25 144 1504241

>>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'ми-числодробилками-хуйлоадом, или с текущим стеком вкатись в предметку, которую часто на расте пилят, типа сраного криптоблокчейна - будет гораздо легче найти работку на расте.

Ответы512578

145 26 окт, 21:41 145 1505563

Ребят, вопрос к знатокам. У меня возникла задача -- разработать виртуальную машину для основанных на System F и ее вариациях ЯП.
Для довольно узкой области, поэтому на всеобщность и очередного убийцу жабки/erlang/чего там еще не претендую. Раст мне понравился, потому что на нем можно без мозгоебли уровня крестов сделать то, что будет работать и работать будет быстро. К сожалению, скорее всего, буду реализовывать на си, потому что мне нужно часто вручную управлять памятью для реализации сборщика мусора да и вообще почти всего, что только возможно. Собственно, вопрос: целесообразно ли разрабатывать подобную систему на расте, если предполагается хитровыебанный алгоритм сборки мусора и если да, то как идиоматичнее обходиться с raw memory?

Ответы505595505648505989

146 26 окт, 22:09 146 1505595

>>1505563
https://doc.rust-lang.org/nomicon/

Ответы505633

147 26 окт, 22:35 147 1505633

>>1505595
О, благодарю. Тут все то, что мне нужно.

148 26 окт, 22:42 148 1505648

>>1505563
Мда, так все просто делалось, а я через какую-то жопу память выделял.

149 27 окт, 11:39 149 1505989

>>1505563
>Раст мне понравился, потому что на нем можно без мозгоебли уровня крестов сделать то, что будет работать и работать будет быстро.
В низкоуровневых штуках которые ты собираешься писать он выебет тебе мозги ещё сильнее, лол. Хотя бы для рантайма, просто возьми C и не выёбывайся — точно напишешь быстрее.

Ответы506013

150 27 окт, 12:24 150 1506006

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

Ответы506118

151 27 окт, 12:31 151 1506013

>>1505989
Ну вот я почитал книжку, которую мне вчера скинули, и понял, что у меня просто будет один огромный кусок unsafe-кода, так что проще на сях написать всю работу с потоками, исполнение байт-кода, jit-компиляцию, вот это все. И тогда закономерный вопрос -- а стоит ли тащить вторую технологию в стек?

Ответы506118

152 27 окт, 15:32 152 1506118

>>1506006
Насколько я тебя понял, ты описал стейтфул корутины.
Собственно, гуглится на раз два https://github.com/Xudong-Huang/may , и реализация подсматривается там же. Ну либо в той либе на ц, если интересно именно изобрести велосипед на расте.

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

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

Есть ли смысл брать раст — если хочешь сделать на скорость, то нет. Если ты собираешься делать какую-то низкоуровенную хуйню, у которой повышенные требования к безопасности (например, если она торчит в сеть, как браузер) — то да.

Ответы506120506240

153 27 окт, 15:33 153 1506120

>>1506118
>если хочешь сделать на скорость
Всмысле, набросать за пару недель.

154 27 окт, 16:52 154 1506240

>>1506118
Насколько я понял, то, что ты скинул (may) -- это все-таки инструмент для кооперативной, не преемптивной многозадачности.
Мне же интересно прерывать исполнение процесса извне, а не изнутри него.

155 28 окт, 10:43 155 1507226

Зачем существует ваш язык?

Ответы507235

156 28 окт, 10:57 156 1507235

>>1507226
Чтобы у тебя сгорел пукич.

Ответы507266

157 28 окт, 12:24 157 1507266

>>1507235
Я занимаюсь арбузным бизнесом. У меня вызывает нейтральную реакцию rust и все, что с ним связано.

Ответы507672

158 28 окт, 17:56 158 1507672

>>1507266
>ваш язык
>арбузным бизнесом
Щтёбы Ащущать прэкрасный вкюс твАего арбуза, дарагой!

Ответы507675

159 28 окт, 17:58 159 1507675

>>1507672
В прошлом я был Senior Java Developer'oм и я говорил нормально.

Ответы507705

160 28 окт, 18:31 160 1507705

>>1507675
Бля. Знаешь, что. Пруфани арбузом и глубокими познаниями жабы. Сам я тоже сорт-оф жабист, но без погонов.

Ответы507711

161 28 окт, 18:35 161 1507711

>>1507705
> пруфани арбузами
К счастью я еще не дошел до того, что выращиваю арбузы дома. Чем тебе пруфануть из хаты-то? Док-ты слать не хочу, ибо диванон.
> глубокими познаниями жабы
Ну, давай, нападай. Я периодически пилю свои проекты, так что не забыл почти.

Ответы507733

16 Кб, 700x437
162 28 окт, 18:58 162 1507733

>>1507711
Да что я тебе накидаю, всё же гуглится. Вот как у твоей нашей жавы с потокобезопасностью дела, какие преимущества перед плюсами? Вот расшарил ты, такой, List в кучу тредов и радуешься.

Ответы507751

163 28 окт, 19:26 163 1507751

>>1507733
> pic related
Было время и я думал, что арбузы можно на дому хорошо растить.
> потокобезопасность
Писать потокобезопасные приложения на джаве, конечно, можно.
Неблокирующих алгоритмов предостаточно (List, Stack и бол-во java.util.concurrent) и вполне можно потому и радоваться.
Но на других языках, бесспорно, это часто проще.

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

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

Ебал в рот кресты и джаву, люблю си и ассемблер и мне похуй.

Ответы507796

164 28 окт, 20:03 164 1507796

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

Как докатился до арбузов-то? Дядя - арбузный король оставил наследство?

Ответы507807

165 28 окт, 20:10 165 1507807

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

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

Ответы507810507827

166 28 окт, 20:14 166 1507810

>>1507807
В АТО воевал?

Ответы507822

167 28 окт, 20:19 167 1507822

>>1507810
>В АТО воевал?
Палестина. Так вышло.

Ответы507827

168 28 окт, 20:22 168 1507827

>>1507807
>заказчиков
Крипту на нём уже пишут, так как безопасность там в приоритете. Там, глядишь, практика использования поднакопится, до остальных, более консервативных, сфер дойдёт.

>>1507822
>Java
>Палестина
>Арбузы
ЦАХАЛ?

Ответы507832

169 28 окт, 20:25 169 1507832

>>1507827
>ЦАХАЛ
Немного наоборот.

Ответы507836

170 28 окт, 20:27 170 1507836

>>1507832
Так, значит, ты - торговец арбузами, в прошлом ява-сеньор, отсидевший за наёмничество как палестинский боевик..?

Ответы507842

171 28 окт, 20:30 171 1507842

>>1507836
Не говори, а мы тут штаны просиживаем. Хотя, по арбузам можно было бы догадаться, что не ЦАХАЛ. Но я как-то решил, что было бы логично сперва работать жава-сеньором в кибуце, а потом пойти, соответственно, в ЦАХАЛ.

Ответы507849

172 28 окт, 20:32 172 1507849

>>1507842
> по арбузам
А что тебе арбузы обо мне говорят? Ну, решил я ими заняться и что? Почему все доебываются до блядских арбузов? Если бы я скажу, то все думаю, что я серьезный перец, а как арбузы - сразу какое-то предвзятое отношение. Несправедливо.
> ЦАХАЛ
Если бы там был, то не пришлось бы сидеть.

Ответы507857507864

173 28 окт, 20:38 173 1507857

>>1507849
Не знаю, как у вас, а у нас на рынке - что ни торговец арбузами, то с большой вероятностью, чисто внешне мусульманин.

Ответы507866

174 28 окт, 20:40 174 1507864

>>1507849
Сколько и где сидел? Тюрьмы нормальные? За кого воевал (и зачем - ты же программист епта, можешь переехать в любую страну)? Не очень разбираюсь, че там у вас.

Ответы507879

175 28 окт, 20:43 175 1507866

>>1507857
> А у нас на рынке - что ни торговец арбузами
У меня бизнес крутится в несколько другой плоскости. Я отвечаю, за организацию цепочки доставки с югов в регионы России, от Петербурга до Новосибирска. Я не занимаюсь курированием выращивания бахчевых культур.
А насчет этих уличных торговцев, могу сказать, что иногда думал заняться и этим, потому что часто они, несмотря на свой бомжеватый вид, гребут нормальные деньги. Я изучал этот вопрос и не мог понять, какого хуя они одеваются как бомжи, если получают такой титанический (для своей ниши) оборот. Вопрос, кстати, открытый.

Ответы507878

176 28 окт, 20:52 176 1507874

https://www.openbusiness.ru/html/dop/arbuz.htm
>Арбузный бизнес, как и всякий плодово-овощной, в России имеет ярко выраженную сезонную окраску. Зато его рентабельность может достигать 60-100%. Главное - суметь быстро организовать цепочку доставки арбузов с юга России в Петербург.
охх, не знаю, может и меня заебёт однажды программировать и подамся организовывать цепочки поставок голубоглазых сибирских шлюх в Китай, тут близко

Ответы507880507881

177 28 окт, 20:56 177 1507878

>>1507866
Потому что оборот != прибыль.
Это как в расте: язык есть, фичи есть, потокобезопасность есть — работы нет.

Ответы507880507883

178 28 окт, 20:58 178 1507879

>>1507864
>Сколько и где сидел? Тюрьмы нормальные?
Тюрьмы - пиздец, в колонии было нормально. Так как были некоторые connections в ФСИН.
Сидел я недалеко от родной республики. Говорить где, точно не буду, сами уж понимаете. За меня смогли договориться с нужными людьми и я сидел в хороших условиях, имел доступ в интернет, получал нормальную пищу и не было в камере никаких урков. Сейчас, такое не прокатит уже (вне Кавказа точно), так как в 18 году один авторитет пропалился СМИ о том, что он на зоне икру с шашлыком хавает и СК да ФСИН все ужесточили да сжали яйки всем, кто такое практиковал.
Поэтому грешно мне жаловаться. Начал даже очень много читать на зоне, зона ушла - привычка осталась. Стал практиковать медитации отчего жить стало проще и чище.
Все сейчас идет на исправление. Через год планирую, вот, в Германию свалить.
> За кого воевал
Одно из крыльев ФАТХ за освобождение палестины.
> Зачем
Не понимал, что бороться с Израилем, пока штаты стоят за ним бесполезно.

Ответы507994

179 28 окт, 21:00 179 1507880

>>1507874
>https://www.openbusiness.ru
Сайт очень годный и в одно время очень помог мне.
>голубоглазых сибирских шлюх в Китай, тут близко
Они сами находят свой путь. Время сутенеров медленно уходит вникуда и романтика нелегальных борделей тоже.
>>1507878
Да в том то и дело, что там по подсчетам и прибыль нихуйская была. Или они за крышу много отдавали, или они являются тайными воротилами теневой экономики. Третьего не вижу.

Ответы507886

180 28 окт, 21:02 180 1507881

>>1507874
> подамся организовывать цепочки поставок
Если интересно, то в свое время очень помогла эта книга
https://www.alpinabook.ru/catalog/book-5557/

sage 181 28 окт, 21:05 181 1507883

>>1507878
>язык есть, фичи есть, потокобезопасность есть — работы нет.
Вангую, что через несколько лет работы будет много, если разработчики языка не уйдут в хаскельманду.

182 28 окт, 21:09 182 1507886

>>1507880
Если точка не согласована, могут снести. А чтобы не снесли, доставай монетку. Продавцу зарплату плати, если сам не продавец (а если сам, то умей общаться, торговаться и целый день каждый день стоять или сидеть на жаре), за бензин плати, грузчикам плати, налоги плати. Где тут прибыль-то? Да и зачем дорого одеваться, если потом всё равно всё расхуячишь соком, когда арбуз резать будешь?

Ответы507887

183 28 окт, 21:11 183 1507887

>>1507886
>Да и зачем дорого одеваться
Я скорее про то, что они спят вместе с другими приезжими в бомжатниках.

А так ты верно все расписал про их издержки.

184 28 окт, 21:50 184 1507923

Только вышел из треда, прихожу, а тут уже какие-то арбузные боевики.

Рассказывайте, кто что пилит на расте?

Ответы509136

185 28 окт, 23:27 185 1507994

>>1507879
Хуя себе история. Ты верующий, я правильно понял? Никогда еще не встречал верующих программистов. Ты исследовал коран? Видишь ли ты противоречия в нем? Как ты относишься к наличию разночтений у суннитов/шиитов и других направлений? Как ты относишься к тому, что все религии (и течения ислама) считают свое учение правильным, а все остальные - не совсем?

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

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

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

Ответы508039508101

186 29 окт, 00:33 186 1508039

>>1507994
дебик, тебе бы историю подучить. До евреев на этой земле были только Кнааны, потом были евреи, коих силой изгнали оттуда и они 2000 лет шароебились по планете Земля и их прессовали по кд все кому не лень. Иерусалим в Торе упоминается свыше 150 раз, в Коране - ни разу (да-да, пошел нахуй, у меня знакомый аспирант востоковед и знает всю эту чепуху, лично я ссал на все эти религии плотной струей урины). Никакой палестины нет и не было никогда за всю историю всех народов, это все равно, блять, что утверждать, что ДНР - это полноценное государство и всегда существовало, лол. У нее никогда не было государства, она была подмандатная после первой мировой, сама земля в то время принадлежала вообще британцам. А палестинцам (на верный лад, филистимлянам) дали такую кликуху римляне, которые тоже были мимозавоевателями. Образование государства Израиль в 1948 году - не более, чем возвращение евреев на родину после изгнания длиною в 2000 лет.
Факт - за 70 лет евреи построили одно из самых развитых государств в мире (технологии, медицина, экономика на мировом уровне), а когда обоссаный конч Ариэль Шарон отдал Газу этим даунам, она из цветущих садов превратилась в чистилище ада буквально сразу. Про исковерканные толкования Корана начала 20ого века, где ВНЕЗАПНО появляется инфа, что Иерусалим вовсе не принадлежит евреям, это вообще рофл. В общем, собаки лают, караван идет.
мимонежид, бтв

Ответы508042508050

187 29 окт, 00:40 187 1508042

>>1508039
>Факт - за 70 лет евреи построили одно из самых развитых государств в мире
А разве не американцы это сделали?

Ответы508061

188 29 окт, 00:48 188 1508050

>>1508039
Я вообще не утверждал ничего, о чем ты бугуртишь. Палестина - это просто одно из названий той территории, из которого сразу понятно где это и что это. Не явлюяюсь фанатом евреев или арабов, я к этому конфликту никаким боком не отношусь, просто любопытно.

Почему ты так сгорел?

Ответы508061

189 29 окт, 01:08 189 1508061

>>1508042
А разве американцы? По-твоему, союз == полное гособеспечение от А до Я? Тащемта, нет.

>>1508050
Я тоже не имею к этому отношения, но арабы в современной истории причинили огромное количество страданий людям разных народов. Чем занимались евреи? Строили свою страну, разрабатывали новые технологии, продвигали науку вперед. Чем занимались муслимы? Аллахакбарились в метро, на улицах в толпах ни в чем неповинных людей, резали людей на улицах, насиловали женщин по всей Европе. Абсолютное большинство террористических организаций в мире состоит чуть менее, чем полностью из муслимов. Обобщать не хочется, ибо это очевидно, что не АБСОЛЮТНО каждый муслим в мире == террорист, но статистика энивей играет не в их пользу. Евреи - созидатели, муслимы - разрушители. Я уважаю евреев за то, что они, несмотря на гонения длиною в ТЫСЯЧИ лет, не исчезли с лица Земли, как народ, а восстали как Феникс из пепла, да еще и построили свое государство достойным образом. И я презираю большинство муслимов за то, что в современной истории они сеют смерть и ненависть. Это факт, с которым сложно спорить.

190 29 окт, 06:49 190 1508101

>>1507994
>Хуя себе история. Ты верующий, я правильно понял?
Сложно ответить.
>Никогда еще не встречал верующих программистов.
Лично я заметил, что многие ударяются в буддизм (не совсем религия, но религозно-философское).
>Ты исследовал коран?
Да, я из рода хафизов, поэтому меня с детства думали сделать муллой. Я с ранних лет читаю, пишу по-арабски, поэтому это для меня не проблема.
> Как ты относишься к тому, что все религии (и течения ислама) считают свое учение правильным, а все остальные - не совсем?
Ислам считает все авраамические религии правильными. Все христиане и иудеи - ахль аль-Китаб, то есть люди писания, которых нельзя оскорблять, посягать на их имущество. Они, как мусульмане, попадут в рай, только будут подвержены большим испытаниям, согласно Корану и Хадисам.
>Тебе легко было решиться пойти воевать (с высоким шансом умереть)
Это решение было результат запущенного уныния, которое овладело мною. В то время я очень больно реагировал на любую несправедливость. Сейчас же я понял, что ей полна вся земля, и лучше изменить свое отношение ко всему, чем весь мир.
>На каком языке вы там говорили в Палестине?
Ебанутый вид арабского.
>Какими были ребята, которые воевали с тобой, какое у них образование?
Это простые ребята. Многие из них потеряли братьев, сестер, отцов, матерей и друзей от руки Израиля. Среди них было несколько людей с высшим, но бол-во - без него.
>Они воюют чисто за территории Палестины или там замешана религия?
Скорее смесь всего. Когда на твоей земле враг, который не дает тебе свободно молиться на твоих святынях, который загоняет тебя, аки скот, в резервации, который запрещает тебе даже вести свободно хозяйство на своей земле, то вопросов у многих и не было.
>У тебя была военная подготовка или учили там на месте?
Учили на месте. Военная подготовка до этого была.
>Сейчас тебя беспокоит, что Израиль поступает несправедливо по отношению к Палестине?
Сейчас уже нет. Многое в руках самих мусульман. Если бы все мусульманские страны пламенно желали залететь (и при этом действовали грамотно, а не на горячую голову) с моджахедами в Эль-Акса, то это бы уже произошло.
>Или причина конфликта в том, что евреи именно в наше время сильно прессуют арабское население в Палестине?
Именно. Это самый настоящий апартеид. Но миру - похуй. Пусть щемат палестинцев, пусть щемат уйгуров. Все будут молчать пока в том есть выгода.
>Есть ли у тебя знакомые евреи, которые являются хорошими людьми?
Среди евреев много хороших людей.
>в Коране - ни разу
Да. Он упоминается в Хадисах.
>Образование государства Израиль в 1948 году - не более, чем возвращение евреев на родину после изгнания длиною в 2000 лет.
Этот тезис смешной. Может теперь ассирийцам ближневосточным всю Месопотамию подмять?
>Факт - за 70 лет евреи построили одно из самых развитых государств в мире
С них надо брать пример.
>она из цветущих садов превратилась в чистилище ада буквально сразу.
Как ты эти чистилища приберешь, если тебе Израильское Goverment почти не дает свободно вести предпринимательскую деятьельность под угрозой смерти?
>А разве не американцы это сделали?
Скорее немцы. Иронично.
>Почему ты так сгорел?
Потому что этот анон не держит себя в руках.
>но арабы в современной истории причинили огромное количество страданий людям разных народов
Я соглашусь. Им стоит вспомнить, то что во времена халифата все было наоборот.
>И я презираю большинство муслимов за то, что в современной истории они сеют смерть и ненависть.
Я не понимаю, зачем мусульмани идут на это, если в Коране чётко написано то, что их действия, терроризм и прочее - ебанный стыд и грех.

190 29 окт, 06:49 190 1508101

>>1507994
>Хуя себе история. Ты верующий, я правильно понял?
Сложно ответить.
>Никогда еще не встречал верующих программистов.
Лично я заметил, что многие ударяются в буддизм (не совсем религия, но религозно-философское).
>Ты исследовал коран?
Да, я из рода хафизов, поэтому меня с детства думали сделать муллой. Я с ранних лет читаю, пишу по-арабски, поэтому это для меня не проблема.
> Как ты относишься к тому, что все религии (и течения ислама) считают свое учение правильным, а все остальные - не совсем?
Ислам считает все авраамические религии правильными. Все христиане и иудеи - ахль аль-Китаб, то есть люди писания, которых нельзя оскорблять, посягать на их имущество. Они, как мусульмане, попадут в рай, только будут подвержены большим испытаниям, согласно Корану и Хадисам.
>Тебе легко было решиться пойти воевать (с высоким шансом умереть)
Это решение было результат запущенного уныния, которое овладело мною. В то время я очень больно реагировал на любую несправедливость. Сейчас же я понял, что ей полна вся земля, и лучше изменить свое отношение ко всему, чем весь мир.
>На каком языке вы там говорили в Палестине?
Ебанутый вид арабского.
>Какими были ребята, которые воевали с тобой, какое у них образование?
Это простые ребята. Многие из них потеряли братьев, сестер, отцов, матерей и друзей от руки Израиля. Среди них было несколько людей с высшим, но бол-во - без него.
>Они воюют чисто за территории Палестины или там замешана религия?
Скорее смесь всего. Когда на твоей земле враг, который не дает тебе свободно молиться на твоих святынях, который загоняет тебя, аки скот, в резервации, который запрещает тебе даже вести свободно хозяйство на своей земле, то вопросов у многих и не было.
>У тебя была военная подготовка или учили там на месте?
Учили на месте. Военная подготовка до этого была.
>Сейчас тебя беспокоит, что Израиль поступает несправедливо по отношению к Палестине?
Сейчас уже нет. Многое в руках самих мусульман. Если бы все мусульманские страны пламенно желали залететь (и при этом действовали грамотно, а не на горячую голову) с моджахедами в Эль-Акса, то это бы уже произошло.
>Или причина конфликта в том, что евреи именно в наше время сильно прессуют арабское население в Палестине?
Именно. Это самый настоящий апартеид. Но миру - похуй. Пусть щемат палестинцев, пусть щемат уйгуров. Все будут молчать пока в том есть выгода.
>Есть ли у тебя знакомые евреи, которые являются хорошими людьми?
Среди евреев много хороших людей.
>в Коране - ни разу
Да. Он упоминается в Хадисах.
>Образование государства Израиль в 1948 году - не более, чем возвращение евреев на родину после изгнания длиною в 2000 лет.
Этот тезис смешной. Может теперь ассирийцам ближневосточным всю Месопотамию подмять?
>Факт - за 70 лет евреи построили одно из самых развитых государств в мире
С них надо брать пример.
>она из цветущих садов превратилась в чистилище ада буквально сразу.
Как ты эти чистилища приберешь, если тебе Израильское Goverment почти не дает свободно вести предпринимательскую деятьельность под угрозой смерти?
>А разве не американцы это сделали?
Скорее немцы. Иронично.
>Почему ты так сгорел?
Потому что этот анон не держит себя в руках.
>но арабы в современной истории причинили огромное количество страданий людям разных народов
Я соглашусь. Им стоит вспомнить, то что во времена халифата все было наоборот.
>И я презираю большинство муслимов за то, что в современной истории они сеют смерть и ненависть.
Я не понимаю, зачем мусульмани идут на это, если в Коране чётко написано то, что их действия, терроризм и прочее - ебанный стыд и грех.

Показать весь текст
Ответы508103508152

191 29 окт, 06:49 191 1508103

>>1508101
>мусульмани
*мусульмане

192 29 окт, 10:25 192 1508152

>>1508101
У меня в голове пока что плотно сидят 2 тезиса (я считаю это фактами)
1. Израиль будет сговорчивее, если в Палестине ко власти придёт партия, не ставящая своей целью уничтожение Израиля (сейчас там Хамас, он ставит, ФАТХ был миролюбивее - и с ним почти договорились)
2. Арабы (Саудовские и прочие) заинтересованы в том, чтобы Палестина была вечной кровоточащей раной - им это нужно для мобилизации собственного населения, для поддержания образа врага. Они то и поспособствовали смене ФАТХ на Хамас, так как мир им не выгоден.

Что касается помощи от США и проч: евреи, пусть на помощь США, пусть, организовали у себя государство первого мира с IT, медициной, фармакологией, кибуцами, космической программой и прочим. То есть, не сидят, сложа руки. Арабы, сидя на нефти, имея с неё гораздо больше, чем Израиль от США, только и делают, что пользуют Наташек и спонсируют "братьев" (в том числе некоторых жава-сеньоров) по всему миру. Рашка в этом плане не лучше, но это другой разговор.
Я про то, что если смыть Израиль в океан, то арабы не построят там ничего путного взамен, как не построили они в других странах (есть у них Дубай, но там ни черта не производят, это чисто мировой офис).

Ответы508158

193 29 окт, 10:33 193 1508158

>>1508152
С тезисами я согласен. Евреи и арабы должны как-то научиться жить вместе (звучит смешно, но им придется). Только произойдет это даже позже чем раст станет мейнстримом.

194 29 окт, 11:08 194 1508178

Всем привет. Я Олег.

40 Кб, 387x701
195 30 окт, 12:06 195 1509001

Анон, нид хелп

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

что хочу: хочу 2 структуры чтобы одна (child) был вложена в другую (parent) и могла звать функции родителя. Можно такое провернуть без лишних изъёбов, на одном только Weak? Пробую, а всё никак: то, видите ли, parent owned, то ссылка lives not enough.

Ответы509027509028509385

196 30 окт, 13:00 196 1509027

>>1509001
Нахуя ты в палестинотред это говно притащил? Пшел отсюда.

197 30 окт, 13:01 197 1509028

>>1509001
Создай парента через Rc<RefCell<>>, у Rc создай слабую ссылку.

Какую задачу ты решаешь? Скорее всего тебе такая ересь не нужна.

Ответы509083512987

198 30 окт, 14:20 198 1509083

>>1509028
>Какую задачу ты решаешь?
Чтобы child мог асинхронно через метод парента ответ вернуть.

Ответы509141

199 30 окт, 15:21 199 1509136

>>1507923
>Рассказывайте, кто что пилит на расте?
Движок для создания интерактивных карт для отображения истории Палестины.

200 30 окт, 15:27 200 1509141

>>1509083
Трейты с дефолтом не подходят?

Ответы509170

201 30 окт, 15:33 201 1509143

Ну что вы, мученики?
Найдете вы еще работу себе, не переживайте.

Ответы509151509152

202 30 окт, 15:43 202 1509151

>>1509143
Большинство тут с работой. Просто не педеRUSTами.

Ответы509152

203 30 окт, 15:44 203 1509152

>>1509143
>>1509151
сдрыстрине в местный жс/пистон тред, макакам тут не рады

Ответы509158

204 30 окт, 15:59 204 1509158

>>1509152
Я считаю, что ты ведешь себя неподобающе и нарушаешь дискуссию, которую ведут тут добропорядочные аноны. Своими действиями ты позоришь себя и все, что ты с собой олицетворяешь. Я бы задумался и прекратил вести себя столь глупо и неуместно, дабы не пятнать своё достоинтсво подобными выходками.

Ответы509174

205 30 окт, 16:10 205 1509170

>>1509141
Думал о таком, а разница будет? Ща попробую.

Ответы509174

206 30 окт, 16:22 206 1509174

>>1509158
>с собой олицетворяешь
>достоинтсво
>>1509170
Просто трейты — это раст вей, ООП через ансейф — не раст вей. В сущности, какая тебе разница, выносить функции в трейт или в методы парента? Если там серьёзная разница в коде между методами парента и чайлда, то имплементишь отдельно. А если маленькая разница, то в функцию можно передать кложуру.

207 30 окт, 21:23 207 1509385

>>1509001
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=d1ef955bed15c42709ed95227940f74c
> Какую задачу ты решаешь? Скорее всего тебе такая ересь не нужна.
Анон прав.

Ответы509431

208 30 окт, 22:27 208 1509431

>>1509385
Да, уже решил через парент, переданный чайлду как нужный трейт.

Ответы509451

209 30 окт, 23:12 209 1509451

>>1509431
Покажешь псевдокод решения? Просто интересно стало.

Ответы509572

210 31 окт, 08:10 210 1509572

>>1509451
Как-то вот так.

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

211 31 окт, 19:57 211 1510127

Зачем нужно это гавно кагда есть яваскрипт и нода?

Ответы510354510968

212 1 ноя, 00:44 212 1510354

>>1510127
А точно, че это мы все тут. Го на яве пилить софт.

213 1 ноя, 02:57 213 1510402

Накопил денег, уволился с галеры, хочу сделать себе Diablo 2, как OpenXRay или OpenMorrowind, только на русте. Подскажите в какую сторону копать, а то этот гейдев какой-то сложный сильно.

Ответы510404

214 1 ноя, 03:02 214 1510404

>>1510402
постри piston2d, gellium, vulkano и типо того

Ответы510603

215 1 ноя, 14:24 215 1510603

>>1510404
Ещё Amethyst есть, хотя он сложный и пока не все мастхев фичи для игры есть.

216 1 ноя, 21:18 216 1510966

>>1456440 (OP)
Подскажите, что за прога в webm шапки

217 1 ноя, 21:19 217 1510968

>>1510127
Типы, контроль за выделениями памяти. Куча ошибок детектится на этапе компиляции

40 Кб, 465x569
218 3 ноя, 12:29 218 1511898

https://fasterthanli.me/blog/2019/reading-files-the-hard-way/

219 3 ноя, 12:47 219 1511921

Ананасы, почему ржавый не стреляет. Он вроде как замена си и крестов, а на должности в область системного программирования энивей в 99% случаев требуют знания си или плюсов, но никак не раста
Ватафак?

Ответы511924511933511952

220 3 ноя, 12:51 220 1511924

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

Но вообще, раст не только и не столько про системное программирование, сколько про безопасную и быструю альтернативу без гц.

221 3 ноя, 13:03 221 1511933

>>1511921
Потому что 99% разработчиков не пишут браузеры и подобную хуйню где фичи раста нужны

Ответы511940

222 3 ноя, 13:11 222 1511940

>>1511933
А что и на чем они пишут?

Ответы511956

223 3 ноя, 13:24 223 1511952

>>1511921
Потому что для ядра он всё ещё жирный, а для плюсов слишком сложный как второй язык. А для простых утилит го проще и либы у него все есть. Вот где у раста что-то подобное go x/crypto/ssh?

Ответы511953

224 3 ноя, 13:25 224 1511953

>>1511952
Тебя не смущает что "простые утилиты" по факту пишутся либо на расте либо сразу на ноде, а не на го? ripgrep один чего стоит.

Ответы511968

225 3 ноя, 13:29 225 1511956

>>1511940
Ну я математику пишу например. Шаблоны крестовые очень заходят, а вот борроу чекер не пришей пизде рукав

Ответы511961511968512234

226 3 ноя, 13:35 226 1511961

>>1511956
https://www.nalgebra.org
const generics и GAT скоро завезут, будет лучше.

227 3 ноя, 13:44 227 1511968

>>1511953
Не смущает, ибо у меня обратный опыт. Щито поделать.jpeg
Взять хотя бы недавний https://github.com/neex/phuip-fpizdam - казалось бы питон идеален, но пок почму-то на го.
>>1511956
Ну они ж пиздец. В d куда проще.

Ответы511975

228 3 ноя, 13:59 228 1511975

>>1511968
И чем питон идеален? Тем что для запуска тулзы у тебя в системе должен стоять питон? Нет спасибо.

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

Ответы512010

229 3 ноя, 14:30 229 1512010

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

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

> И чем питон идеален? Тем что для запуска тулзы у тебя в системе должен стоять питон? Нет спасибо.
Для сборки гошного бинаря тебе тоже нужен компилятор. Питон просто намного более декларативен, что для Proof of Concept куда приятнее. В мире эксплоитов похуй на чём они написан, лишь бы работали. Куча скриптов вообще на повершелле, ибо винда.
И да, покажи мне систему без питона. Нескучный DE для WSL не предлагай.

Ответы512045512148

230 3 ноя, 15:22 230 1512045

>>1512010
> Но почему они начали на го, если знали что пилят?
Они начинали на джаве, но потом сверху спустили команду форсить го.

> Питон просто намного более декларативен
Имперптивный донельзя, как и гопараша.

231 3 ноя, 16:30 231 1512148

>>1512010
https://github.com/search?utf8=✓&q=stars:>1000+language:Rust&type=Repositories&ref=advsearch&l=Rust&l=
Инфы по закрытым проектами, как ты можешь догадаться у меня нет, а про мои вряд ли тебе будет интересно, ибо confirmation bias. Но я уже не на первом месте работе пишу на расте. Нет, не блокчейн.

Ответы512233

232 3 ноя, 18:05 232 1512233

>>1512148
К содалению, в списке полтора серьезных проекта, а остальное - очередные http-библиотеки и консольные утилиты

233 3 ноя, 18:08 233 1512234

>>1511956
И что такого в крестовых шаблонах тебе заходит? Они пиздецом перестали быть только в свежем стандарте с приходом концептов.
Inb4 вариадик темплейтс, но я пока не встречал примера, где от вариадиков жизнь кардинально поменялась

Ответы512240

234 3 ноя, 18:26 234 1512240

>>1512234
>И что такого в крестовых шаблонах тебе заходит
Динамическая типизация. Когда ты используешь их по изначальному назначению - а именно как слегка типизированный вариант сишного препроцессора, они охуенны. Можно комбинировать алгоритмы в статике, можно, подставлять флоаты и т. д. Самое приятное, что это работает даже на CUDA.
А концепты наоборот хуйня. Потому что одно дело тайпклассы, которые могут разрешаться ad-hoc, а могут тянуть за собой указатель таблицу функций и быть полиморфными в рантайме, концепты это просто способ чуть менее запутанно падать во время компиляции. Мне это вообще никак не помогает.

Ответы512252

235 3 ноя, 18:43 235 1512246

Анонс, такой проблем. Есть некий алгоритм, с 3 вложенными циклами, который имеет отличия в самом нижнем лвл
for x in (0..9){
for y in (0..9){
for z in (0..9){
SOME_OPERATION

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

Я придумал такой вариант - передавать параметром inline функцию, но что-то сомневаюсь - а конпелятор это норм отпимизирует?

Ответы512252512278

236 3 ноя, 18:48 236 1512252

>>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

Ответы512269

237 3 ноя, 19:17 237 1512269

>>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. Поэтому возникает два стула, либо стабы, либо какие-то ебические количества микротрейтов. Это уже проходили в хаскеле, когда оказалось, что монада это апликативный функтор, а вот прелюдия думает по-другому.
Короче, лично для меня отсутствие темплейтов это большой и бессмысленный гемор, который выливается в еблю с системой типов вместо програмиирования.

237 3 ноя, 19:17 237 1512269

>>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. Поэтому возникает два стула, либо стабы, либо какие-то ебические количества микротрейтов. Это уже проходили в хаскеле, когда оказалось, что монада это апликативный функтор, а вот прелюдия думает по-другому.
Короче, лично для меня отсутствие темплейтов это большой и бессмысленный гемор, который выливается в еблю с системой типов вместо програмиирования.

Показать весь текст
Ответы512296512307512376512410

238 3 ноя, 19:30 238 1512278

>>1512246
Алсо крайне забавно что в крестах подобный код вообще бы вопросов не вызвал будет ли оптимизирован или нет.
Можно даже тупо template<enum> сделать и свитч в коде ебнуть. Очень просто и наглядно.

Ответы512300

239 3 ноя, 20:00 239 1512296

>>1512269
Круто, хули. Но в чём проблема написать два слова в T:?
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fe7aa58b6b945075590d6a16f63e1762

Для простеньких структур есть #[derive] вместо кучи прописываемых руками impl'ов.
Тебе же не нужно вписывать в ограничения типа функции все трейты, нужно вписывать только те, которые ты используешь.
Но да, писать надо чуть больше, чем в C++.

Ответы512324

240 3 ноя, 20:07 240 1512300

>>1512278
А в расте нет вопросов по поводу того, будет ли оптимизирована передача кложуры.
https://www.reddit.com/r/rust/comments/7y2h09/how_powerful_are_closures_really/

241 3 ноя, 20:18 241 1512307

>>1512269
Дядя, а ты не путаешь trait objects и generics? Дженерики-то как раз реализованы через мономорфизацию типов, прямо как шаблоны плюсов. А trait objects - это как раз те самые 2 указателя, прямой аналог виртуальных функций плюсов.

242 3 ноя, 20:37 242 1512324

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

Ответы512329512376

243 3 ноя, 20:46 243 1512329

>>1512324
Да тебе конпелятор прямо в ебло выдаёт эти слова, вроде "std::ops::AddAssign", "Copy" или "Send". Не вижу проблемы. А вот выгоды, если ты пишешь в команде хотя бы из двух человек — вижу. Потому что если ты хочешь передать в функцию некий тип, то ты сразу видишь, реализацию каких трейтов тип должен иметь. И тебе не надо ползать по функции, выискивая плюсы, минусы, шифты и прочее, потому что всё, что применяется к этому типу ты видишь прямо в начале функции.

Ответы512332

244 3 ноя, 20:53 244 1512332

>>1512329
> Потому что если ты хочешь передать в функцию некий тип, то ты
Пиздуешь имплементировать трейты для того чтобы просто использовать функцию со своим типом. Даже если 90% функций трейта тебе нахуй не нужны.

Ответы512339512348512376

245 3 ноя, 21:02 245 1512339

>>1512332
Ты так говоришь, будто ты каждый день по типу добавляешь, для которого надо трейт Float реализовывать

Ответы512341

155 Кб, 776x1394
246 3 ноя, 21:12 246 1512341

>>1512339
Алсо, пикрил я сгенерил одним хоткеем за 2 секунды и ненужные методы можно не реализовывать.

Ответы512342512347512390

247 3 ноя, 21:13 247 1512342

>>1512341
Это упадет в рантайме?

Ответы512376

248 3 ноя, 21:17 248 1512347

>>1512341
Че за хоткей?

Ответы512376

249 3 ноя, 21:18 249 1512348

>>1512332
Если это простая структура, то тупо #[derive], а если сложная, то ты всё равно должен или имплементить Add, или оверлоадить +, если ты будешь его использовать в той функции. Вот только в расте ты можешь сразу посмотреть, есть ли нужные тебе трейты, даже не прогоняя код через компилятор. И какая разница, сколько функций трейта тебе нужны, если все они требуют имплементить только одну функцию? А если не одну-две, то нахуя ты вообще это трогаешь, если оно тебе не надо? Мне кажется, ты пришёл в раст, потому что раст на SO четвёртый год подряд "мост лавед", потыкался, попытался сделать то, что не очень приятно делать на расте, и разочаровался в языке.

250 3 ноя, 21:40 250 1512376

>>1512269
>>1512324
>>1512332
>>1512342
Твоя проблема из пальца высосана. Хочешь писать C++-way - придется делать стабы. Хочешь писать по-нормальному - либо пиши свой трейт для типа, либо реализуй чужой трейт. Все это займет максимум час и проблем позже не доставит. И не надо говорить, что мол геморно - ты каждый день новые реализации float не пишешь, так что реализовать даже чужой огромный трейт - задача ненапряжная. Зато потом другим разработчикам (да и тебе самому) не надо будет ползать по исходникам, выискивая заиспользованные операции.

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

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

>>1512347
alt-insert в idea

Ответы512415

251 3 ноя, 21:48 251 1512390

>>1512341
Твой unimplemented реализован через panic и падает в рантайме. А в плюсах будет ошибка компиляции. Плюсы вин.

Ответы512410512414

252 3 ноя, 22:00 252 1512410

>>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
Муля, не нервируй меня!

253 3 ноя, 22:04 253 1512414

267 Кб, 2502x1728414 Кб, 2114x1952

>>1512390
В Rust-е нет дженериков, которые сопоставляют шаблонный параметр с фактическим интерфейсом, заюзанным в шаблонной функции. И правильно сделали - хочешь использовать дженерики - укажи интерфейс шаблонного параметра заранее, блеать.

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

254 3 ноя, 22:04 254 1512415

>>1512376
И часто ты этим alt-insert пользуешься? Как вообще поддеркжа раста в идее? Сама иде не тормозит?

Ответы512422

255 3 ноя, 22:08 255 1512422

>>1512415
alt-insert юзаю постоянно и во многих языках: C++, java, scala, rust. Плагин раста в идее работает еще хуже, чем скаловский, но выбирать как-то не приходится. Сама идея тормозит только в исключительных случаях, если выдать ей гигов 8 памяти (что все и делают)

Ответы512426

256 3 ноя, 22:10 256 1512426

>>1512422
>Сама идея тормозит только в исключительных случаях, если выдать ей гигов 8 памяти (что все и делают)
В смысле практически никогда не тормозит, если выдать ей дохера оперативы

Ответы512430

257 3 ноя, 22:12 257 1512430

>>1512426
Сравнивал с альтернативами? И что умеет расто-плагин? Точнее даже, что не умеет?

Ответы512479

258 3 ноя, 22:48 258 1512479

>>1512430
Неа

259 4 ноя, 00:02 259 1512523

Может кто написать сравнение Rust vs D ? В чем их разница и какие преимущества у каждого?

Ответы512529

260 4 ноя, 00:18 260 1512529

>>1512523
В расте вообще нет GC. Собственно, главное различие. Все остальные различия примерно те же, что между любым C-based-lang с ограничениями и растом. Но мало кто будет сразу ,да и вообще писать на D без GC потому что без GC он ничем не лучше крестов, а обратная совместимость, сам понимаешь. А в расте у тебя выбора нет, но он и без GC выглядит неплохо, пока ты не упираешься в какую-то грязь, которая требует ансейфа и изъёбов в основном это алгоритмы с нестандартными структурами данных и просто нестандартные или оптимизированные для чего-либо структуры данных.

Ответы512602

261 4 ноя, 01:59 261 1512578

>>1504241
> Попробуй сначала из крудо-формошлепства перекатиться в чистый бекенд с кафками-куберами-облаками-grpc'ми-числодробилками-хуйлоадом
А где этому учиться? Можешь посоветовать книжек и ресурсов?
Мимо-embedded на си, который учит node.js и хочет заниматься дрочкой серверов

Ответы513459

262 4 ноя, 03:02 262 1512602

>>1512529
> которая требует ансейфа и изъёбов в основном это алгоритмы с нестандартными структурами данных
Как двусвязный список, например? Очень нестандартная структура данных.

Ответы512604512828513367

263 4 ноя, 03:06 263 1512604

>>1512602
Спасибо, Капитан. А если это был сарказм, то скажи мне, сколько раз ты использовал двусвязный список в своём коде? На каждую сотню использованных векторов и каждый десяток очередей? Как часто тебе нужен был модифицированный список?

264 4 ноя, 03:14 264 1512609

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

Ответы512611

122 Кб, 1430x1153
265 4 ноя, 03:22 265 1512611

>>1512609
Дохуя всего абсолютно, вон пикрил посмотри.

Ответы512613512617

266 4 ноя, 03:25 266 1512613

>>1512611
Толсто. И hh.ru чуть ли не самый худший вариант для поиска работы на расте, хотя и там иногда проскальзывают вакансии. Пока что Рашка не доросла до раста, ракорастов берут пока что только в Европке или Америке.

Ответы512621

267 4 ноя, 03:36 267 1512617

>>1512611
раст основным хард-скиллом не идет вообще нигде. Только как плюс лол
В заголовках везде джава и макакаскрипт с сисярпом

268 4 ноя, 03:59 268 1512621

>>1512613
Возможно ли растом делать 7к$ на удаленке, если условно входишь в top25%?

Ответы512642

269 4 ноя, 05:15 269 1512642

>>1512621
Нет, ибо на раст нет работы и так, что уж там про удаленку говорить, да еще и за 7к. Только если свою ОС на ржавом напишешь

270 4 ноя, 13:38 270 1512828

>>1512602
ну чтож...

struct PieceOfShit {
parent: Option<Weak<Rc<RefCell<PieceOfShit>>>>,
some_data: String,
child: Option<Weak<Rc<RefCell<PieceOfShit>>>>,
}

Ответы512870512978

271 4 ноя, 14:18 271 1512870

>>1512828
>

272 4 ноя, 15:41 272 1512978

>>1512828
>child: Option<Weak<Rc<RefCell<PieceOfShit>>
Зачем такая длинная запись, просто Option<RefCell<>> не катит?

Ответы512987

273 4 ноя, 15:50 273 1512987

>>1512978
с виком я вроде слегка обосрался,
но вот Rc<RefCell нужен для мутабельности (не мутекс конечно, но тоже неплохо)

>>1509028
а вот это я и пародировал

274 4 ноя, 20:20 274 1513246

272 Кб, 1026x77259 Кб, 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.

Ответы513336

275 4 ноя, 21:43 275 1513336

>>1513246
>пока очень сыро
https://wiki.mozilla.org/Oxidation#Shipped
Сухим он никогда и не будет, все готовые куски просто тащат в фф и мерджить с гекко, а в серво будут тащить новые экспериментальные фичи.

276 4 ноя, 22:20 276 1513367

>>1512602
Ну давай сравнивать, где больше изъебов и где понятнее код.

http://cs.brown.edu/people/jwicks/libstdc++/html_user/stl__list_8h-source.html

https://doc.rust-lang.org/src/alloc/collections/linked_list.rs.html#38-43

Ответы513456514129

277 5 ноя, 00:42 277 1513456

>>1513367
Так себе сравнение если честно, для меня нет победителей. С++ просто нечитаемое говно, а раст при первом же упоминании list скатывается в unsafe

Ответы513585

278 5 ноя, 00:47 278 1513459

870 Кб, 1080x22481,4 Мб, 1080x2248

>>1512578
> А где этому учиться?
На работе, на должности бекенд-разраба.
> Можешь посоветовать книжек и ресурсов?
Пикрилы например, + видосы со всяких highload'ов. Первое для получения хоть какой-то базы, второе чтоб контекст в голове получился.
> node.js
> дрочкой серверов
Посмотри на хх, сколько вакух на чистый js backend, и сравни с питоньим и гошным бэком. Почитай, что хотят в вакансиях. И походи по собесам. Так, для понимания рыночка.

Тебе понадобится знание языка, платформы+фреймворка, какой-нибудь sql/nosql-бд, какого-нибудь брокера сообщений, общие поверхностные знания о сетях/протоколах/форматах данных/способах предоставить api, и умение пользоваться докером с каким-нибудь оркестратором (compose/swarm/кубер).

279 5 ноя, 10:30 279 1513585

>>1513456
У Сишки нет генериков, и даже без них Раст даёт банальные вещи вроде человеческого стектрейса по ООМ, который в Си нужно отдельно вкорячивать костылями. У всех остальных языков к двунаправленному списку нужно прибавлять весь код сборщика мусора, потому что без него он не имеет смысла.

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

Ответы514158

280 5 ноя, 19:33 280 1513976

Всё-тки, аноны, нужно пробросить в дочернюю структуру постоянно хранимый коллбэк, иначе никак. И, знаете, очень странно, что с этим пиздец какие сложности. Постоянно "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...

Ответы513994

281 5 ноя, 19:56 281 1513994

>>1513976
Потому что ты вызываешь функцию чайлда на данные парента. И данные парента не должны сдохнуть до того, как сдохнет чайлд. Конпелятор не может этого обещать, потому что вызывает drop() на весь парент, а не на куски его данных. И я до сих пор не могу понять, нахуя тебе вот это вот наследование, если оно в расте реализуется только через уёбищное Box<dyn TraitObject>. Тем более, у тебя нихуя нет наследования, потому что парент i32, а чайлд u32. Если тебе надо только строку расшарить, то Rc<String> и клонируешь стронк референс. А если тбе иногда надо мутать эту строку, но ты её мутаешь редко и не в цикле, то Rc<RefCell<String>>, там оверхед маленький, если постоянно не менять эту строку. А если тебе эту шнягу из разных потоков надо менять, то Arc и Mutex.

Ответы513996513997

282 5 ноя, 20:05 282 1513996

>>1513994
>данные парента не должны сдохнуть до того, как сдохнет чайлд
>Конпелятор не может этого обещать
эм, а почему, собсно? Ведь чайлд, это тоже данные парента. Как, разве может парент проебаться, а чайлд - нет?

>надо только строку
в том и дело, что это только в этом примере. В реальности без коллбэка никак ну никак, мам!

Ответы513998

283 5 ноя, 20:07 283 1513997

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

284 5 ноя, 20:10 284 1513998

>>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 }

Ответы514002

285 5 ноя, 20:16 285 1514002

>>1513998
>Что мешает сделать так?
Через Rc<RefCell<Mutex<Box<Uebox<... все могут. А я хочу понять, какого конпелятор по-умолчанию считает, что парент может проебаться раньше чайлда (или что там значит его ругань на лайфтаймы, если не это самое)

Ответы514008514022

286 5 ноя, 20:28 286 1514008

>>1514002
Если бы у тебя было
struct Parent {}
struct Child { p: &Parent, c: i32 }
То конпель и слова бы не сказал, потому что ссылку на парент ты передашь только с лайфтаймом. А про ссылку на часть данных я тебе уже рассказал, так что не нервируй меня, Муля.
Но если интересно, почему ссылка без овнершипа недействительна, смотри Pin в стандартной библиотеке.

287 5 ноя, 20:48 287 1514022

>>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)
}
}

Ответы514038

288 5 ноя, 21:08 288 1514038

>>1514022
> прочитал про Pin
прочитал, чё-т примерно понял, что данные в расте могут мотаться по памяти туда-сюда. Ухх.
>хули ты просто из парента не вызовешь функцию
тому що, в реальном примере смыл в том, чтобы её позвал чайлд (один из).

Ответы514048514057

289 5 ноя, 21:16 289 1514048

>>1514038
В таких случаях пихаешь парентов и чайлдов в разные коллекции (типа как в SQL) и хранишь в объектах не ссылки, а индексы в векторах.

290 5 ноя, 21:23 290 1514056

Купили как-то суровым сибирским лесорубам японскую бензопилу.
Собрались в кружок лесорубы, решили ее испытать.
Завели ее, подсунули ей деревце.
«Вжик» — сказала японская пила.
«У, бля...» — сказали лесорубы.
Подсунули ей деревце потолще. «Вж-ж-жик!» — сказала пила.
«Ух, бля!» — сказали лесорубы.
Подсунули ей толстенный кедр. «ВЖ-Ж-Ж-Ж-Ж-Ж-Ж-ЖИК!!!» — сказала пила.
«Ух ты, бля!!» — сказали лесорубы.
Подсунули ей железный лом. «КРЯК!» — сказала пила.
«Ага, бля!!!» — укоризненно сказали суровые сибирские лесорубы! И ушли рубить лес топорами…

291 5 ноя, 21:23 291 1514057

>>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>>, либо ансейф.
Ты хотя бы Книгу прочёл, или сразу пошёл код хуярить?

Ответы514082514116

292 5 ноя, 21:43 292 1514082

>>1514057
>у тебя есть
У меня есть плюсовый код ndk приложения для ведроида с кучей unsafe вызовов к api ведроида и коллбэков, как завязанных на api, так и чисто внутренних.
Сейчас я просто решил внутренний коллбэк переписать в растовом стиле, без этих *mut ctx и прочей жути.
Можно, конечно, переосмыслить и переписать раставейно, но я бы предпочёл сперва получить рабочий вариант, а уж потом его переосмыслять.
И да, книг не читал, т.к. у меня в голове так ничего не откладывается. В режиме поиска ответов на возникающие вопросы оно как-то лучше прёт.

Ответы514116

293 5 ноя, 21:46 293 1514090

Кто-то когда-то юзал в своей практике double linked list? Я вот - нет.

Ответы514122

294 5 ноя, 21:58 294 1514116

>>1514082
То есть, вместо того, чтобы тыкать во врага копьём, ты пытаешься руками затупить наконечник, чтобы потом можно было махать как дубиной? Как же был прав анон с анекдотом про лесорубов.
Короче, либо листаешь быстренько Книгу, особенно внимательно читая семнадцатую главу, либо пиздуешь писать на том языке, который уже знаешь. Если не хочешь Книгу, то читай rust by example, там та же книга, но в виде комиксов.
А если вообще ничего не хочешь читать, то либо дай уже ссылку на то, что ты реально хочешь сделать, либо пихай селф-референс через ансейф Pin, либо делай как тут написано >>1514057

295 5 ноя, 22:07 295 1514122

>>1514090
Начиная от юзерской и крудовой хуиты (любое приложение со списком: плеер/контакты/список дел, любое приложение с вкладками: браузер/файловый манагер/консоль, любое приложение где нужно undo-redo: текстовый редактор/wyswig редактор/редактор таблиц, любая круд залупа в конце-то концов и тд), проходя байтойобство (любой GC, любой тред манагер, любая система сборки и тд), и заканчивая хуай-теч еботой (любой конпелятор, любая распределёнка, любая jit-вм). Вот нигде, блядь, не нужная структура данных. Я хз вообще что ты там можешь писать.

Ответы514125514195

296 5 ноя, 22:09 296 1514125

>>1514122
Перечитал, и понял что с GC перегнул, там односвязным все обходятся, ладно.

297 5 ноя, 22:14 297 1514129

>>1513367
Ну, в плюсах и сях, в отличие от раста, списки обычно все делают руками (или юзают буст, если он уже есть в проекте), ибо неинтрузивный список = 2x оверхед от ожидаемого, и std::list персона нон грата в любом проекте, так что сравнивать странно.

Кстати, а во что разворачивается растовый LinkedList? Хранит ссылку как std::list или инлайнит данные? Вангую что первое, и в расте по-хорошему так же надо делать сырые списки руками, гыг.

Ответы514164514170

298 5 ноя, 22:46 298 1514158

>>1513585
Лень гуглить, как выглядят генерики в расте? Просто указываешь от чего наследовать шаблонный параметр?
В джаве ебанина какая-то переусложнённая

Ответы514162514170514199

299 5 ноя, 22:47 299 1514162

>>1514158
Ну так генерики джавы придумал Одерски (автор скалы), оттуда и type erasure, и прочая околоакадемическая ебанина.

300 5 ноя, 22:49 300 1514164

>>1514129
> Хранит ссылку как std::list
Как там в С++03? У нас тут в будущем появились операторы перемещения и прочие ништяки.

Ответы514182

301 5 ноя, 22:53 301 1514170

>>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 — любой тип, позволяющий производимые операции. Выглядит так, работает чуть иначе, чем выглядит.

Ответы514182

302 5 ноя, 23:05 302 1514182

>>1514164
https://baptiste-wicht.com/posts/2012/12/cpp-benchmark-std-list-boost-intrusive-list.html
Ну такое.
>>1514170
>Это вроде как интрузив.
Это вроде как набор слов.
>структура из данных и двух указателей
Если данные таки лежат отдельно — то это не интрузив нихуя.

Ответы514191

303 5 ноя, 23:15 303 1514191

>>1514182
А что ты хочешь? Какую-нибудь ультра-ансейф
mem::transmute<Node, T>(node)
структуру вообще без обозначения этой структуры, чтобы какие-то байты там отвечали за данные, а какие-то за указатели, но процессор при этом вообще бы не знал, какие там данные за что отвечают? Иди читай repr(rust) главу в номиконе, тебе и так компилятор оптимизирует всё то, что по стандарту С не оптимизируется, а ты хочешь какую-то магию ебаную, которую даже на ассемблере не сделать.

Ответы514210

304 5 ноя, 23:16 304 1514193

Ребят, подскажите, что я делаю не так.

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

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

Где теперь искать heap? Очень нужно выделять куски памяти произвольного размера простым api.

Ответы514202

305 5 ноя, 23:16 305 1514195

>>1514122
Немного неясно выразился. Я говорил не о списке, как он определяется в линейной алгебре, а о структуре данных «двусвязный список» с O(1) добавлением/удалением в конец/начало/середину и с возможностью обратного прохода по списку. Ни разу не встречал еще необходимости именно в полном списке этих свойств. Всегда список можно было заменить на односвязный или на банальный массив

Ответы514204514210

306 5 ноя, 23:19 306 1514199

>>1514158
Смотри обсуждение выше по треду. Вкратце - дженерики тут охуенные. И баунды, которые тебе не нравятся в джавовских дженериках есть в расте. Как и в С++20, лол

307 5 ноя, 23:19 307 1514202

>>1514193
Был box кейворд, но его так и не стабилизировали. Смотри функции вот тут
https://doc.rust-lang.org/alloc/alloc/index.html
Или в std::alloc
В коре аллока нет, если ты микропроцессор через core пишешь.

Ответы514207

308 5 ноя, 23:23 308 1514204

>>1514195
Ещё один блядскую магию хочет. В любую точку списка тебе O(1) не вставит, потому что дойти до этой точки по указателям — O(N). O(1) только туда, куда у тебя уже есть указатель. Обычно это начало и конец.

Ответы514215

309 5 ноя, 23:24 309 1514207

>>1514202
Ну т.е. мне нужно смотреть в сторону функции alloc_array и юзать ее для u8, если я хочу получить аналог malloc из c, я правильно понимаю?

Ответы514212

310 5 ноя, 23:27 310 1514210

>>1514191
Я хочу, чтобы данные просто лежали в памяти вместе с ссылками. Для понимания: в плюсах для этого просто наследуются от класса с ссылками и всем остальным. В расте способов замутить такое (кроме макросов, которые ниебически раздуют код) как я понимаю, нет?

>>1514195
Ну так перечитай моё сообщение, я тебя правильно понял, и все примеры в том посте именно о структуре данных, лол. Как ты что угодно с undo-redo/вперёд-назад или lru без него замутишь?

Ответы514214

311 5 ноя, 23:28 311 1514212

>>1514207
https://doc.rust-lang.org/std/alloc/struct.System.html#method.alloc
В душе не ебу, пока что никогда руками память не выделял, кроме всяких стековых векторов. Но там же доки охуенные, всё описано.

312 5 ноя, 23:31 312 1514214

>>1514210
Ты ёбнулся? Я тебе дал ссылку на сорцы, рассказал, что структура для данных хранит в себе не только данные, но и два указателя. А ты начал пиздеть, что не интрузив. А что тебе тогда интрузив, ебанутый?

Ответы514227

313 5 ноя, 23:31 313 1514215

>>1514204
Маня, вставлять в список можно, имея итератор. Совсем необязательно идти в место ставки, чтобы вставить/удалить элемент

Ответы514217514218

314 5 ноя, 23:33 314 1514217

>>1514215
Это ты про итератор который может инвалидироваться и ты начнешь писать хуй пойми куда? Классические кресты?

315 5 ноя, 23:36 315 1514218

>>1514215
Это в том списке, в котором указатели не в структуре с данными, а в массиве на стеке лежат. А в нашем тебе надо по куче бегать по указателям: берёшь ячейку, берёшь из неё указатель, берёшь по нему следующую ячейку, берёшь из неё указатель... И так пока не найдёшь нужную ячейку.

316 5 ноя, 23:46 316 1514227

>>1514214
Пока пиздел тут, загуглил типы данных раста, и понял что это не интрузив лист нихуя.

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

Ответы514232514234514236

317 5 ноя, 23:57 317 1514232

>>1514227
PhantomData — не ссылка, а структура с нулёвым размером, которая просто говорит компилятору, что у нас тут Box<T>, а не Option<NonNull<T>> (который и есть Box<T>, что я тебе в самом первом посте объяснил. И нет, у нас тут не C, где нулёвые структуры занимают 1 байт, у нас раст, где нулёвые структуры занимают 0 байтов).
И если ты мне сейчас не скажешь, как ты хочешь, чтобы выглядел псевдо-байткод, то я с тобой разговаривать не буду больше. А когда ты мне покажешь байткод, я тебе скажу, что он точно так же выглядит в расте (и даже лучше в большинстве случаев, потому что компилятор сам оптимизирует расположение элементов в структуре, а твои кресты с обратной совместимостью так не могут).

Ответы514247

318 5 ноя, 23:58 318 1514234

>>1514227
>а в первом
во втором

6 Кб, 437x148
319 6 ноя, 00:00 319 1514236

>>1514227
Да ёптваю мать. На пике структура Node. Она содержит в себе две ссылки и объект (НЕ ССЫЛКУ НА ОБЪЕКТ, БЛЯТЬ). Как только мы дошли до ноды, нужные данные лежат ровно на 16 байт ниже этой ноды (А НЕ В РАНДОМНОМ МЕСТЕ, БЛЯТЬ).

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

Ответы514247514254

320 6 ноя, 00:14 320 1514247

195 Кб, 1800x98436 Кб, 600x400

>>1514232
>>1514236
Блять, я всё это время смотрел на структуру LinkedList вместо Node, и понял это только когда посмотрел на LLVM IR.

Извини, антоша, что порвал тебе жепу, я не специально.

Ответы514251

321 6 ноя, 00:19 321 1514251

>>1514247
А еще я прочитал-таки твою ссылку:
>For the intrusive list variations, the data are entered into a vector and then pushed back to the intrusive list.

Оказывается вызывать malloc один раз - это быстрее, чем вызывать его один раз. Удивительные открытия.

Ответы514253

322 6 ноя, 00:20 322 1514253

>>1514251
>чем вызывать его один миллиард раз

323 6 ноя, 00:21 323 1514254

>>1514236
Не факт. Оптимизация компилятора таки может сунуть любое поле структуры куда захочет.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=1c4650ca4dad0d7a327689e4e495785a

Ответы514371

324 6 ноя, 07:36 324 1514371

>>1514254
Наверняка есть какая-то штука, типа no_mangle, чтобы так не сувал.

Ответы514398

325 6 ноя, 10:25 325 1514398

>>1514371
repr(C) называется. Вот только ты уверен, что разберёшься с памятью лучше конпеля? Эта структура без оптимизации занимает на четыре байта больше.

Ответы514404

326 6 ноя, 10:35 326 1514404

>>1514398
Забыл пример добавить.
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=da3ad6bc2e93e16b2fb29aa6be6e6e35

Ответы514424523128

327 6 ноя, 11:14 327 1514424

>>1514404
Сударь, ваша карта бита
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=860789dcb2dd6ffa5685487377bcdafc

да, читал про подводные камни

Ответы514430514435

328 6 ноя, 11:34 328 1514430

>>1514424
Ты же знаешь, что packed просто так работать не будет? Что это ансейф для процессора, и каждый раз, когда ты что-то делаешь с запакованной структурой, ты должен чётко понимать, что делаешь?
https://doc.rust-lang.org/nomicon/other-reprs.html#reprpacked

Ответы514438

329 6 ноя, 11:40 329 1514435

>>1514424
А ещё, у меня в твоём примере поменялись местами "aaaa" и "cccc". Так что не бита.

Ответы514438

330 6 ноя, 11:55 330 1514438

>>1514435
>поменялись местами "aaaa" и "cccc"
Справа налево, от младшего бита к старшему
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=03c41a0e7b3b95adbcb4b8e635522ae9

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

331 6 ноя, 12:39 331 1514460

Бля, сук, сильно не пинайте, но вона, чего наваял.

https://play.rust-lang.org/?version=nightly&mode=debug&edition=2018&gist=c396822b2e2cfaf9dff8da2987582799

даже не знаю, что хуже - это, или обёртывания Rc<RefCell<...

Ответы514463514475

332 6 ноя, 12:41 332 1514463

>>1514460
а, да, это найтли, но и похуй. В стейбл арифметику указателей не завезли, но куда без неё - рано или поздно этот ptr_offset_from или что-то наподобие стабилизируют.

Ответы514475

333 6 ноя, 12:56 333 1514475

>>1514460
Поздравляю! Выглядит так себе, но если работает, то хули тут.
>>1514463
Может и завезут, но она в расте не нужна, если ты не с FFI работаешь.

24 Кб, 300x441
334 7 ноя, 19:25 334 1515687

Асинк-эвейт завезли в стейбл!

Ответы515710

335 7 ноя, 19:41 335 1515710

>>1515687
Уже много часов как. И картинку твою лучше под было кинуть под эту ссылку:
https://tokio.rs/blog/2019-10-scheduler/

336 8 ноя, 09:22 336 1516072

О, переделал метод из fn в async fn - и оно без задней мысли сконпелировалось. И что, даже работать будет?
Это я всё с переписыванием с крестов - в крестах для вызова этого метода аж поток форкался.

Ответы516112

337 8 ноя, 10:27 337 1516112

>>1516072
Откуда мы можем знать, будет ли оно работать, если мы не знаем, что должно работать? Но вообще, да, должно. Async возвращает Future, которая сама по себе ничего не делает. Чтобы она что-то сделала, надо её выполнить. Но вот когда ты будешь её выполнять, это уже сам решай.
https://rust-lang.github.io/async-book/01_getting_started/04_async_await_primer.html

Ответы516122

338 8 ноя, 10:55 338 1516122

>>1516112
Вот, эт самое, а можно её выполнить без блокировки? Ну, тип, надо мне записать файл - чтобы оно там как-нибудь пошло записываться, а выполнение дальше пошло.

Ответы516130516131516143

339 8 ноя, 11:12 339 1516130

>>1516122
Для этого нужен экзекутор, в std его пока еще нет.

https://docs.rs/tokio/0.2.0-alpha.6/tokio/

340 8 ноя, 11:14 340 1516131

>>1516122
https://docs.rs/futures/0.3.1/futures/executor/index.html

341 8 ноя, 11:39 341 1516143

>>1516122
А зачем тебе async, если тебе просто в файл записать что-то надо? Не проще заспавнить тредак, который этот файл обработает? А если тебе надо убедиться, что два тредака не полезут в один файл, то там всё равно будут блоки, вроде FIFO очереди с задачами, где следующая выполняется после того, как предыдущая вернула некое Ok(imma_done).

Ответы516161

342 8 ноя, 12:20 342 1516161

>>1516143
>Не проще заспавнить тредак
Дак там у меня полно raw пойнтеров, а с ними "cannot be sent between threads safely".

Ответы516169

343 8 ноя, 12:30 343 1516169

>>1516161
https://doc.rust-lang.org/stable/std/?search=from_raw
Выбираешь нужный тип и вперёд. А если тебе нужен не смартпоинтер, а тупо атомик примитив, то выбираешь из этих
https://doc.rust-lang.org/stable/std/sync/atomic/index.html
и создаёшь этот атомик из значения своего рав поинтера.

Ответы516171

344 8 ноя, 12:31 344 1516171

>>1516169
О, лол, я даже не заметил, что там есть AtomicPtr, который как раз рав поинтер, но Send.

345 8 ноя, 20:24 345 1516501

В-обсчем, аноны, соснул я с тредами.
Что так через тупо вызов треда, что эдак через async & LocalSpawn - получаю 'Unable to spawn: SpawnError("shutdown")' даже на вызове пустой функции-заглушки без параметров.
Надо попробовать воспроизвести на чистом примере и багулю куда-нить репортнуть.
И да, это я всё под ведроид корячу.

Ответы516561

346 8 ноя, 21:53 346 1516561

>>1516501
Короч, завелось асинхронное сохранение. Сделал тред, в который передаю AtomicPtr (спасибо, аноний), до этого передавал слайсом, который получал через from_raw_parts. Но, что странно, версия с LocalSpawn вылетела вообще без передачи каких-либо параметров. Но это, мож я проглючил и затестил старый бинарь.
Можете меня поздравить, у меня теперь есть рабочая аппликуха, представляющая собой переписанный пример камеры отсюда https://github.com/android/ndk-samples/ (я взял texture-view и добавил в него функционал съёмки и сохранения из basic)
Осталось теперь работу найти.

Ответы516565517746

347 8 ноя, 22:01 347 1516565

>>1516561
Ссылок и примеров реального кода не будет? Да и переписывать что-то на раст, балуясь ансейфом и голыми указателями просто так, а не ради оптимизации — так себе затея.
А ещё, я проебался немного по поводу AtomicPtr, он Sync, а не просто Send.

Ответы516759

348 9 ноя, 08:19 348 1516759

>>1516565
>Да и переписывать что-то на раст, балуясь ансейфом и голыми указателями просто так
Это я пока только пример переписал, дальше буду делать из него полноценное приложение. Буду брать за него деньги и жить на острове в гареме с наташками. Если не фартанёт, то выложу в попенсорс.

Что касается голых указателей - без них никак, так как там идёт очень плотное взаимодействие с API.

349 10 ноя, 14:48 349 1517746

>>1516561
А не проще на Kotlin писать, зачем на андроиде раст?

Ответы517752517786518129

350 10 ноя, 14:57 350 1517752

>>1517746
Смотря где. На андроиде проще, на ios не проще, в хайлоаде проще.

Ответы517754

351 10 ноя, 14:58 351 1517754

>>1517752
В хайлоаде проще на расте
Самофикс

352 10 ноя, 15:24 352 1517786

>>1517746
Ну, для всякой риалтайм залупы-то даже на андроиде выбор из плюсов или раста.

Ответы517800

353 10 ноя, 15:34 353 1517800

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

Ответы517806

354 10 ноя, 15:42 354 1517806

>>1517800
Ну хочет написать имиджпроцессинг/игровой движок/кроссплатформенный гуй на (без гб памяти на старте) — пусть пишет. Низкоуровенных библиотек (тем более на мобилках, часах итд) всегда поле непаханное, тем более что всё дырявое как ебаное сито (что ведро что айос). Я хз чего ты доебался.

355 10 ноя, 22:08 355 1518129

>>1517746
Мне ko-ko-kotlin не интересен, в отличие от раста. С другой стороны - писать хайлоад-сервисы в качестве домашнего проекта не интересно, а вот приложуху - оче даже. Так что, в лучшем случае у меня будет приложение и прокачка в расте, в худшем - только прокачка.

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

Ответы518138

356 10 ноя, 22:26 356 1518138

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

Я не к тому, что раст не нужен, просто интересно зачем тебе он понадобился на андроиде.

Ответы518151

357 10 ноя, 22:37 357 1518151

>>1518138
>либы готовые, с NEON-оптимизациями
Для обработки пикселей есть renderscript или vulkan, если уже по-большому ходить.

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

358 11 ноя, 10:59 358 1518457

Аноны, а есть какой-нибудь парсер раста в виде отдельного крейта? Чтобы можно было вытащить все сучности из кода, функции там, их параметры и проч. Для чего:
есть куча ffi функций вида ACaptureRequest_setEntry_rational , ACaptureRequest_setUserContext и т.д., которые принимают первым параметром "request: *mut ACaptureRequest" - хочу через build.rs нагенерить для этого всего обёрток, чтобы автокомплит работал.

Ответы518472518804

359 11 ноя, 11:26 359 1518472

>>1518457
Сам нашёл, syntax::parse

360 11 ноя, 19:19 360 1518804

>>1518457
Юзай обычный стек для процедурных макросов: proc_macro2 + syn + quote. Покроешь все кейсы.

361 13 ноя, 20:18 361 1520396

Посаны, а это правда, что если раст выстрелит и будет везде юзаться в системщине, то хацкеры вымрут как вид, ибо нечего будет эксплоитить? Или это маняфантазии?

Ответы520400520405

46 Кб, 1080x1076
362 13 ноя, 20:21 362 1520400

>>1520396
>маняфантазии
This.
Даже если всё переписать на руст, unsafe процессор всё равно вылезет и начнётся: meltdown, spectre, хуектер. А если мы закатаем процессор в ещё 3 виртуальных процессора, то начнутся дырявые сетевые протоколы. А потом, когда и их залатаем, для пущей безопасности надо хотя бы размещать датацентры в космосе будет.

363 13 ноя, 20:24 363 1520405

>>1520396
В скриптах (пхп, питон), жаве (и остальном поверх жвм) итд находят уязвимости.

Ответы520462

364 13 ноя, 21:28 364 1520462

>>1520405
Там узявимости тащем-то уровня "на си написали, а тут — бац — и буфер оверфлоу".

Ответы520486

365 13 ноя, 22:36 365 1520486

>>1520462
Тащем-то нет.

Ответы520558

366 14 ноя, 00:53 366 1520558

>>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).

Ответы520564520571

367 14 ноя, 01:27 367 1520564

>>1520558
Я тебе про другое.

https://www.cvedetails.com/vulnerability-list/vendor_id-2337/product_id-4096/ даже наличие манажед языка не избавляет от проёбов.

368 14 ноя, 01:40 368 1520571

>>1520558
>gdImageScaleBilinearPalette
Как раст спасет от ошибок в сишных либах? Или ты предлагаешь все окружение на расте переписать? К тому же сейчас можно пересобрать либы с защитой стека, и ROP-ы не так страшны как раньше.

Ответы520573

369 14 ноя, 01:59 369 1520573

>>1520571
Ну так эта ветка диалога и началась с фразы "а шо если всё переписать на руст"?
>К тому же сейчас можно пересобрать либы с защитой стека
Ведь все в мире аутисты гентушники, и собирают под себя весь мир.

Ответы520575

370 14 ноя, 02:03 370 1520575

>>1520573
>Ведь все в мире аутисты гентушники, и собирают под себя весь мир.
Если тебе безопасность важна, то это сделать гораздо проще, чем переписать все окружение на другом языке.

Ответы520585

371 14 ноя, 02:56 371 1520585

>>1520575
А потом повторять для каждой версии 0.0.0.1 a/b/c/d?

Ответы520586

372 14 ноя, 03:06 372 1520586

>>1520585
Проще поставить hardened дистрибутив, где все уже собрано.

373 14 ноя, 11:49 373 1520777

Аноны, какой же пиздец.
https://github.com/rust-lang/rust/issues/28687
только у меня эта хуйня всплыла и сразу нагуглилось.

374 14 ноя, 12:10 374 1520809

Аноны, ecть одна строка, которую нужно проматчить.. Все уже напряглись, я чувствую. Её нужно проматчить другой, сука, строковой переменной. Это вообще возможно?

Ответы520815

375 14 ноя, 12:13 375 1520815

>>1520809
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=9efe69b12d61db429d3ffe19ef22252b

Ответы520997

376 14 ноя, 14:44 376 1520997

>>1520815
Вот оно что, михалыч.

377 15 ноя, 20:30 377 1522042

Аноны, чего притихли? Давайте, хвалитесь, чего за неделю накодили.
Я, вот, распарсил через ебаный syn не, ну на кой мне в ast запятые со стрелочками? Бошку сломал, пока структуру разгреб выхлоп bindgen и сделал симпатичную обёртку поверх андроидных структур. Навряд ли это где-то ещё пригодится, так как в андроиде оче удобно это всё поименовано: СтруктураНейм_методНейм, но мне должно помочь.

Ответы522665

378 16 ноя, 15:56 378 1522665

>>1522042
Я всю неделю ходил на работу и массаж/лфк. Мне сейчас не до наворачивания своих проектов на расте в свободное время

379 17 ноя, 04:02 379 1523018

Ананасы, зачем в расте unsafe? Ведь если не пихать код в ансейф вообще, то его будет невозможно взломать, 0 шансов на переполнение стэка/кучи/использования данглинг поинтера и т.п.
Или есть подводные? Ну или как всегда "хуяк-хуяк и в продакшн" превыше всего?

Ответы523062523128523454

380 17 ноя, 08:53 380 1523062

>>1523018
unsafe иногда дает такие возможности, что-бы которые реализровать в сейв нужно затратить куча ресурсов.

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

еще удобно писать сейф враперы под С либы из ансейв кода.

Ответы523063523093

381 17 ноя, 08:53 381 1523063

>>1523062
> u16
u32

fix

382 17 ноя, 11:53 382 1523093

>>1523062
>скопировать цвет из u16 в
уже есть to_be_bytes/to_le_bytes. А вот обратно пока вроде ансейф.

>удобно писать сейф враперы под С
Взаимодействие с сишным кодом - в принципе unsafe. Какой-то, хуй его знает откуда полученный, указатель, а ты его хуяк - и дереференсишь в конкретную структуру. Смысл в том, что если на этом месте у тебя сегфолт наебнёт, то ты сразу знаешь, куда копать.

383 17 ноя, 13:03 383 1523128

>>1523018
Затем, что раст — системный язык. Собственно, этим всё сказано. Но если ты хочешь примеров, то пожалуйста.
Имплементить Send и Sync для кастомной структуры — ансейф. Либо не балуешься кастомными структурами, которые не ловят Send и Sync автоматом, что охуеть какое ограничение, либо сосёшь лапу.
Голые указатели. Тут даже говорить ничего не буду, потому что растовая ссылка — голый указатель с обёрткой лайфтайма для компилятора.
Всякие страшные байтоёбища, тот же mem::transmute, что иногда очень удобен, но очевидно, что сейф трансмута не было и не будет никогда. Вот тебе пример, где без трансмута хуй обойдёшься: >>1514404

384 17 ноя, 18:47 384 1523454

>>1523018
Без ансейфа ты сможешь... ты не сможешь написать ничего. Тебе все равно нужен IO, взаимодействие с внешними либами, а оно by design unsafe, так как хуй пойми откуда там появляются указатели, как работают функцуии и т.п. То есть ты даже hello world не напишешь без unsafe, строго говоря.

Альтернативой может быть разве что ОС и весь софт, написанный на расте, работающий поверх архитектуры, в которой раст это машинный язык (ведь мы понимаем, что использование ассемблерных вставок это тоже unsafe, да?).

385 17 ноя, 22:46 385 1523687

1

Тред утонул или удален.
Это копия, сохраненная 18 ноября 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion