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

Ответить в тред Ответить в тред
Check this out!
Rust #15 /rust/ Аноним 14/12/20 Пнд 12:22:54 18801221
16017693841350.png 37Кб, 732x467
732x467
evangelism.jpg 242Кб, 1200x859
1200x859
redditsave.com-[...].mp4 2461Кб, 632x360, 00:00:22
632x360
dvach-01.webm 10684Кб, 1920x1056, 00:00:19
1920x1056
Аноним 14/12/20 Пнд 12:31:26 18801332
Аноним 14/12/20 Пнд 12:45:16 18801463
Аноним 14/12/20 Пнд 13:28:11 18801804
Аноним 14/12/20 Пнд 13:46:10 18801925
16070095171910.jpg 95Кб, 1062x1062
1062x1062
Аноним 14/12/20 Пнд 14:53:02 18802236
Аноним 15/12/20 Втр 04:11:20 18808777
>>1880080 →
Строки это фундаментальный тип. Просрав его, в каком-нибудь вебе, начинается бесконечная пляска конвертаций.
Аноним 15/12/20 Втр 10:37:29 18809538
>>1880877
Но мы не в вебе, и разница между иммутабельной строкой c известном размером, и контейнером с динамически аллоцируемой хуйней есть.

И нельзя от неё избавиться, потому что изобретут что-то своё костыльное
Аноним 15/12/20 Втр 21:39:04 18814339
Товарищи, да здравствует раст - самый лучший в мире язык!
Аноним 16/12/20 Срд 13:26:18 188181710
shtolle.jpg 9Кб, 480x360
480x360
Аноним 16/12/20 Срд 14:11:47 188187611
Почему нельзя переименовать rust? Я, да и думаю, что не только я, уже заебался гуглить по нему что-нибудь, и получать в выдачу гайды по этой ебанной игре для дебилов.
Аноним 16/12/20 Срд 14:17:53 188188212
>>1881876
А go тебе не смущает? Или c? Пишешь rustlang в поисковом запросе и нет проблем.
Аноним 16/12/20 Срд 15:18:18 188192313
>>1880953
>Но мы не в вебе
Еще один узко-велосипедный язык, ну нафига?

>разница между иммутабельной строкой c известном размером, и контейнером с динамически аллоцируемой хуйней есть
Давно уже придумали решение неизменяемых строк и отдельных билдеров. Я еще уверен что не бесплатно стоит пройтись по utf-8 символов за аскии.
Аноним 16/12/20 Срд 15:24:19 188193414
>>1881923
String это и по сути и есть билдер, в чем твоя проблема?
Аноним 16/12/20 Срд 21:57:29 188217915
Аноним 16/12/20 Срд 22:24:55 188220916
Аноним 16/12/20 Срд 22:27:50 188221217
Аноним 16/12/20 Срд 22:28:42 188221318
Аноним 17/12/20 Чтв 04:44:33 188238819
>>1881934
В том что нафиг такой билдер нужен. Нужна нормальная строка, чтобы я с юникод мог взять первый или последний символ по человечески, а не только аскии, чтобы не конвертить туда сюда, потому что авторам пригрелся слайс.
Аноним 17/12/20 Чтв 11:40:07 188252720
Аноним 17/12/20 Чтв 12:04:02 188254521
>>1882527
> получать последний символ ни капли не o(1)
Почему? У чаров же фиксированный размер.
Аноним 17/12/20 Чтв 12:13:41 188255322
Аноним 17/12/20 Чтв 12:52:38 188257923
>>1882527
Строго говоря, в каноничном UTF-8 таки O(1), потому что границы чаров точно определяемы, просто там чуть сложнее индексовой операции.

>>1882545
Нет. В UTF-8 у чаров переменный размер от одного до четырёх байтов, но чары кроме аскии на хуй не нужны никому, потому что в любых языках с умлаутами или ещё какой-нибудь дрянью, одна и та же буква может быть как одним чаром, так и не одним чаром, но их надо обрабатывать как одну и ту же букву. Короче, строки кроме аскии это такая ебля, что ты охуеешь, если в эту нору полезешь.
Аноним 17/12/20 Чтв 12:56:05 188258324
>>1882579
Да, чтобы меня не захейтили за O(1), уточню, что это только последний чар в строке, N-ый чар в строке найти только за O(n), разумеется.
Аноним 17/12/20 Чтв 13:01:43 188258925
>>1882579
Лол, ну ты и выдал. То есть пол миллиарда европейцев идут нахуй, китайцы идут нахуй, арабы идут нахуй, русские идут нахуй. Все идут нахуй, кроме американцев и прочих британцев, и то при условии что они не пользуются смайликами.
Аноним 17/12/20 Чтв 13:54:18 188266426
>>1882579
> В UTF-8 у чаров переменный размер от одного до четырёх байтов
В расте чар всегда 4 байта.
Аноним 17/12/20 Чтв 18:11:50 188291027
>>1882527
Строки это не сложно когда это последовательность (список) в utf-16 (в два и четыре байта).
Аноним 17/12/20 Чтв 18:42:12 188293428
>>1882583
>дебил не понимает асимптотику
Аноним 17/12/20 Чтв 19:00:28 188295429
>>1882910
Проще пилить на слайсы, всё остальное в них так же сложно
Аноним 17/12/20 Чтв 22:27:45 188308830
Так поясните мне чем эта параша лучше с++20?
Аноним 17/12/20 Чтв 23:09:01 188311431
Аноним 17/12/20 Чтв 23:30:14 188312432
>>1883088
Модули завезли? А человеческие sum types?
Аноним 18/12/20 Птн 05:32:29 188326033
jane-lane-daria[...].jpg 68Кб, 728x546
728x546
>>1883088
Тем, что все унижения на этапе компиляции, а не на проде субботней ночью.
Аноним 18/12/20 Птн 13:41:14 188342134
16032070614600.png 226Кб, 640x596
640x596
Аноним 19/12/20 Суб 00:45:54 188423335
Чет я не понял, вот есть типа crate иммутабельных струтур данных - https://docs.rs/im/15.0.0/im/

И что мы там например видим: https://docs.rs/im/15.0.0/im/struct.Vector.html#method.push_front

push_front мутирует вектор, а не, как я ожидал, создает новый вектор с добавленным элементом. Другие методы вектора все тоже мутирующие. А где иммутабельность-то? Или я что-то не понимаю?

Аноним 19/12/20 Суб 01:36:14 188427436
>>1884233
Скорей всего где-то глубоко запрятан copy-on-write.
Попробуй вывести адрес такого вектора до пуша и после
Аноним 19/12/20 Суб 18:20:43 188475637
>>1884274
ну блин, херня какая-то, почему вообще в языке, в котором по дефолту всё иммутабельное, коллекции полностью мутабельные? где нормальные иммутабельные коллекции-то взять?
Аноним 19/12/20 Суб 18:24:14 188475938
>>1884756
Ты сначала объясни зачем тебе иммутабельные коллекции.
Аноним 19/12/20 Суб 19:17:29 188480439
>>1884756
Вот именно что коллекции по дефолту иммутабельные. Не веришь - попробуй мутировать vec, объявленный без mut. Система типов просто не позволит тебе получить мутабельную ссылку на внутренности контейнера через иммутабельную.
Аноним 19/12/20 Суб 19:31:54 188482140
>>1884759
А зачем все переменные по дефолту иммутабельны? Ровно во за этим. Раз уж делается в языке упор на иммутабельность, то и добавили бы для коллекций иммутабельные операции. А так получается коллекции без mut практически бесполезные, с ними ничего толком не сделать. Это как если бы у целочисленных переменные убрать оператор + и оставить только +=. Та же самая картина была бы
Аноним 19/12/20 Суб 19:32:45 188482241
>>1884804
ты сейчас про систему типов говоришь, а я про предоставляемые коллекциями операции, которые все мутабельные
Аноним 19/12/20 Суб 19:37:21 188482342
>>1884821
Ты попутал с кложурой или хаскелом. Упор делает не на иммутабельность, а на контроль над тем кто может мутировать данные, а кто нет. И за отслеживанием того, кто и когда владеет объектом. И конечно же перформанс.
Аноним 19/12/20 Суб 19:42:13 188482843
>>1884823
>
>Упор делает не на иммутабельность, а на контроль над тем кто может мутировать данные, а кто нет.

Ок, допустим, зачем тогда по дефолту делать все переменные иммутабельные?
Аноним 19/12/20 Суб 19:55:48 188483744
>>1884828
Потому что есть опыт с++, где все переменные по дефолту мутабельные и когда народ догнал что большая часть данных как раз таки не должна меняться, оно превратилось в const foo(const) const. Короче, по дефолту ты получаешь минимум возможностей, но если тебе прям точно нужна мутабельность, ты можешь ее попросить.
Аноним 20/12/20 Вск 02:03:59 188511945
Почему у раста либа такая большая ~3.5mb, что туда понапихали? даже у плюсов в два раза меньше, а там дохрена стандартов понапихано.
Аноним 20/12/20 Вск 02:13:06 188512246
>>1885119
Человеческие итераторы, например.
Аноним 20/12/20 Вск 02:14:33 188512447
>>1885122
у меня единственный вариант, что что-то для локалей, потому что явно не итераторами настолько раздули std
Аноним 20/12/20 Вск 02:18:17 188512648
Аноним 20/12/20 Вск 02:18:49 188512849
>>1885126
By default, Rust optimizes for execution speed rather than binary size, since for the vast majority of applications this is ideal. But for situations where a developer wants to optimize for binary size instead, Rust provides mechanisms to accomplish this.

Отклеилось.
Аноним 20/12/20 Вск 02:20:05 188512950
>>1885126
молодец, сам понял, что принес? Как выкинуть одну и заменить другой или просто не использовать.
Аноним 20/12/20 Вск 02:45:57 188513851
Аноним 20/12/20 Вск 02:48:36 188514052
>>1885138
Еще боевую картиночку скинь. Ты сам прочитал, что там написано?
Аноним 20/12/20 Вск 02:54:35 188514253
8a89n02l45n51.jpg 60Кб, 570x659
570x659
Аноним 20/12/20 Вск 03:31:34 188515454
>>1885119
>Почему у раста либа такая большая ~3.5mb, что туда понапихали? даже у плюсов в два раза меньше

Да ты охуел? У плюсов она в 50 килобайт поместится
Аноним 20/12/20 Вск 08:13:48 188518855
>>1885119
Разве плюсы не всегда славились тем что у них в стандартной либе почти нихуя нету?

файловыую систему в 17 завезли? треды в 11?
Аноним 20/12/20 Вск 08:34:35 188519756
>>1884822
А, понял. Нет, этого в стандартной либе нет и, скорее всего, не будет. Кмк, это связано методом управления памятью - без сборщика мусора трудно переиспользовать старые значения, а значит, хардкорная функциональщина будет тормозить за счет постоянного выделения-освобождения памяти. Крейт im и тому подобные в помощь.
Аноним 20/12/20 Вск 09:14:49 188521157
>>1885119
Возьми cargo-bloat и посмотри, что понапихали. Я вот посмотрел и увидел, что даже без извращений с размером кода всё ок.

У хеллоуворлда (280КиБ) - https://pastebin.com/7q1f53gZ - большая часть жира из-за обработчика крашей, он тянет за собой печать бэктрейса и полный набор форматтеров текста. Сейчас в расте что-то сломали и убрать его нельзя.

Кроме того, если уж сравниваешь раст с плюсами, то не забывай, что у плюсов стандартная библиотека обычно линкуется динамически. Включишь статическую линковку - плюсы выдадут тебе 1,8МиБ отборного говна - https://pastebin.com/cYCt8rvN. Даже чистый C сейчас выдает по 700КиБ кода.

Кмк, ни то, ни другое сейчас не важно. Вот Swift for linux, который тебе из ничего сделает 30МБ бинарник - это пиздец.

Если и следует о чем-то беспокоиться, так это о скорости сборки - с ней всё плохо :(
Аноним 20/12/20 Вск 10:01:23 188522758
>>1885154
>>1885188
> Да ты охуел? У плюсов она в 50 килобайт поместится
у плюсов 1-1,5mb в зависимости от платформы: на ведроиде ~1, на винде ~1,5
>>1885211
я же не в том ключе сравниваю. Я лишь хотел узнать, что там раздуло либу до 3,5 и нельзя ли отключать ненужные в проекте часте, а не так, что отрубать прямо все и сразу типа no_std
просто подумал, что может там модульная структура и можно не тянуть все, а только нужные модули
Аноним 20/12/20 Вск 10:07:13 188523259
>>1885227
> можно не тянуть все, а только нужные модули
Тут смотри >>1885126
> Optimize libstd with Xargo
Аноним 20/12/20 Вск 10:18:31 188524160
>>1885227
Ну я и пишу - не гадай, а сразу взвесь жир при помощи cargo-bloat. Ненужные части и так не должны попадать в код - они удаляются при включенном lto (обработчик крашей - редкое исключение).
Аноним 21/12/20 Пнд 15:47:37 188622761
image.png 35Кб, 195x161
195x161
Когда ты с помощью валгринда и гдб находишь причину сегфолтов в unsafe rust коде, передача указателя на значение со стэка в си код, который должен потом освободить память размером указанным в том значении, и в качестве эксперимента пробуешь поместить значение в бокс и все вроде работает, сообщаешь об этом автору, а он просит тебя сделать ревью его коммита, основанного на твоих экспериментах. Вот только я пишу на скриптоязыках, а не на этих ваших растах и си.

Man, do I look to you like I know what am I doing?
Аноним 21/12/20 Пнд 15:49:54 188622962
>>1886227
Напишу ему LGTM, именно так бы я и сделал :thumbs:.
Аноним 22/12/20 Втр 18:16:35 188734563
>>1886229
Можешь еще написать ему LGBT
Аноним 29/12/20 Втр 15:15:30 189454264
L9Wg06VuZm9UU6s[...].png 457Кб, 640x456
640x456
Нечем заняться на новогодних? Ублажи краба!
Аноним 31/12/20 Чтв 10:46:55 189661065
Аноны, такая петрушка: юзаю par_iter из rayon. В исполняемом блоке async, который ранится через smol::run(). И вот вся эта петрушка вроде и работает, но, сука, однопоточно. И CPU 100%, и смотрел в top -H - всего один поток.
Ядер 8/16, пробрасывал ему RAYON_NUM_THREADS=12, выставлял через rayon::ThreadPoolBuilder::new().num_threads(12).build_global().unwrap() - ничего не помогает.
Аноним 31/12/20 Чтв 12:10:32 189667766
>>1896610
А без async блока все норм работает?
Аноним 31/12/20 Чтв 16:39:47 189689967
>>1896677
Хз, надо тестовый крейт замутить. Вообще, работает нон параллельно, но в одном потоке - как будто rayon с какого-то перепугу решил заюзать треды от tokio.
Аноним 01/01/21 Птн 21:49:52 189812168
image.png 14Кб, 882x49
882x49
>>1896899
>>1896610
Ёпта, и правда, дело было в асинхронности. Унёс все асинхронные функции вообще в отдельный бинарь (там из асинхронного было только обращение к сети за данными, которые, один хер, кешировались).
И теперь совсем другое дело, все ядра в работе.
Ну, это подстава, пиздос. По-хорошему надо бы разобраться, сделать тестовый сэмпл, и багулю зарепортить, а мне лень.
Аноним 03/01/21 Вск 00:29:52 189920069
Если бытиё поражённого ржавчиной не производит естество одного из лучших современных языков программирования то почему он является милым и прошедшим валидацию
Аноним 03/01/21 Вск 10:01:28 189939170
>>1898121
Бля, у меня, походу, очень сложный кейс. Эта самая rayon'ная многопоточность запускается в цикле, дак вот: на первой итерации все 8/16 забиты под завязку, но на последующих - вроде бы и куча потоков реально запущена (top -H их отображает), но при этом все они прибиты к одному ядру (спасибо, что не к логическому). Хоть 12 потоков, хоть 32 - одинаково.
Аноним 03/01/21 Вск 18:40:59 189967071
Чет читал раздел про разделение проекта на файлы. Столько воды написано, что раза с 2-3 понял только, хотя там 90% можно выкинуть и всё будет элементарно.
Аноним 05/01/21 Втр 20:25:15 190185172
Каррирование ни в какой форме в rust не завезли что-ли? Даже что-то типа плюсового std::bind нет?
Аноним 05/01/21 Втр 20:58:59 190187773
Аноним 05/01/21 Втр 23:55:26 190205274
>>1901851
Не завезли, пиши лямбды руками.
Можно сделать на макросах
https://peppe.rs/posts/auto-currying_rust_functions/

Отчасти понятно почему каррирования как в хачкеле нет, пришлось бы Self шатать
Аноним 06/01/21 Срд 13:42:22 190237375
>>1902052
> пришлось бы Self шатать
м?
Аноним 06/01/21 Срд 15:26:59 190251176
>>1902373
Нет чёткой картины, но систему типов Rust придется переебашивать, и Self перестанет быть простым типом
Аноним 08/01/21 Птн 01:05:16 190419777
Аноним 11/01/21 Пнд 00:16:10 190696078
Да каким образом бутстрап билды проёбываются с каждым вторым упдейтом
Аноним 11/01/21 Пнд 12:14:25 190712779
>>1901851
- Ты функциональщик! - прокричал Сергей на весь оупен-спейс-рум номер 14. Комната притихла в ожидании развязки. — Я видел, как ты вчера вечером каррировал и декаррировал прямо за рабочим компьютером! Неодобрительный ропот и возгласы удивления прокатились по комнате. Кто-то громким шепотом сказал “какой ужас, а я с ним за руку здоровался”. — Знаешь что, Сергей, — сказал Денис, вставая из-за рабочего стола, — любой нормальный мужчина, если у него всё в порядке, может позволить себе позаниматься функциональным программированием. Это естественно. Каждый хотя бы раз, да пробовал. Зачем только об этом кричать на всю комнату? Я же не кричу, что ты объектно-ориентированный! Девушки захихикали, кто-то снова громко пробормотал “ну надо же, а по нему и не скажешь”. Присутствовавший при этом Игорь Матвеевич сильнее вжался в кресло. Только бы никто не узнал про его процедурные наклонности!
Аноним 16/01/21 Суб 16:21:58 191188580
Чем Rust лучше а чем хуже Haskell'я?
Аноним 16/01/21 Суб 21:47:00 191220481
>>1911885
Лучше действительно бесплатными абстрациями, а не бесконечными боксами. Хуже отсутствием HKT, которых не будет ещё как минимум десять лет.
Аноним 16/01/21 Суб 23:58:09 191227582
Аноним 17/01/21 Вск 09:28:51 191244683
image.png 10Кб, 543x123
543x123
>>1912275
ты глупый или что-то?
Аноним 17/01/21 Вск 09:32:01 191244984
>>1912275
>>1912446
и вообще у тебя as_bytes() возвращает &[u8], а не &[&u8]
Аноним 17/01/21 Вск 11:38:38 191248385
>>1912449
>и вообще у тебя as_bytes() возвращает &[u8], а не &[&u8]

тогда почему мне приходится a разименовать? иначе получаю для кода
[a, b, ..] if a == b + 1 => false,

ошибку error[E0277]: can't compare `&u8` with `u8`
Аноним 17/01/21 Вск 11:48:31 191248786
Аноним 17/01/21 Вск 12:02:00 191249487
>>1912487
жесть, а как так-то? что это вообще? как-то контр-интуитивно. Что почитать-то про это?
Аноним 17/01/21 Вск 13:56:00 191261488
>>1912494
> как-то контр-интуитивно
> as_bytes() возвращает &[u8]
&[3, 4, 5, ..] помоему вполне интуитивно
Аноним 17/01/21 Вск 14:21:59 191266389
>>1880122 (OP)
А чё можно написать на ржавом?
Аноним 17/01/21 Вск 16:07:04 191284390
Раст мёртв
Аноним 17/01/21 Вск 18:44:15 191298491
Аноним 18/01/21 Пнд 10:49:31 191391192
Аноним 18/01/21 Пнд 14:33:01 191406393
oat.jpeg 119Кб, 500x580
500x580
Аноним 18/01/21 Пнд 15:09:53 191410194
>>1912204
скорее никогда не будут, ведь они не нужны в расте
Аноним 18/01/21 Пнд 16:25:11 191415895
Аноним 18/01/21 Пнд 18:22:48 191429896
>>1914158
а для чего тебе hkt в расте?интересно аж стало
Аноним 19/01/21 Втр 11:46:44 191494897
rust.mp4 3206Кб, 1280x720, 00:01:05
1280x720
дайте ссылочку на оригинал плиз
Аноним 19/01/21 Втр 13:02:55 191507498
>>1914948
Почему айтишники такое быдло?
Аноним 19/01/21 Втр 17:47:25 191539799
>>1914298
Можно описать полноценные функторы.
Обходимся тем что дали - Iterator, но это ограниченное решение
мимоанон
Аноним 19/01/21 Втр 17:48:16 1915400100
Аноним 19/01/21 Втр 18:25:52 1915429101
Вот какого хуя у itertools::iterate предикат принимает ссылку, а не значение? https://docs.rs/itertools/0.10.0/itertools/fn.iterate.html

Из-за этого вместо того, чтобы переиспользовать значение аргумента приходится создавать новое.

т.е. вместо скажем вместо

fn predicate_good( mut s: String) -> String
{
s.push( '1' );
s
}

приходится писать че-нить типа:
fn predicate_bad( s: &String ) -> String
{
let mut ss = s.clone();
ss.push( '1' );
ss
}

Как мне избавиться от клонирования здесь?

В std::iter::Iterator такой хуйни нет и аргументы всех предикатов передаются по значению.
Аноним 19/01/21 Втр 18:45:46 1915447102
>>1915429
> В std::iter::Iterator такой хуйни нет
Что мешает этим и пользоваться?
Аноним 19/01/21 Втр 18:55:31 1915457103
>>1915447
там аналогичной функциональности нет.

В принципе у меня скорее вопрос философский архитектурный, какими соображениями создатели itertools руководствовались когда так сделали? Херня ж по-моему какая-то получилась, или я что-то упускаю?
Аноним 19/01/21 Втр 18:59:13 1915460104
>>1915457
> там аналогичной функциональности нет.
А их нельзя смешивать разве?

> To extend Iterator with methods in this crate, import the Itertools trait:
> use itertools::Itertools;
Аноним 19/01/21 Втр 19:10:35 1915493105
Аноним 19/01/21 Втр 22:20:00 1915738106
>>1915493
Для передачи по значению есть map.
Аноним 21/01/21 Чтв 14:23:04 1917099107
Аноним 21/01/21 Чтв 15:12:25 1917129108
Прочитал недавно статью на хабре от лаборанта о ржавении. Вы, наверное, видели. Несмотря на то, что лаборант профан в сфере разработки, пара фраз о расте меня заинтересовала
Поэтому хотел бы задать пару вопросов:
1. Пишете ли вы на расте энтерпрайз бд, бизнес-логика и прочая залупа?
2. В каком состоянии гуй фреймворки?
3. Какова ваша средняя скорость написания кода на расте по сравнению с той же явой/дотнетом/etc?
4. Как вам тулинг по субъективным ощущениям?

Пишу без агрессии. Насчёт лаборанта не обессудьте, но когда пчел поднимает кластер EKS для базы в 250 мб с приростом 50 мб в год, и жалуется, что 32 Гб оперативки и 24 ядра пришлось потратить – это пушка
Аноним 21/01/21 Чтв 15:18:21 1917133109
>>1917129
Забей, мёртвый игрушечный язык.
Аноним 21/01/21 Чтв 15:27:54 1917143110
Аноним 21/01/21 Чтв 16:16:26 1917204111
>>1917129
1 не по работе
2 плохо
3 лучше, но изредка может вылезти какой-нибудь заёб
4 заебца

> наверное, видели
Не. Пойду почитаю.

> EKS для базы в 250 мб с приростом 50 мб в год, и жалуется, что 32 Гб оперативки и 24 ядра пришлось потратить
Звучит как ошибка в ДНК которую никаким языком не исправить.
Аноним 21/01/21 Чтв 18:04:42 1917309112
>>1917129
1. По работе
2. wasm збс, кроме готовых компонентов. Сервер збс
3. Скорость может быть меньше, но зато время дебага на порядок меньше.
4. rust-analyzer жрет гигабайты памяти, lsp днище, в целом терпимо
Аноним 22/01/21 Птн 11:01:37 1917896113
>>1917129
>3. Какова ваша средняя скорость написания кода на расте по сравнению с той же явой/дотнетом/etc?
>
Недавно ради интереса переписал один скрипт на Питоне, где много операций типа "достать строку из xml и преобразовать по шаблону". За исключением того, что изначальный скрипт написан психопатом, получилось довольно прикольно. И заработало с первого раза.
Аноним 22/01/21 Птн 21:16:30 1918376114
>>1917129
1. Писал блокчейн. Считается?
2. Есть биндинги к win api, gtk и другой залупе, свои фреймворки в зачаточном состоянии
3. От задачи и выбора инструментов зависит, так-то Rust абстракции выразительнее, но думать надо больше.
4. Компилятор хороший-удобный, всё остальное не очень
Аноним 26/01/21 Втр 16:46:58 1922358115
>>1918376
А к кути биндинги тоже кривые?
Аноним 26/01/21 Втр 23:14:04 1922717116
>>1922358
Моё мнение что всё это в принципе плохо ложится, неудобно писать на Rust GUI, по крайней мере с теми абстракциями что дали.
Но люди что-то пишут, что-то работает.
Аноним 27/01/21 Срд 13:46:15 1923174117
Котаны, подскажите ответ на нубский вопрос. Допустим есть такая конструкция
`let tcp = TcpStream::connect(&addr).unwrap();`
каким образом мне обработать ошибку резолва домена? Я в расте ни бум-бум.
Аноним 27/01/21 Срд 14:40:33 1923233118
>>1923174
С этим вроде разобрался, только непонятно где посмотреть тип ошибки если, например, хост недоступен. Подскажите, аноны!
Аноним 27/01/21 Срд 15:17:48 1923258119
Аноним 27/01/21 Срд 17:59:06 1923523120
>>1923258
Нихрена непонятно. Это не компилится

let tcp = TcpStream::connect(&addr);
if Ok(tcp) {
} else {
return;
};
Аноним 27/01/21 Срд 18:13:07 1923537121
>>1923523
Ага, вроде понял. Пиздец, как в расте всё запутано.
Аноним 27/01/21 Срд 21:58:00 1923780122
1541596852068.jpg 27Кб, 480x360
480x360
Аноним 27/01/21 Срд 23:57:05 1923914123
>>1923537
А потом ты узнаешь про map, map_err, and_then... и охуеешь.
Аноним 28/01/21 Чтв 08:50:32 1924056124
>>1923914
Падажжи с этим, расскажите лучше про глобальные переменные. Как их, блять, объявить?
Аноним 28/01/21 Чтв 09:06:47 1924060125
Аноним 28/01/21 Чтв 09:11:25 1924063126
Аноним 28/01/21 Чтв 09:33:54 1924072127
Заодно подскажите как вырезать дебаг, RUSTFLAGS='-C link-arg=-s' cargo build --release один хер хранит всякое говно в бинарнике, sstrip тоже не помог.

/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/block-buffer-0.7.3/src/lib.rsfailed to write whole buffer/home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/io/mod.rsformatter errorfailed to fill whole buffer/home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/io/impls.rsadvancing IoSlice beyond its length/home/user/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/unix/io.rscalled `Result::unwrap()` on an `Err` value/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/yasna-0.3.2/src/writer/mod.rs/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/rdp-rs-0.1.0/src/nla/asn1.rsnegoTokenInvalid Cast/home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/rdp-rs-0.1.0/src/core/gcc.rs
Аноним 28/01/21 Чтв 09:47:11 1924074128
Аноним 28/01/21 Чтв 09:51:39 1924077129
>>1924074
Ты нормально писать можешь?
Аноним 28/01/21 Чтв 10:08:33 1924083130
Аноним 28/01/21 Чтв 10:22:07 1924092131
>>1924083
RUSTFLAGS='-C link-arg=-s -C panic=abort' cargo build --release и мусор остался.
Аноним 28/01/21 Чтв 10:23:15 1924095132
>>1924092
Так же добавил в ~/.cargo/config

[profile.release]
panic = "abort"
Аноним 28/01/21 Чтв 11:03:27 1924126133
Аноним 28/01/21 Чтв 11:04:13 1924127134
Аноним 28/01/21 Чтв 12:15:17 1924185135
Аноним 28/01/21 Чтв 12:28:49 1924199136
Аноним 28/01/21 Чтв 13:01:26 1924220137
>>1924199
Не отвечай на мои комменты, ты долбоёб.
Аноним 28/01/21 Чтв 13:05:49 1924223138
>>1924220
> комменты
Туда ли ты зашел?
Аноним 28/01/21 Чтв 15:38:54 1924334139
>>1924223
А скажи что-нибудь на двачерском.
Аноним 28/01/21 Чтв 15:41:24 1924337140
Что за уебанский недоязык, где создание глобальной переменной нихуя не гуглится? А, да это же раст, язычек без задач для безработных двачеров.
Аноним 28/01/21 Чтв 15:53:25 1924356141
Аноним 28/01/21 Чтв 15:56:03 1924363142
>>1924337
если ты опущ, неспособный понять принципы языка, это не значит, что язык говно
для начала, нахуя тебе глобальная переменная? в расте для этого юзается static с lazy_static / thread_local, шобэ было потокобезопасно
хочешь mut static - только через ансейф, ибо компиль не ебёт, будешь ли ты в будущем изменять глобальное состояние (что уже само по себе почти антипаттерн)
Аноним 28/01/21 Чтв 16:35:14 1924409143
Аноним 28/01/21 Чтв 16:42:46 1924420144
>>1924409
> error[E0133]: use of mutable static is unsafe and requires unsafe function or block
Тебе прямым текстом говорят что ты делаешь хуйню и что нужно сделать если ты сегодня первый день.
Аноним 28/01/21 Чтв 16:48:37 1924422145
Аноним 28/01/21 Чтв 18:02:57 1924473146
>>1924422
Я уже распарсил что нужно unsafe юзать. Создатели раста дебилы? Как без инкрементных операций циклы выполнять? Ебобо какое-то.
Аноним 28/01/21 Чтв 18:32:04 1924514147
>>1924473
Какие циклы? Нахуя тебе для цикла глобальный мутабельный стейт?
Аноним 31/01/21 Вск 12:57:04 1926876148
Почему бы всякий энтерпрайз не писать на расте?
Аноним 31/01/21 Вск 13:31:46 1926913149
>>1926876
1. Нет библиотек, хуевая инфраструктура
2. Дебильный менталитет у комьюнити, вечно все поломано и нихуя не работает
3. Хуевый компилятор, сборка проекта полдня
4. Слишком мало бабла инвестировано
5. Мало разработчиков
6. ???
7. Джава ЕЕ бой!
Аноним 31/01/21 Вск 13:43:00 1926920150
>>1926876
Чтобы что? Для энтерпрайза нужен максимально простой язык, которому можно обучить любого дебила, энтерпрайзу в целом похуй на перформанс и главное — сроки. Зачем там руст?
Аноним 31/01/21 Вск 20:06:24 1927293151
>>1926920
>Зачем там руст?
За такие вопросы у меня в стартапе убивают нахуй!
Аноним 31/01/21 Вск 23:06:51 1927435152
>>1927293
А как стартап относится к энтерпрайзу и к расту? Там же на жсе высирают всё как можно быстрее, лол.
Аноним 01/02/21 Пнд 17:34:02 1928127153
>>1927435
Ну вдруг стартап в космической отрасли зарубежом для которой тебе придется иметь 100500 лет опыта, гражданство США/Европкосоюза, знание С++/АСМа/Верилога для галочки и прочие прелести за зарплату реакт-фронтэндера
Аноним 01/02/21 Пнд 19:36:22 1928271154
>>1928127
там всякая дичь типа ады юзается
Аноним 02/02/21 Втр 16:06:26 1928918155
>>1928271
Зумерок после гуманных языков испугался ады, кек.
Аноним 03/02/21 Срд 14:13:35 1929605156
Грейдон хор пишет на плюсах и особо не интересуется растом, лол
Аноним 03/02/21 Срд 20:43:41 1929968157
>>1924422
Как мне такую же херню провернуть со структурой? Чтобы она была глобальная и мутабельная.
Аноним 03/02/21 Срд 21:16:37 1929978158
>>1929968
Сделать структуру по типу

struct Qwe(usize);

и заменить все "x = 42;" на "x = Qwe(42);".

Но вообще, ты ёбобо, которое потом будет орать что раст хуйня, потому что баги какие-то неуловимые, ведь ты не хотел падать на подстеленную разработчиками соломку сейф раста, а полез в ансейф раст, не понимая всех тонкостей UB и того, почему абстрактная машина раста и реальные процессорные команды — это разные вещи.
Аноним 03/02/21 Срд 22:45:47 1930024159
>>1929978
Я передумал. Допустим есть
struct SomeStruct {
A: String,
B: String,
}

В main где-то там я делаю
let mut Ss:SomeStruct;
if 1 < 2 {
Ss.A = 123;
}
if 4 > 3 {
Ss.B = 456;
}
Вот тут ошибка компиляции почему-то.
Аноним 03/02/21 Срд 22:47:11 1930027160
>>1930024
Блять, там не String, а i32. Но проблема в том, что не даёт изменить значения.
Аноним 03/02/21 Срд 22:48:29 1930029161
assign to part of possibly-uninitialized variable: `config`
Аноним 03/02/21 Срд 22:55:37 1930035162
Аноним 04/02/21 Чтв 12:27:12 1930278163
>>1930035
Ты пробовал читать и вникать в ошибки компилятора, вместо того чтобы сразу кричать рррряяяяя?
Аноним 04/02/21 Чтв 14:20:46 1930388164
>>1930278
Есть бы хоть один писал нормально, а не так, как принято в раст-комьюнити. Нахер, короче, вас всех с вашим говном без задач.
Аноним 04/02/21 Чтв 16:40:28 1930552165
>>1930388
Ты растбука не читал, ошибки не читаешь, и думаешь в узких рамках своего предыдущего бэкграунда. Дело не в комьюнити, а в тебе. Just sayin
Аноним 04/02/21 Чтв 16:44:14 1930555166
>>1930388
Мог бы еще прийти в хаскель тред и сказать:
- Так, ебана, как у вас тут сделать глобальную мутабельную переменную? Какие монады-шмонады? Как мне разыменовать указатель ебана.
Аноним 06/02/21 Суб 12:00:49 1932036167
>>1930388
Проиграл с этого малолетнего дебила. Мы вам даже не перезвоним.

мимо
Аноним 08/02/21 Пнд 05:11:34 1933822168
44887257.png 31Кб, 200x200
200x200
Embark Studios - компания мечты.
Большая часть сотрудников транс и лгбт-персоны. Пишут графику игры на Rust. Пишут графику и шейдеры на Rust. Поддерживают BLM.
Как бы я хотел бы попасть к ним. Почему я не живу в Швеции?

https://github.com/EmbarkStudios
Аноним 08/02/21 Пнд 09:51:35 1933939169
Аноним 08/02/21 Пнд 21:05:30 1934784170
Аноним 08/02/21 Пнд 21:46:23 1934816171
>>1934784
Это плохо или хорошо?
Аноним 08/02/21 Пнд 22:07:38 1934854172
>>1934816
У разработчиков будут деньги на лапшу быстрого приготовления и HRT.
Аноним 08/02/21 Пнд 22:13:07 1934864173
>>1934816
Заёбы мозиллы меньше влиять будут.
Аноним 09/02/21 Втр 03:06:09 1935015174
>>1934784
хорошо, что соблюден гендерный баланс, но как блм активист я не понимаю почему нет представителей черной расы в директорах.
Аноним 10/02/21 Срд 18:29:08 1936911175
Всем шалом в этом чате. Я к вам пришёл из Go, меня интересуют веб-фреймворки на расте по типу gin-gonic/beego/iris. Есть что-то похожее на растишке? Мне нужны удобства в рендеринге шаблонов, удобная работа с формами, авторизацией. Что посоветуете, уважаемые?
Аноним 10/02/21 Срд 18:50:56 1936942176
>>1936911
https://rocket.rs/
https://actix.rs/
Выбирай на свой вкус. У рокета еще есть асинк-ветка, которую пока не релизнули. Я пользуюсь с осени, полет нормальный.
Аноним 10/02/21 Срд 19:38:41 1936969177
Аноним 10/02/21 Срд 20:10:08 1936990178
Аноним 10/02/21 Срд 20:11:47 1936991179
>>1936990
Если хочешь батарейки, смотри в сторону рокета все таки.
Аноним 11/02/21 Чтв 09:38:35 1937339180
>>1936991
Наскольно рокет проще для вкатывания? Вижу у него работа с шаблонами лучше, tera юзается, очень похоже на шаблоны в го.
Аноним 11/02/21 Чтв 10:21:29 1937348181
rust.png 46Кб, 794x772
794x772
Аноним 11/02/21 Чтв 12:08:22 1937423182
Аноним 11/02/21 Чтв 12:16:27 1937427183
>>1937348
Я сидел с ней в баре в Москве на расто-конфе пару лет назад. Ничего особенного в ней нет, просто человек.
Аноним 11/02/21 Чтв 15:38:02 1937609184
>>1937427
>ней
>просто человек
Are you pidor?
Аноним 11/02/21 Чтв 17:00:49 1937715185
oMJHrHFC400x400.jpg 29Кб, 400x400
400x400
>>1937427
Согласен, обычный няшный трапик.
Аноним 11/02/21 Чтв 17:29:18 1937772186
Аноним 11/02/21 Чтв 22:44:50 1938182187
>>1937715
Была бы у меня такой няшный трапик, быть может я бы и на раст начал писать...
Аноним 11/02/21 Чтв 23:29:29 1938204188
>>1938182
Попробуй наоборот.
Аноним 12/02/21 Птн 14:34:15 1938572189
Приветствую, ржавоебов.
Объясните в чем смысл языка. Искал себе какой-то язык для души, чтобы по кайфу что-то писать. Попробовал хаскель, очень круто, но как-то сильно заебисто, много сомнительных моментов, таких как отсутствие скобок, везде тайп классы, инкапсуляций и методов нет.

Поэтому решил посмотреть раст. С чего можно начать изучение? Может есть книги и тд. Я начал с онлайн книги на офф сайте, но она очень нудная, прям для очень начинающих.
Аноним 12/02/21 Птн 19:54:25 1938913190
887711.jpg 30Кб, 400x400
400x400
>>1938572
https://rust-lang.ru/
В колонке "изучить Rust: " всё твоё. Не знаю что тебе ещё нужно.
Можешь ещё навернуть тег на хабре: https://habr.com/ru/hub/rust/

>Объясните в чем смысл языка
Смысл языка в инклюзивности и нулевых абстракциях без утечек памяти в сейф моде. Язык для системников ака байтоёбов. Всех других от него рано или поздно начинает тошнить.
Аноним 16/02/21 Втр 17:28:03 1943349191
>>1938572
В trpl читай только главы про лайфтаймы\трейты\обработку ошибок и т.п., вместо вводных глав и прочей хуйни пробегись по rust by example + rustlings. Потом читай embedded book, ну или что ты там хочешь делать. Местных не слушай, тут одни хуесосы сидят (как всегда).
Аноним 16/02/21 Втр 17:38:45 1943363192
>>1881876
Попробуй другие поисковики. Гугл какой-то некачественный и глупый стал.
Аноним 16/02/21 Втр 20:12:47 1943525193
>>1943363
>Гугл какой-то некачественный и глупый стал.
Только он контекст понимает, для остальных нужно уточнять всегда

>>1943349
Всё это есть буквально постом выше, но вам видимо нужно на блюдце принести. Если так, то раст не для вас.
Аноним 16/02/21 Втр 20:48:48 1943543194
holmer & khyper[...].png 941Кб, 598x598
598x598
>>1943349
>тут одни хуесосы
Как будто что-то плохое
Аноним 17/02/21 Срд 09:46:54 1943921195
В раст самое классное сообщество)
Аноним 17/02/21 Срд 10:36:39 1943961196
Аноним 17/02/21 Срд 11:39:43 1944001197
5576448.jpg 6Кб, 200x200
200x200
>>1943961
Создатель rust-gpu и его тян
Аноним 17/02/21 Срд 11:52:29 1944008198
>>1944001
Я не понимаю, что вам так бомбит.
Имеют деньги и балуются. Это как раньше были какие-то мини-юбки или татухи.
Аноним 17/02/21 Срд 11:59:34 1944015199
8.gif 3266Кб, 372x372
372x372
Аноним 17/02/21 Срд 12:07:47 1944021200
>>1944015
У васянов на конкретных сайтиках. Я помню, какой ад был на качкобабах, а теперь если нет качкожопы то пиздец трагедия.
Аноним 17/02/21 Срд 12:21:33 1944026201
holmes.png 1132Кб, 1051x684
1051x684
>>1944008
>Это как раньше были какие-то мини-юбки или татухи.
>>1944021
>качкобабах
>качкожопы
Причём тут качкобабы и качкожопы? Это не мода и не сиеминутное решение, которое можно откатить. Это выбор человека и их нужно в этом поддерживать. Это если про лирику.

А если по существу: khyperia охуенная, rust-gpu охуенный (это реально прорыв и возможно будущее геймдева), holmes охуенная (посмотрик какие полезные ролики она мутит на ютубе).
Поэтому все трансфобы и прочие дегенераты идут лесом.
Аноним 17/02/21 Срд 12:36:19 1944031202
>>1944026
На женщине не должно быть мужской одежды, и мужчина не должен одеваться в женское платье, ибо мерзок пред Господом, Богом твоим, всякий, делающий сие.

Второзаконие 22:5
Аноним 17/02/21 Срд 12:36:24 1944032203
>и их нужно в этом поддерживать
Нет, не нужно. За поддержкой можешь в твиттер съебать, дегенеративный жополаз.
Аноним 17/02/21 Срд 13:08:36 1944057204
>>1944031
Ты так цитируешь, как будто это оригинал, а не четырежды проёбанный перевод, который был адаптирован под нужды небритых варваров.
Аноним 17/02/21 Срд 13:22:49 1944087205
>>1944031
> БОХНАКАЖЭТ
Сук, чёт ржу. Неспроста говорят что мы переживаем технологическое средневековье.
Аноним 17/02/21 Срд 14:12:52 1944144206
>>1944057
Перевод хороший. Можно спорить о не совсем точно переданной стилистике, но суть и смысл библейского текста переданы верно. Текст на древнееврейском можешь посмотреть здесь:
https://www.mechon-mamre.org/p/pt/pt0522.htm

>>1944087
Если у тебя в силу того, что ты окружил себя технологиями, отсутствуют убеждения и принципы, либо ты их имплицитно воспринял от своего окружения в качестве "актуальных", то это не значит, что другие такие же.
Аноним 17/02/21 Срд 14:42:53 1944169207
Не бывает 100% хороших (кроме Христа) или 100% плохих людей. Люди разные. Программисты-транссексуалы делают много хороших вещей. Они придумывают классные технологические решения, облегчают работу людям, двигают технический прогресс. Но их выбор в плане ориентации или гендера - это искажение человеческой природы девиациями. Ненавидеть или кэнселить этих людей - это плохо. Ненавидеть надо грех, а не людей. Любой человек прекрасен как замысел Божий, плохо лишь увлечение противоестественными разрушительными вещами. И говорить, что хорошо, а что плохо, обсуждать, спорить, это нормально.

Ладно, прекращаю офтоп.
Аноним 17/02/21 Срд 15:46:31 1944218208
>>1944144
> либо ты их имплицитно воспринял от своего окружения в качестве "актуальных"
Ну а ты конечно же свои принципы и убеждения сформировал сам в глубокой медитации и разговоре с абсолютом, и библия с христианами тут совсем не причём, да? А главное свято уверовал, что если мужик надел платье, то у него ни принципов, ни души, ни сердца, и его нужно сжечь на костре.

>>1944169
Лучше всего забить на это хер, не оценивать, ни плохо ни хорошо. У трансгендеров почти всегда нет детей, они никогда не станут большинством, скорее будут в роли малочисленного генетического шума.

> противоестественными разрушительными вещами

Люди курят, бухают, дрочат, сосут члены, обжираются, смотрят кинцо, в том числе аморальное, играют в игоры, в том числе с жестокостью, ходят в казино, делают ставки, хулиганят, совершают тысячи разных преступлений. Но всё внимание получают мужики на гормонах в юбках. Это похоже на латентную гомосексуальность, подумай об этом.
Аноним 17/02/21 Срд 16:31:12 1944287209
>>1944218
>то у него ни принципов, ни души, ни сердца, и его нужно сжечь на костре
Где ты это увидел? Ты пытаешься возразить ценностному суждению: транссексуальность это неестественно и плохо. Какие костры? Я не испытываю ненависти к людям, говоря, что они делают что-то неправильно.

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

>У трансгендеров почти всегда нет детей
Чем больше таких людей, тем хуже для общества. Опять же, без ненависти к ним. Люди, которые создают нормальные семьи и заводят детей, обычно думают о будущем, делают разумные инвестиции, поддерживают стабильность в обществе, в котором живут. ЛГБТ-пары зачастую живут одним днем, у них редко бывают дети, стало быть, они безразличны к будущему и к среде, в которой находятся.

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

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

>Это похоже на латентную гомосексуальность
Странная аргументация. BLM-активисты - латентные белые расисты, геи - латентные гомофобы, трансы - латентные трансфобы, ага.
Аноним 17/02/21 Срд 16:32:27 1944292210
Обещал не офтопить, но офтоплю. Приношу извинения.
Аноним 17/02/21 Срд 17:32:16 1944359211
anastasia opara.jpg 17Кб, 400x400
400x400
>>1944287
>Чем больше таких людей, тем хуже для общества
Этих людей мало, просто они бросаются в глаза. Где я эти фотки взял есть ещё 60+ человек, но если бы я постил их фото, то у тебя скорее всего возник вопрос - что это за ноунеймы? Но именно на трансов у тебя встал и ты начал рассказывать про будущее общества.

>Люди, которые создают нормальные семьи и заводят детей, обычно думают о будущем
Окей, сейчас наша медицина в говне. Если завтра какой-нибудь мужчина сменив пол сможет рожать детей и не будет испытывать проблем с здоровьем - это изменит твою позицию? И почему? Ещё 50 лет назад трансы могли разве что переодется в женщину, аля Верка Сердючка. Сегодня они могут полностью преобразить свою внешность до неузнаваемости. Завтра они будут рожать детей как и обычные женщины.

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

>чтобы им уделялось сколь либо большое внимание
Ой. А как это сочетается с 4 абзацами текста от тебя про неестественность трансгендеров?
Аноним 17/02/21 Срд 17:58:42 1944383212
>>1944359
>Ой. А как это сочетается с 4 абзацами текста от тебя про неестественность трансгендеров?
В треде зашел разговор эту тему, я запостил цитату, отражающую мое мнение, мне сказали, что это мнение средневековое и "так нельзя", в ответ я подробно изложил свою позицию. Все. Больше нечего добавить.
Аноним 17/02/21 Срд 18:19:29 1944403213
Аноним 17/02/21 Срд 19:24:57 1944467214
>>1944403
Не понимаю, зачем спорить дальше. Я с тобой не согласен, но тред же о другом.
Аноним 17/02/21 Срд 19:33:02 1944472215
>>1944467
Раст это больше чем язык программирования. Это революция, это протест. Тут не бывает оффтопа. В прошлых тредах мы обсуждали политику, железо, другие языки, игры, геймдев...
Аноним 17/02/21 Срд 19:35:56 1944478216
>>1944472
>Это революция, это протест
Ну хорошо хоть не гендер.
Аноним 17/02/21 Срд 22:11:12 1944633217
>>1944359
> Ещё 50 лет назад трансы могли разве что переодется в женщину, аля Верка Сердючка. Сегодня они могут полностью преобразить свою внешность до неузнаваемости. Завтра они будут рожать детей как и обычные женщины.
Да нихуя. Что тогда, что сейчас, если начнешь пить таблетки в подростковом возрасте, то станешь няшей, а если тебе в 30 стрельнет в голову, что ты женщина, то станешь мужиком в юбке.

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


не думал что буду писать про трапов в треде про язык программирования
Аноним 17/02/21 Срд 23:48:13 1944680218
>>1944633
Применятся гормональная терапия (и соответственно массово тестироваться начала только в 80-90х годах). В том числе это совпало с изменением юридического статуса трансов и лгбт. Чтоб сегодня в подростком возрасте ты мог стать няшей - мужики по всему миру из под полы юзали гормоны почти 100 лет.

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

50 лет назад гомосексуализм считался психическим расстройством по МКБ, на секундочку. Про трансов молчу. Тебе не гормоны, тебе галоперидол могли всерьёз выписать.
Аноним 18/02/21 Чтв 01:13:16 1944710219
>>1944633
>если тебе в 30 стрельнет в голову, что ты женщина, то станешь мужиком в юбке.
Natalie Mars сделала переход в 30

мимо
Аноним 18/02/21 Чтв 06:28:01 1944802220
>>1944710
>>1944680
>>1944633
>>1944478
>>1944359
>>1944287
>>1944218
>>1944169

Модер, блядь, бери вилку и чисти это говно.

И это инженеры? Говно какое-то, пидоры, блядь. Родина им дала доску — обсуждай! Обсуждай Rust, блядь! Не хочу, хочу жрать говно и на членодевок дрочить! Что такое? Это /pr/?! Это тематика?! Суки… Мудачьё — программисты. В тред зашли, говно жрут — пидоры, блядь, ёбаные…
Аноним 18/02/21 Чтв 11:41:26 1944989221
>>1944287

> А у людей потом здоровье рушится из-за решения "сменить пол" и сидеть на препаратах.

Не переживай за чужое здоровье. Они знают на что идут, я спрашивал.

> ЛГБТ-пары зачастую живут одним днем, они безразличны к будущему и к среде

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

> С экономической точки зрения

Говорят, геи вполне платёжеспособны, не просто на уровне, а даже выше среднего.

> BLM-активисты - латентные белые расисты, геи - латентные гомофобы, трансы - латентные трансфобы, ага.

Это кстати не так далеко от истины как кажется.

> Не вижу, чтобы им уделялось сколь либо большое внимание.

Я конкретно про тебя. Зачем ты пришёл ITT читать проповеди с выдержками из библии? У нас тут инклюзивность и членодевки с неграми и девственниками в контрибьюторах, и мы не суд нравственности.

>>1944802

Ты думаешь просто так везде вводится code of conduct? Инженеры конечно прекрасны в инженерии, но житейские проблемы приходится объяснять на пальцах.
Аноним 18/02/21 Чтв 12:19:02 1945071222
>>1944989
>и мы не суд нравственности
Тогда не указывай людям, за кого им можно переживать, а за кого нет, и кому что высказывать. Иначе ты сам себе противоречишь.
Аноним 18/02/21 Чтв 12:51:31 1945128223
>>1945071
Есть жизнь внутри комьюнити, есть жизнь вне комьюнити. Внутри мы дружные зайки и все друг друга любим и уважаем. А вовне можешь хоть человечину жрать на завтрак. Главное правило — не суди за жизнь вне комьюнити. То есть, христианство, семейные ценности — да пожалуйста, неплохой выбор, и в целом это не моё дело как ты живёшь у себя дома.
Аноним 18/02/21 Чтв 13:34:45 1945179224
>>1945128
>Есть жизнь внутри комьюнити, есть жизнь вне комьюнити
Во-первых, это разделение иллюзорно, ты не сможешь провести четкую грань, где комьюнити заканчивается и начинается "жизнь вне".

Во-вторых, даже если рассматривать ситуацию в рамках этого условного разделения, люди заявляют о своих сексуальных предпочтениях внутри самого комьюнити, давая окружающим знать о своей личной жизни и рассчитывая на поддержку. А люди вправе не поддержать их и высказать свое мнение об этом. В ответ люди вроде тебя вправе высказать свое мнение.
Аноним 18/02/21 Чтв 14:13:43 1945216225
>>1944287
>Чем больше таких людей, тем хуже для общества.
Да, но чем больше люди размножаются, тем хуже для текущего состояния человечества. Мы до сих пор не озеленили Марс, а количество мешков с мясом, которое может поддерживать Земля скоро пересечёт критическую отметку. Выбирая между группой сознательно — или не очень сознательно — отказавшихся от размножения людей, децимацией всего человечества, или вымиранием человечества, лично я голосую за первое.
Аноним 18/02/21 Чтв 15:07:20 1945301226
>>1945216
Проблема в растущих запросах людей на потребление. Даже если бы население Земли составляло всего один миллиард, то с ростом потребления они бы все равно смогли эпично растратить все ресурсы планеты.

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

Кстати у нас, христиан, есть представление о cultural mandate, о разумном использовании мира, который дан Богом, поэтому нас эта тема тоже беспокоит. Но отказ от воспроизводства не вариант, потому что Бог заповедал верующим плодиться и размножаться, стало быть, пусть будет больше рационально мыслящих религиозных людей которые помогут (в идеале должны помочь) остальным.
Аноним 18/02/21 Чтв 15:14:54 1945310227
saintignucius.jpg 31Кб, 321x445
321x445
Аноним 18/02/21 Чтв 16:23:48 1945396228
>>1944026
>Это выбор человека и их нужно в этом поддерживать.
Зачем? Это их выбор, они знали на что идут
Аноним 18/02/21 Чтв 16:27:47 1945400229
>>1945301
>>1945216
О чем вы вообще? Мы пищи производим в три раза больше, чем нужно. Проблема не в потреблении, проблема в перепроизводстве и неэффективном распоряжении ресурсами.

>>1944287
Вебер жил в протестантском обществе емнип, а у протестантов своя этика, отличная даже от католической.

Что же касается этики - лол, с такой точки зрения лучше всего обществу подходят марксизм или национализм, они в принципе построены вокруг социально-эволюционно выгодного коллективизма. Но если все мерить заботой о будущем и общем, то лучше вообще вводить человейник и бургундскую систему сразу.
Аноним 18/02/21 Чтв 17:26:05 1945447230
>>1945216
>которое может поддерживать Земля скоро пересечёт критическую отметку
Так говорят уже лет 100 с чем-то. За это время население увеличилось в несколько раз.
Аноним 18/02/21 Чтв 18:00:40 1945466231
>>1945400
>Вебер жил в протестантском обществе емнип, а у протестантов своя этика, отличная даже от католической.
В этике протестантов была как общехристианская часть, так и непосредственно протестантские установки. Профиты, которые получил мир от Реформации, это понимание, что возможна мирская аскеза - честный труд и отсутствие стремления к роскоши. Такое экономическое поведение позволило людям накапливать финансовый капитал, а потом инвестировать его во благо общества. В православии это тоже возможно, в качестве примера можно вспомнить старообрядческих предпринимателей в Российской Империи.

>лучше всего обществу подходят марксизм или национализм
Это путь к тоталитаризму. Христианские ценности подразумевают индивидуализм и добровольность. Каждый отвечает за себя и трудится на совесть, понимая, что ему надо не трудодни отработать, а выполнить свою работу качественно и без халтуры. Мотивация тут одна - у тебя есть жизненное призвание, данное тебе Богом, и Бог видит твой труд.
18/02/21 Чтв 18:55:33 1945547232
You will never be a real woman. You have no womb, you have no ovaries, you have no eggs. You are a homosexual man twisted by drugs and surgery into a crude mockery of nature’s perfection.
All the “validation” you get is two-faced and half-hearted. Behind your back people mock you. Your parents are disgusted and ashamed of you, your “friends” laugh at your ghoulish appearance behind closed doors.
Men are utterly repulsed by you. Thousands of years of evolution have allowed men to sniff out frauds with incredible efficiency. Even trannies who “pass” look uncanny and unnatural to a man. Your bone structure is a dead giveaway. And even if you manage to get a drunk guy home with you, he’ll turn tail and bolt the second he gets a whiff of your diseased, infected axe wound.
You will never be happy. You wrench out a fake smile every single morning and tell yourself it’s going to be ok, but deep inside you feel the depression creeping up like a weed, ready to crush you under the unbearable weight.
Eventually it’ll be too much to bear - you’ll buy a rope, tie a noose, put it around your neck, and plunge into the cold abyss. Your parents will find you, heartbroken but relieved that they no longer have to live with the unbearable shame and disappointment. They’ll bury you with a headstone marked with your birth name, and every passerby for the rest of eternity will know a man is buried there. Your body will decay and go back to the dust, and all that will remain of your legacy is a skeleton that is unmistakably male.
This is your fate. This is what you chose. There is no turning back.
Аноним 18/02/21 Чтв 19:51:02 1945599233
>>1945466
>Такое экономическое поведение позволило людям накапливать финансовый капитал, а потом инвестировать его во благо общества.
Упускается тот факт, что без колониализма всего бы этого не было. В Китае конфликт между знатью и богатыми, без которого невозможно зарождение капитализма, начался еще во времена Конфуция и Шана Яна, но капитализм не зародился. Не было условий для этого.

>Христианские ценности подразумевают индивидуализм
Христианские ценности что только не подразумевают, и как их только на глобус не натягивали. Какбэ сравни свое понимание, христианских социалистов, крестоносцев какую-нибудь обскурную ветвь вроде мессалианцев (которые считали, что Бог познается через чувственные удовольствия, а труд - грех и им должны заниматься рабы) и Милонова какого-нибудь. Все эти граждане искренне считают, что действуют в духе тру-христианства.
Аноним 18/02/21 Чтв 20:29:39 1945618234
>>1945599
>Упускается тот факт, что без колониализма всего бы этого не было
Согласен, это повлияло на развитие капитализма. Но у тех же старообрядцев и без колониализма взлетело. Даже в условиях гонений.

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

Я за минимальное государство по Нозику и за создание частных благотворительных фондов, которые будут помогать нуждающимся и обустраивать общество по мере возможности. Если какие-то общины христиан хотят иметь общее имущество, то без проблем, пускай создают такие общины, но на добровольной основе. Как гуттериты, например.
Аноним 18/02/21 Чтв 20:45:11 1945632235
>>1945618
>Но у тех же старообрядцев и без колониализма взлетело.
Настолько взлетело, что капитализма в РИ так и не построили по факту, лишь в последние лет 50 какие-то зачатки появились.

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

>Насильственный отъем частной собственности и присвоение чужого
А социалист (даже не христианский) скажет тебе, что это капиталист присваивает себе чужой труд, а рабочий трудится на него, потому что ему нужен жрат. То есть с точки зрения соци как раз капиталист бака и бяка. Не все так однозначно.

Да и Спаситель вполне себе устроил погром в храме, нанеся существенный экономический ущерб честным торгашам внутри.

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

Оговорюсь, что не соци и не рыночник, разочаровался в идеологиях в принципе. То же самое и с религией - был православным, теперь... нечто иное.
Аноним 18/02/21 Чтв 20:45:27 1945633236
>>1945618
>по Нозику
Oy vey
1. Дороги тоже будут минимальные?
2. Как работают суды при Нозике?
Аноним 18/02/21 Чтв 20:49:21 1945636237
>>1945632
>чем везти в Африку и раздавать там.
Чтобы они плодились ещё быстрее и приходилось везти им ещё больше еды...
Аноним 18/02/21 Чтв 20:50:53 1945639238
>>1945636
Не в этом дело. Они просто не заплатят столько, чтобы это было разумно. Выкинуть пищу дешевле, чем продать в Африке.
Аноним 18/02/21 Чтв 21:53:06 1945714239
Аноним 18/02/21 Чтв 21:59:31 1945720240
>>1945714
А ничего. Тут хрестьянин сверху распинался, что свобода, Боженька и рынок все организуют - ан нет, у нас жуткий перерасход ресурсов и их нехватка при избытке (!!!). Иногда мне всерьез начинает казаться, что концлагерь - лучший способ организации человечества.
Аноним 18/02/21 Чтв 22:18:05 1945731241
>>1945720
Перерасход и избыток человеческого ресурса, а еды столько сколько надо. Да и есть ли нехватка, если население черной Африки всё ещё растёт
Аноним 18/02/21 Чтв 22:21:56 1945733242
>>1945731
Ну, по статистике ООН у нас миллиард человек голодает, так-то. Опять же, не вся Африка голодает, и не все африканцы размножают как кролики; в Индии примерно такая же шняга.

А то, что еды сильно больше, чем нам нужно - это тоже факт, в Америке же даже целое движение есть, которое питается чисто за счет выкинутой за ненадобностью пригодной пищей. Просто в России за счет менталитета и меньшего достатка подобное принимает не такой лютый характер (хотя вспомни начало санкций, лол).
Аноним 18/02/21 Чтв 23:36:21 1945788243
>>1945733
> в Америке же даже целое движение есть, которое питается чисто за счет выкинутой за ненадобностью пригодной пищей
В мурике просто сумасшедших изолировать не принято, лол.
Аноним 18/02/21 Чтв 23:44:45 1945795244
>>1945788
А ты подумай - что в этом такого, если не отталкиваться от нашего менталитета? Еда - вполне свежая, бесплатная, на любой вкус, в упаковке. Ее просто не успеют продать, а потому обычно держат на заднем дворе пару дней как раз для таких ребят, хотя с ними пытаются бороться - если ты ешь нахаляву, ты не создаешь спроса.
Аноним 19/02/21 Птн 01:10:10 1945858245
>>1945795
В США в каждом супермаркете стоит пресс для уничтожения просроченных продуктов. Просто потому что если кто-то траванется едой из супермаркета, даже выброшенной, то есть риск судебных исков.

Поэтому чтобы найти просрочку в США я даже не знаю как надо извернуться и в какие помойки залезть.
Аноним 19/02/21 Птн 01:19:19 1945864246
>>1945858
Ты так говоришь, как будто в каждом штате законы одинаковые.
Аноним 19/02/21 Птн 03:06:35 1945887247
>>1945858
Так они ж не покупают, а побирают. В том-то и фишка.
19/02/21 Птн 16:30:18 1946442248
>>1944031
>Второзаконие 22:5
Нагорную проповедь прочитал, ИИссус сказал, что то кто заповеди соблюдает в рай не попадет. Моисеевы законы отменяются.
Аноним 19/02/21 Птн 17:01:41 1946476249
>>1946442
> в рай
Там одни душнилы.
Аноним 20/02/21 Суб 11:55:37 1947147250
>>1944802
Rust сообщество это протест, пошел нахуй трансофоб
Аноним 20/02/21 Суб 15:46:22 1947425251
Пиздос. Индексы в массивах только usize, нельзя складывать usize и isize, но при этом можно вычитать usize из usize. В итоге делаю странное, чтобы всё было usize:

index = index + index_add - index_sub
Аноним 20/02/21 Суб 16:53:37 1947509252
16129789564880.jpg 102Кб, 300x269
300x269
Орнул с треда. Теперь шутки ради буду хуесосить всех, кто про раст ирл топят.
Аноним 20/02/21 Суб 17:08:56 1947523253
>>1947509
Тред не читал. Раст хуйня? Почему?
Аноним 20/02/21 Суб 17:24:22 1947560254
>>1947523
Раст норм, не обращай внимания на тролля. Просто в треде завели ненужные споры про личную жизнь контрибьюторов, а потом вообще ушли в обсуждение религии и политики.
Аноним 20/02/21 Суб 17:31:20 1947575255
>>1947560
Но если контрибьюторы пидоры/ЛГБТ шавки, то выходит что Раст зашкваренный язык от выебанных петухов в жопу, не? Ровным пацанам его юзать нельзя получается.
Аноним 20/02/21 Суб 17:34:52 1947577256
>>1947575
Расскажи, чем сам пользуешься, вдруг там ЛГБТ или ЛГБТ-френдли челики затесались среди контрибьюторов. Вдруг ты зашкварен уже.
Аноним 20/02/21 Суб 21:32:07 1947858257
>>1947425
Можно, если превратить usize в isize, а потом обратно. Но то, что индексы только usize — это охуенно на самом деле, решает целую кучу проблем.
index = (index as isize + index_add + index_sub) as usize;
Аноним 20/02/21 Суб 23:25:56 1947957258
>>1947425
Не уверен насчет конкретно твоего случая, но оно бывает полезно. Алсо есть чекед/врап/оверфлов адд/саб
Аноним 21/02/21 Вск 12:59:21 1948259259
hysterical-laug[...].jpg 33Кб, 534x534
534x534
Аноним 21/02/21 Вск 13:25:09 1948295260
>>1948259
Раст не простой, раст правильный. Если надо просто — голанг.
Аноним 21/02/21 Вск 14:13:48 1948358261
>>1948259
>ГАЙД НА ПОЛТОРА ЧАСА КАК СПЛИТИТЬ СТРОКИ
Это не гайд - это по сути стрим, где челик тупо включил камеру и начал вещать.
Вот тебе лекция на полтора часа по плюсам: https://www.youtube.com/watch?v=JGu-4McXVok

>C++ СЛИШКОМ СЛОЖНЫЙ, НАМ НУЖЕН ЯЗЫК ПОПРОЩЕ
Сам выдумал хуйню и сам её "опровергаешь"?
Аноним 21/02/21 Вск 14:37:58 1948378262
>>1948358
>Это не гайд - это по сути стрим, где челик тупо включил камеру и начал вещать.
Окей гайд не может быть в виде стрима.
>Вот тебе лекция на полтора часа по плюсам:
>класс String
Во первых это не лекция, а по сути стрим, челик просто включил камеру и начал вещать, во вторых это про String, а не &str.
Аноним 22/02/21 Пнд 00:01:22 1948752263
Туплю. Есть некая сторона куба, допустим 10, она в константе. Мне нужно в другой константе иметь максимальное расстояние которое можно пролететь внутри куба, что есть стандартное евклидово расстояние от угла до угла, sqrt(3xx) ~ 17.32. Но я у мамы перфекционист, и хочу считать всё абсолютно без float и без сторонних пакетов, и меня устроит любое целое число больше 18, и допустим меньше 40, посчитанное некоторым приближением из 10. Как быть?
Аноним 22/02/21 Пнд 00:04:08 1948753264
Rubberduckassis[...].jpg 15Кб, 220x220
220x220
>>1948752
А, всем спасибо, я допёр. Можно всего лишь 10 умножить на корень из 3.
Аноним 25/02/21 Чтв 09:32:56 1951119265
А правда, что растоёбы - самое приветливое к червям-ньюфагам комьюнити?
Если буду дебильными вопросами тред закидывать - обосрете?
Аноним 25/02/21 Чтв 10:52:48 1951153266
>>1951119
Нет, у раста самое приветливое коммьюнити из языков программирования.
Да, обосрём, потому что ты не прочитал растбук. А если прочитал, то у тебя не будет совсем дебильных вопросов.
Аноним 25/02/21 Чтв 11:11:58 1951166267
>>1951153
>А если прочитал, то у тебя не будет совсем дебильных вопросов.
Здесь ты не прав, киддо. Я ведь не уточнял, что дебильные вопросы будут касаться раста а не ООП
Аноним 25/02/21 Чтв 12:48:48 1951232268
Аноним 28/02/21 Вск 21:46:23 1954097269
Вопрос от потенциального вкатуна в раст, слегка осматриваюсь, пытаюсь понять всякие синтаксические плюшки и все такое и первое, что прямо бросается в глаза:
Возможность опускать return
Last statement еще куда не шло, но в середине функции, с несколькими возможными return (без самого return)?
Это выглядит очень неочевидно и проглядывает возможность допустить ту же ошибку, которую люди допускали в плюсах, написав вот так: while (hui = pizda) (очевидно поставив = вместо ==)

Немного погуглив нашел вот это: https://stackoverflow.com/questions/27961879/why-is-using-return-as-the-last-statement-in-a-function-considered-bad-style

И что-то никаких конструктивных причин не вижу, кроме меньше нужно печатать

Поясните, это я зашоренный, если считаю return очень важным борлеплейтом, без которого только хуже, или это окей и можно легко привыкнуть?

И как прерывается ничего не возвращающая функция?
Через return?
Аноним 28/02/21 Вск 22:06:22 1954106270
>>1954097
> Возможность опускать return
В отличии от паскаля с "процедурами" и "функциями", в расте все функции всегда возвращают какое-то значение. Часто это значение () типа (). За счет синтаксического сахара ты можешь его не указывать явно:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=8686c254e8498adbfd33ef63ab40f3f1
foo и бар отличаются только наличием сахара.
Точка с запятой по сути позволяет выкинуть нахуй текущее значение и превратить его в ()
Аноним 28/02/21 Вск 23:54:15 1954196271
>>1947575
Представь себе, ЛГБТ-пидоры дышат тем же воздухом, что и ты, так что ты автоматически зашкварен, т.к. делаешь то же самое, что и эти мерзкие пидорасы.
Чтобы остаться ровным пацаном, тебе прямо сейчас нужно задержать дыхание и перестать дышать до тех пор, пока ты не задохнешься и не обмякнешь под себя.
Аноним 01/03/21 Пнд 00:04:48 1954206272
Есть задача, написать на расте что-то типа конфигурируемого движка workflow.
Есть ряд обработчиков, у обработчиков есть данные на входе и выходе. Задача - описывать порядок выполнения этих обработчиков в текстовом файле, чтобы можно было выполнять разные наборы в разном порядке без перекомпиляции программы.
Пока не понимаю, можно ли это вообще сделать на расте, и если да - то как.
Может, у кого-то будут советы, в какую сторону копать.

Допустим, будет такой трейт:

trait Step<I, O> {
fn process(input: I) -> Result<O, Error>;
}

И пара реализаций:
struct Handler1;

impl Step<u32, String> for Handler1 {
fn process(input: u32) -> Result<String, Error> { ... }
}

struct Handler2;

impl Step<String, bool> for Handler1 {
fn process(input: String) -> Result<String, Error> { ... }
}

И надо описать в текстовом файле порядок вызовов, например будет такой yaml:

steps:
- type: Handler1
input: ScalarValue(100)
- type: Handler2
input: PreviousStepResult

Мне надо десериализовать это в нужные обработчики, запустить в нужном порядке и подать на вход нужные данные, желательно проверив перед этим совместимость типов, и если тип не совпадает, то выводить ошибку.
И вот тут у меня ступор, в расте ведь нет рефлексии, можно ли как-то реализовать такое, или лучше смотреть в сторону более динамических языков?
Аноним 01/03/21 Пнд 01:05:02 1954255273
Есть примеры серьёзного софта на расте? Желательно не либы, а b2b или чисто пользовательское.
Аноним 01/03/21 Пнд 01:42:36 1954275274
Аноним 01/03/21 Пнд 01:47:54 1954281275
>>1954097
Дело в том что в расте if, match это выражения (expressions), у которых есть результат. Даже если они многострочные. Это не statements как ты привык. То есть там не проставляется неявный ретурн, а всё так же просто возвращается результат последнего expression, даже если это ветвистый match на 300 строк.
Аноним 01/03/21 Пнд 11:26:57 1954429276
>>1954097
>И как прерывается ничего не возвращающая функция?
В расте все функции что-то возвращают, просто синтаксический сахар позволяет скрывать возвращаемый init, который выглядит как (). Когда ты поймёшь, что все функции что-то возвращают, и что можно написать

let init_var: () = { let x = 1; };

ты поймёшь, почему твой вопрос не имеет смысла. Ведь если твоя функция заканчивается на let x = 1;, то поскольку это выражение возвращает (), то и функция возвращает (). Любая функция в расте прерывается либо return, либо последним выражением в теле функции, и функций, которые ничего не возвращают, в расте тупо отсутствуют как класс.

Из-за того, что выражения типа if или match или любые блоки кода — let x = { ... };, где блок кода показан многоточием — могут возвращать значения, вместо ебаной лапши, где непонятно, куда и что возвращает return, разделили возврат из блока и возврат из функции. Так что return всегда закрывает функцию, а не блок; возможность опустить return в конце функции — просто синтаксический сахар, потому что функция выглядит как тот же блок кода.

Проще говоря: отсутствие return при возвращении значения — это важная часть раста, и ты можешь её удалить из большей части раста, не сломав какой-нибудь код вроде

fn x() {
let x = if true { return; } else { 1 };
println!("{}", x);
}
Аноним 01/03/21 Пнд 13:16:54 1954528277
>>1954275
Подавляющее большинство описывается поговоркой "когда коту делать нечего, он яйца лижет"
Аноним 01/03/21 Пнд 16:52:51 1954780278
>>1954528
Что ты хочешь услышать? Почему тебе стоит продолжать писать на плюсах в 2021? Пиши, разрешаю. С киллер-аппом немного таки беда, это правда, но кому сегодня нужен киллер-апп? От того что линукс и постгрес написаны на си, полмира не бежит делать свои проекты на си.
Аноним 02/03/21 Втр 12:49:45 1955332279
Аноним 02/03/21 Втр 13:26:11 1955379280
>>1955332
Выглядит как линейная цепочка if | else if | else, которая тоже одно единственное выражение.

if {
....раз
....два
....три
....true // возможный результат цепочки if
} else if {
....раз
....два
....три
....false // возможный результат цепочки if
} else {
....раз
....два
....три
....true // возможный результат цепочки if
}

Но если тебе проще где-то использовать return, нет ничего плохого чтобы таки использовать return.
Аноним 02/03/21 Втр 13:29:30 1955383281
>>1955332
В моей голове явный return это маркер раннего выхода из функции.
Аноним 04/03/21 Чтв 21:22:00 1957614282
в прошлый раз руст мне мозг сломал, но пришло время попробовать еще разок
Аноним 04/03/21 Чтв 21:38:29 1957638283
>>1954097
Забавно что никто из ответивших не упомнул что любой блок - {} в расте - это выражение, а значит возвращает результат:
let expr = {};
expr = 1; // error, as {} returns ()
Аноним 04/03/21 Чтв 21:52:27 1957657284
>>1957638
>это выражение
в русте все возвращает что то
Аноним 04/03/21 Чтв 22:25:17 1957709285
Аноним 05/03/21 Птн 11:58:56 1958001286
Есть ли нормальный автокомплит в IDE/IDE с нормальным автокомплитом для сабжа? Пытаюсь писать на расте в vscode со стандартным плагином, вообще не то пальто. Я хочу чтобы все возможные варианты работы с объектом мне показывались в менюшке, как это в плагине к Go.
Аноним 05/03/21 Птн 12:39:59 1958023287
>>1958001
rust-analyzer нормально работает. Нужно сделать Open Folder.
Аноним 05/03/21 Птн 12:41:12 1958024288
>>1958023
Под "нормально работает" ты имеешь ввиду "тормозит как жава иде" и "жрет гигабайты памяти"?
Аноним 05/03/21 Птн 12:50:09 1958032289
>>1958024
Если писать свою ОС, то наверное, но мне для мелких экспериментальных крейтов хватает. Не то чтобы мне светит писать что-то в продакшене.
Аноним 05/03/21 Птн 13:01:12 1958040290
>>1958032
У меня растущее фулстек приложение на 20k/3k строк и 10 гигов оперативы сжираются в никуда. Боюсь представить что происходит с проектами побольше.
Аноним 05/03/21 Птн 13:21:44 1958053291
А вот если хруст-анализер переписать на сишечке, он будет летать, наверное.
Аноним 05/03/21 Птн 13:26:24 1958057292
>>1958053
Если его на написать на нормальном расте он тоже будет летать. Моя гипотеза - жава головного мозга у автора. Люди с жава бэкграундом привыкли жрать говно и что софт тормозит и жрет гигабайты памяти.
Аноним 05/03/21 Птн 14:10:53 1958099293
>>1958057
а что люди с жаба бэком забыли в языках аля цэпэпэ
Аноним 05/03/21 Птн 14:14:54 1958109294
Аноним 05/03/21 Птн 14:48:41 1958159295
>>1958057
>>1958109
Так кто виноват, что чистые хрустовики способны написать только кастрированный пет? Вот и приходится звать на помощь джява-макак
Аноним 05/03/21 Птн 14:54:13 1958163296
>>1958159
Мне кстати rls по прежнему нравится больше. Да, он чаще не может справится с поставленой задачей, но пока я пользовался им, у меня не кончалась память на не самой слабой машине и не висло все к хуям, потому что компьютер пытается взлетать и отправится на марс на кулере.
Аноним 05/03/21 Птн 15:43:01 1958250297
>>1958023
>Нужно сделать Open Folder.
По-русски можно? Я нагуглил проблемы на single file, can't find Cargo.toml Но у меня каталог прожекта создан cargo init my_app
Аноним 05/03/21 Птн 15:43:42 1958253298
>>1958024
Да на память пофиг, я и половины из доступной не использую, хотя сижу на гномощели.
Аноним 05/03/21 Птн 15:46:36 1958258299
А вообще, наверное, я не правильно выразился. Автокомплит работает по либе. Что-то типа std::fs::read_to_string комплитит, но не работает с my_string.retain. Я хз к чему это относится, я ньюфаженька в расте.
Аноним 05/03/21 Птн 15:48:57 1958268300
>>1958253
У меня 16 гигов и мне приходится периодически убивать rust-analyzer и/или firefox чтобы система не зависла, потому что оно начинает течь.
Аноним 05/03/21 Птн 16:18:01 1958307301
Снимок экрана о[...].png 52Кб, 408x582
408x582
>>1958250
Шел 2021 год, в pr показывают как открывать файлы.
Аноним 05/03/21 Птн 16:20:25 1958312302
>>1958307
Блять, я так и сделал. Ладно, хрен с ним. Лучше скажите как рефакторнуть функции, если я подобавлял в начале имени нижнее подчёркивание чтобы оно не писало мне варнинги. Как сделать глобально #[allow(dead_code)] я не нашёл.
Аноним 05/03/21 Птн 16:21:10 1958314303
>>1958312
А то я пишу снизу вверх и меня уже начинает бесить куча варнингов.
Аноним 05/03/21 Птн 16:21:16 1958316304
>>1958312
! #[allow(dead_code)]
В начало файла добавь
Аноним 05/03/21 Птн 16:23:17 1958321305
image.png 28Кб, 662x428
662x428
Аноним 05/03/21 Птн 16:24:00 1958322306
Аноним 05/03/21 Птн 18:31:51 1958453307
>>1958109
>Джава травмирует мозг
жабисты вообще любят оверинжинирить и уходить в десяток вложенностей
Аноним 08/03/21 Пнд 20:26:39 1961409308
Аноним 08/03/21 Пнд 21:14:51 1961464309
>>1961409
Объебался тредом, простите.
Аноним 10/03/21 Срд 17:17:04 1962867310
>>1880122 (OP)
Что скажете о GUI библиотеке Iced? Достаточно ли она зрелая?
Аноним 10/03/21 Срд 17:18:37 1962869311
>>1962867
Юзабельная. Слегка подбешивает что нужно стейт для виджетов таскать самому. Ну и в плане кастомизации все очень слабо.
Аноним 15/03/21 Пнд 21:28:25 1967810312
чет я в главе по трейтам прям поплыл
Аноним 15/03/21 Пнд 21:31:12 1967813313
Аноним 15/03/21 Пнд 22:05:58 1967855314
>>1967813
необычно, вроде интерфейсы, а вроде и нет.
Аноним 15/03/21 Пнд 22:07:01 1967856315
Аноним 17/03/21 Срд 13:56:35 1969704316
На сколько есть смысл изучать rust?
Аноним 17/03/21 Срд 14:27:00 1969724317
>>1969704
Если веришь в webassembly и не хочешь лезть в плюсы то смысл изучать есть
Аноним 17/03/21 Срд 14:59:30 1969751318
>>1969724
>не хочешь лезть в плюсы
никто не хочет лезть в кресты
Аноним 17/03/21 Срд 21:47:03 1970130319
Простой вопрос!

Листаю тур. Конкретно пример с parse()
https://tourofrust.com/71_en.html
Там используется следующая конструкция
let b = a_string.parse::<i32>()?;
соответственно у main() появляется необходимость результат этого действия возвращать и появляется
fn main() -> Result<(), std::num::ParseIntError>
С () всё понятно, мы в конце программы явным образом указываем, что возвращаем Ok(()), а откуда появляется std::num::ParseIntError?
Каким образом я могу выяснить, что мне нужен именно этот метод(?) ParseIntError в num в std? Или что мне может подсказать, что именно он, если я ошибся?

Что я пробовал в редакторе:
Оставлять пустым — "wrong number of type arguments: expected 2, found 1" и пытается объяснить мне, что числоаргументов нужно соблюдать.
Ставить туда юнит () — "couldn't convert the error to `()`" и пытается научить меня, что некоторые типы не умеют в некоторые трейты и как их имплементировать.
Ставить туда Err — "expected type, found variant `Err`" и рассказывает, что возвращать надо тип, а не вариант.
Ставить туда core::result::Result, что мне подсказывали вместе с 4 другими вариантами в последней ошибке, ну и я так понял, это тип для Err — "wrong number of type arguments: expected 2, found 0" и учит меня опять первому.
Переменную, допустим, е — "cannot find type `e` in this scope"
Константу 5 — "constant provided when a type was expected"
На этом моя фантазия иссякла.

Пошёл смотреть доки по функциям (точнее я это сделал почти сразу, но так нарратив веселее), нашёл
https://doc.rust-lang.org/stable/std/primitive.str.html#method.parse
Там сигнатура обозначена как
-> Result<F, <F as FromStr>::Err>
Соответственно попробовал <F as FromStr>::Err> — "failed to resolve: use of undeclared type `FromStr`"

Кликнул на Err, каконец-то увидел пояснение, что "The error type is specific to implementation of the trait." (что было, конечно, очевидно из текста примера)

Так вот, как я, простой иван из города тверь, должен понять, какая ошибка там нужна? Кроме того, чтобы сделать поиск по слову parse
https://doc.rust-lang.org/stable/std/?search=parse
и найти 10 разных видов ошибок с этим словом в названии из совершенно разных модулей? Как выбрать нужную? А если в названии слова parse не было, то как бы их, вообще, можно было откопать?
Аноним 17/03/21 Срд 22:02:04 1970144320
>>1970130
Кажется, нашёл. Надо в списке Implementors, под пояснением про Err надо, в строчке с нужным тебе типом кликнуть не на i32, не на [src], не на любое другое место в строке, а на [+] слева. Тогда появится строчка
type Err = ParseIntError
В ней надо кликнуть на ParseIntError и там можно увидеть, что это структура
std::num::ParseIntError
её и нужно указывать в fn main() -> Result
Аноним 18/03/21 Чтв 01:52:46 1970277321
>>1970130
непонял полотна ты парсишь строку и результатом идет енам резалт ок и ошибка и ошибка эта будет парс инта, так как ты парсишь инт, ты можешь ее обработать, вернуть в вызывающий код или просто выкинуть панику
Аноним 18/03/21 Чтв 09:10:36 1970393322
>>1970277
>и ошибка и ошибка эта будет парс инта
Ты так говоришь, будто легко угадать, что это ParseIntError, а не какой-нибудь ParseErrorInt, или NotIntError. Почему ни один из инструментов не может это подсказать? Ни компилятор ни clippy.

К тому же, даже если угадаешь базовое название, этого недостаточно, компилятор предлагает три варианта на выбор с одинаковым именем:
core::num::ParseIntError
pin_utils::core_reexport::num::ParseIntError
std::num::ParseIntError
какой я должен взять, и чем они отличаются?
Аноним 18/03/21 Чтв 09:29:07 1970403323
>>1970130
Придумал алгоритм:

Пишешь туда какой-нибудь тип (с другими вариантами не сработает), например String
fn main() -> Result<(), String>
Компилятор жалуется на "couldn't convert the error to `String`" и в одном из пояснений написано, что
" ^ the trait `From<ParseIntError>` is not implemented for `String`"
откуда можно вытащить, что это ParseIntError, который можно записать в результат.
fn main() -> Result<(), ParseIntError>
Тогда выдаёт уже другую ошибку: "cannot find type `ParseIntError` in this scope". и предлагает несколько вариантов, где этот ParseIntError может быть. В том числе и эталонный std::num::ParseIntError, но как выбрать именно его, я всё ещё не понял.
Аноним 18/03/21 Чтв 11:39:57 1970450324
>>1970393
это одна ошибка, просто std экспортирует ее из core, да и вообще все что есть в коре есть и в стд.
то есть если не хочешь ссылатся на стандартную библиотеку/она недоступна по каким то причинам можешь ссылаться на ядро.
Аноним 18/03/21 Чтв 11:45:52 1970456325
>>1970450
Спасибо, сейчас-то мне это понятно, но как быть, если там больше вариантов будет? Не только pin_utils::core_reexport::num::ParseIntError, а разные, и не будет, например ни core::, ни std::?
Аноним 18/03/21 Чтв 11:45:59 1970457326
image.png 98Кб, 1688x572
1688x572
>>1970130
я не ракообразный, так, поигрываюсь, но у меня в vscode/rust-analyzer получилось так:
1. a_string.parse - Go to definition (F12)
2. parse<F: FromStr> - Go to definition (F12)
3. pub trait FromStr - Go to implementations (Ctrl+F12)
4. на этом шаге появляется дохуя вариантов, но нас интересует файлик /home/anonymous/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/mod.rs, где на строках 778-789 находим пикрелейтед.
Аноним 18/03/21 Чтв 11:47:12 1970459327
>>1970450
да чтобы упредить вопрос а нахуя это надо.
кор дизайнился для работы на низкоуровневой голом железе, фактически для ембедедщины и тд, она меньше и проще.
Аноним 18/03/21 Чтв 11:47:47 1970460328
>>1970457
ссылка на сам ParseIntError есть на 55 строке в том же файле.
Аноним 18/03/21 Чтв 11:48:20 1970461329
>>1970456
>и не будет, например ни core::, ни std::?
это как ты ошибки без стд кидать собрался?
Аноним 18/03/21 Чтв 11:56:21 1970472330
>>1970461
Пока не знаю, но если там написать вариант, например, Err, то предлагают
anyhow::private
core::result::Result
futures_util::__private
pin_utils::core_reexport::result::Result
and 3 other candidates
Тут тоже core есть, но std уже нет, так что предположу, что и кора тоже может не быть (или, как минимум, не предлагаться в открытых вариантах)

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


Аноним 18/03/21 Чтв 11:58:35 1970474331
>>1970472
>core::result::Result
std::result::Result тоже есть можешь проверить, фома неверующий
Аноним 18/03/21 Чтв 12:00:08 1970476332
>>1970457
>но нас интересует файлик
А как определить, какой файлик нас интересует, и, тем более, найти там строки 778-789? Спасибо, что помогаешь разобраться.
Аноним 18/03/21 Чтв 12:04:16 1970478333
>>1970474
>std::result::Result тоже есть
Да, но он не написан, поэтому без догматического знания, что "всё из core есть в std", я об этом не догадаюсь. А я хочу меньше догадываться и больше читать справку, которая мне пояснит, где я дурак.

>фома неверующий
Я простой иван из города тверь, и я хочу разобраться. Готовый ответ уже был в примере.
Аноним 18/03/21 Чтв 12:06:38 1970480334
>>1970478
ну теперь будешь знать
Аноним 18/03/21 Чтв 12:07:37 1970481335
Аноним 18/03/21 Чтв 12:42:00 1970508336
image.png 183Кб, 1502x994
1502x994
image.png 185Кб, 1490x824
1490x824
>>1970476
ну, после первого шага мы знаем, что метод parse под капотом использует трейт FromStr. далее, зная, как примерно работают трейты, мы понимаем, что нужно искать что-то вроде `FromStr for X`, где X это наш тип, а он нам тоже известен - i32.

чтобы найти все такие места в коде, тыкаем Go to implementations на FromStr и видим пикрелейтеды.

варианты с char, bool сразу отметаем. отметаем float_impl (т.к. там f32, f64, это точно не i32). остаются mod.rs и nonzero.rs. идем в nonzero.rs и видим, что там используются какие-то расширения над i32, но у нас-то обычный i32, поэтому тоже отметаем.

остается mod.rs, собственно тыкаем сразу в вызов макроса и попадаем на 789 строку. убеждаемся, что тут нужный нам обычный i32.

остается только понять, что же за ParseIntError (rust-analyzer мне тут не позволяет делать Go to definition, наверное из-за того, что это часть макроса), придется искать вручную. объявление `pub use error::ParseIntError;` встречается на 55 строке.

вот, собственно, и все.
Аноним 18/03/21 Чтв 12:48:13 1970516337
Аноним 18/03/21 Чтв 13:55:18 1970572338
>>1970508
вот что значит людям делать нехуй
Аноним 18/03/21 Чтв 13:57:37 1970577339
>>1970572
Он нашёл, а ты не нашёл. Ты теперь завидуешь.
Аноним 18/03/21 Чтв 13:59:26 1970579340
>>1970577
че там искать, если я знаю что откуда кидается
Аноним 18/03/21 Чтв 14:39:11 1970597341
>>1970579
ты знаешь 100% кодовой базы раста? все патчи проходят через тебя? я описал очевидному новичку общий принцип самостоятельного нахождения ответов на подобные вопросы, неважно, в std лежит код или в каком-то никому неизвестном крейте. что касается знаний, сегодня ты знаешь, завтра это поменяют, знания устареют.
Аноним 18/03/21 Чтв 14:55:58 1970610342
>>1970597
у раста хорошие доки
Аноним 18/03/21 Чтв 15:05:38 1970617343
>>1970610
Разве не это мы только что проверили? Ответ пришлось искать в исходных кодах.
Аноним 18/03/21 Чтв 16:25:02 1970692344
>>1970617
если б проситель изначально знал знал что кор=стд этого вопроса даже не возникло бы, ибо все легко гуглится по интернет доке, тут вопрос изначально в этом был, а не где искать.
Аноним 18/03/21 Чтв 16:26:24 1970694345
>>1970692
>если б проситель изначально знал
>у раста хорошие доки
Аноним 19/03/21 Птн 20:43:58 1971723346
>>1970130
>а откуда появляется std::num::ParseIntError?
>let b = a_string.parse::<i32>()?;
Знак вопроса возвращает ошибку, если что-то пошло не так. Можно заменить на unwrap() и убрать Result из определения.
>Каким образом я могу выяснить, что мне нужен именно этот метод(?) ParseIntError в num в std?
Можешь поставить Box<dyn std::error::Error>>
> Как выбрать нужную?
f32 это у нас число? Значит num.
Аноним 19/03/21 Птн 23:43:43 1971824347
>>1971723
>Можешь поставить Box<dyn std::error::Error>>
О, а это где можно прочитать было?
Аноним 20/03/21 Суб 08:48:22 1972026348
Аноним 20/03/21 Суб 09:05:19 1972035349
>>1972026
В какой главе? Можно ссылку? Почему в обычной документации нет?
Аноним 20/03/21 Суб 11:27:55 1972119350
>>1972035
до смартпоинтеров не дочитал что ли
Аноним 20/03/21 Суб 11:57:53 1972141351
>>1972119
Дочитал. Я понял синтаксис, я не понял, как узнать, что std::error::Error это трейт (имплементацией которого для parse::<i32> является std::num::ParseIntError), который нужно туда засунуть?

Здесь не написано
https://doc.rust-lang.org/stable/std/primitive.str.html#method.parse
здесь тоже
https://doc.rust-lang.org/stable/std/str/trait.FromStr.html#associatedtype.Err
Аноним 20/03/21 Суб 12:02:13 1972142352
>>1972141
в русте почти все трейты
Аноним 20/03/21 Суб 12:08:35 1972146353
>>1972142
Вот прос не в этом. Где прочитать, что std::num::ParseIntError — это имплементация std::error::Error, а не kern::oshibka::Mistake? В документации по ссылкам не написано.
Аноним 20/03/21 Суб 12:13:05 1972151354
Аноним 20/03/21 Суб 12:25:43 1972163355
Аноним 20/03/21 Суб 12:34:11 1972171356
>>1972163
а метод парс что возвращает?
Аноним 20/03/21 Суб 12:36:45 1972173357
>>1972171
-> Result<F, <F as FromStr>::Err>
Можно кликнуть на FromStr и на Err
Аноним 20/03/21 Суб 12:42:28 1972176358
>>1972173
а еще на резалт и прочитать описание модуля, а лучше прочитать главу учебника про обработку ошибок еще раз.
Аноним 20/03/21 Суб 12:45:40 1972178359
>>1972176
Ещё раз, как по документации понять, какую ошибку она вернёт? Почему нужно лезть в главу учебника про обработку ошибок? Это что вообще за подход? Почему сигнатуры функции не достаточно, чтобы с ней работать?
Аноним 20/03/21 Суб 12:48:30 1972179360
>>1972176
>а еще на резалт и прочитать описание модуля
Там тоже std::error::Error нет.
Аноним 20/03/21 Суб 14:51:53 1972256361
>>1972178
>parse<F>(&self) -> Result<F, <F as FromStr>::Err>
>where F: FromStr,
>Associated Types
>type Err
>The associated error which can be returned from parsing.
>Required methods
>pub fn from_str(s: &str) -> Result<Self, Self::Err>
>Parses a string s to return a value of this type.
If parsing succeeds, return the value inside Ok, otherwise when the string is ill-formatted return an error specific to the inside Err. The error type is specific to implementation of the trait.

Трейт FromStr требует ошибку Err и метод from_str.
Конструкция parse::<i32>() означает вызов метода имплементированного для типа i32.
Идем сюда:
https://doc.rust-lang.org/std/primitive.i32.html
На странице находятся все трейты типа i32.
Делаем поиск по странице FromStr, находим
>impl FromStr for i32
>type Err = ParseIntError
>The associated error which can be returned from parsing.

РАСТ ЭТО ПРОСТО И ПОНЯТНО
Аноним 20/03/21 Суб 14:52:36 1972257362
Раст сейчас чаще в вебе используют? Я где-то читал что писать какие-нибудь десктопные приложения пока что на нем не удобно. Правда ли это? Или все таки стоит начать его изучать. Пока что пишу на плюсах
Аноним 20/03/21 Суб 15:01:40 1972266363
>>1972256
>>type Err = ParseIntError
Нет, это я уже нашёл, даже лучшим способом, без
>Идем сюда:
на рандомную страницу, а напрямую по ссылкам >>1970144

Теперь задача, как найти std::error::Error или сразу
-> Result<(), Box<dyn std::error::Error>>
Аноним 20/03/21 Суб 15:25:24 1972288364
>>1972266
Box<dyn Error> значит поинтер на любой объект в куче, для которого существует имплементация трейта Error. Для типа ParseIntError такая имплементация есть
Аноним 20/03/21 Суб 15:43:23 1972300365
>>1972288
Да я уже даже нашёл, просто тот анон хвост распушил, книжку меня отправляет читать, а сам в документации прямой путь показать не может, только уже известное ему слово загуглить.
Аноним 20/03/21 Суб 16:03:39 1972320366
>>1972300
можешь нахуй сходить.
Аноним 21/03/21 Вск 09:50:34 1972884367
>>1972300
>Почему надо читать учебник по математике? Почему нельзя просто знать, что 1 + 1 = 2, и из этого сразу понять как быстро умножать и делить в столбик?

У раста охуенные доки, но это не совсем учебник. Ты первый раз видишь раст, но не читаешь учебник по расту. На сишке (или что ты там до раста учил) ты тоже сразу ебошил код, иногда заглядывая в std reference?
Аноним 21/03/21 Вск 11:08:29 1972911368
>>1972884
Ну, смотри, объясню разницу. Посмотрим на другие методы вокруг. Промотаем вниз
pub fn is_ascii(&self) -> bool
Сразу же понятно, как функцией пользоваться, согласен?
Посмотрим вверху, там посложнее
pub fn trim_right_matches<'a, P>(&'a self, pat: P) -> &'a str
Непонятно, что такое P, правильно? Так сразу внизу написано
P: Pattern<'a>,
и пояснено
The pattern can be a &str, char, a slice of chars, or a function or closure that determines if a character matches.
Тоже список примитивных типов.

Вот такое же объяснение я там ожидал увидеть. А там только
Will return Err if it's not possible to parse this string slice into the desired type.

И как это понимать? Вместо bool я ставлю переменную типа bool — она работает, вместо P я ставлю переменную типа Pattern — она работает. Вместо Err я ставлю.. стоп! Err не тип! И начинается пляска с тем, какой же нужен тип. Могли бы ссылку на табличку дать, как в паттерне, могли бы указание на идиому Box<dyn std::error::Error> добавить. Но ничего этого нет.

Не говоря уже о том, что это хотелось бы в компиляторе или в clippy в качестве подсказки увидеть, потому что там пробрасывается вверх уже известная компилятору ошибка (на parse же он не жалуется, жалуется на main), а не лезть в документацию.
Аноним 21/03/21 Вск 11:31:16 1972922369
>>1972884
Это один из тех людей, которые свято уверены, что по учебникам научиться программировать нельзя, и единственный способ это практика без понимания теории.
Аноним 21/03/21 Вск 11:46:45 1972934370
>>1972922
Не надо мне слова в рот класть, я ничего подобного не говорил. Я говорил, что в документации должно быть прописано, как пользоваться функцией. Чтобы не было такого, что тебя просят указать определённый тип, но нигде не пишут, что за тип и в зависимости отчего какой указывать. Чтобы не было
>укажите тип
>bool
>не тот тип
и нигде внятно не написано, какой тип тот
Аноним 21/03/21 Вск 11:48:07 1972935371
>>1972922
и потом пишут такую лютую лапшу что сами разобратся не могут
Аноним 21/03/21 Вск 12:05:49 1972948372
>>1972934
>Не надо мне слова в рот класть, я ничего подобного не говорил
Да, не говорил, но твои действия говорят за тебя. Прочитай учебник и не выёбывайся.
Аноним 21/03/21 Вск 12:06:47 1972949373
>>1972948
Я читаю, но документация должна быть в документации, а не в учебнике.
Аноним 21/03/21 Вск 12:10:59 1972954374
>>1970457
>($($t:ty)*)
Блядь, какие же вы конченные! Пиздец просто.
Аноним 21/03/21 Вск 12:15:36 1972959375
>>1972949
У вас denial. Не волнуйтесь, это пройдет.
Аноним 21/03/21 Вск 12:18:35 1972963376
>>1972959
Что я отрицаю? "Документация должна быть не в документации" это?
Аноним 21/03/21 Вск 12:29:28 1972967377
>>1972963
Что ты затупил, и вся нужная инфа есть.
Аноним 21/03/21 Вск 13:07:30 1973006378
>>1972911
Во-первых, ты проебался, потому что Pattern не тип, а трейт. Вот Err — это как раз associated type, и можно узнать конкретный тип, посмотрев реализацию трейта у нужного тебе типа. Ты никак не можешь подставить свой тип в Err, и тебе нахуй не надо знать какой там тип, если ты не хочешь обрабатывать ошибку. Но если ты хочешь обрабатывать ошибку, то ты уже знаешь какой там тип, иначе как ты нахуй обработаешь ошибку, если ты нихуя не знаешь про тип ошибки?

А если ты тупо вверх пробрасываешь, но ничего не делаешь с ошибкой, то ты не понимаешь, что ты делаешь.
Аноним 21/03/21 Вск 13:56:43 1973055379
Аноним 21/03/21 Вск 13:59:42 1973060380
>>1972967
Но почему её так сложно найти? Почему предложено было искать либо через исходные коды >>1970508, либо через отдельный поиск >>1972256

Я пытался найти прямой путь от
https://doc.rust-lang.org/stable/std/primitive.str.html#method.parse
к Box<dyn std::error::Error>, у меня не получилось.

>>1973006
>А если ты тупо вверх пробрасываешь, но ничего не делаешь с ошибкой, то ты не понимаешь, что ты делаешь.
Но это же просто пример того, как фейлится main, если использовать fn()?; и получить ошибку. Мейны, которые могут завершиться с ошибкой не делают?
Аноним 21/03/21 Вск 14:08:02 1973069381
Аноним 21/03/21 Вск 14:32:00 1973093382
>>1973069
>Делают
Тогда я не понял, к чему было
>А если ты тупо вверх пробрасываешь, но ничего не делаешь с ошибкой, то ты не понимаешь, что ты делаешь.

>но с какого хуя документация к функции parse должна тебе рассказывать про глобальный функционал типа Box<Trait>
Хотя бы просто про трейт std::error::Error. Про std::num::ParseIntError я же нашёл (вы даже с этим не справились), почему оттуда внятно ничего не ведёт?

>Вот если бы ты читал учебник
У меня возникает ощущение, что вы читали только учебник и теперь пытаетесь доказывать, что отлично разбираетесь в очень удобных доках, при этом 3 не отвечая на простой вопрос, а рассказывая "ну иди другую книжку почитай, в документации к языку такого не пишут". Я хочу удобную документацию (и подсказки компилятора), а вы что-то хотите, кроме как унизить новичка, пытающегося в этой документации разобраться?
Аноним 21/03/21 Вск 14:51:06 1973112383
ну очевидный жир
Аноним 21/03/21 Вск 15:04:40 1973132384
>>1973093
>Хотя бы просто про трейт std::error::Error
Ты совсем тупой дегенерат? В расте over 9000 функций, которые возвращают Result<T,E>, ты предлагаешь к каждой из них давать ссылку на трейт, который может быть даже не реализован для E, просто потому что ты хочешь иметь учебник в доках, а не в учебнике?

Ещё раз для тупых и необучаемых: доки и учебник — это разные вещи. Специально покажу разницу между неудобными и удобными доками.

Неудобные:

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

Удобные:

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

Примеры:
1 + 1 = 2
2 + 3 = 5
1 + -1 = 0
-1 + -1 = -2


С какого хуя тебе в сложении должны рассказать об умножении в столбик, животное?

Если бы ты прочитал описание Box<T>, ты бы узнал, что T: ?Sized. Но тебе это ничем не поможет, потому что ты недостаточно умён, чтобы зная только про 1+1=2 дойти до мнимых чисел, и точно так же ты недостаточно умён, чтобы понять, что если T: ?Sized, то можно сделать Bpx<Trait>. Так что не выёбывайся, а то заебал.
Аноним 21/03/21 Вск 15:18:02 1973147385
>>1973132
А это случайно не тот челик который в фак треде советует доку читать вместо учебников
Аноним 21/03/21 Вск 15:49:32 1973171386
>>1973132
>С какого хуя тебе в сложении должны рассказать об умножении в столбик, животное?
>С какого хуя тебе в std::num::ParseIntError должны рассказать об std::error::Error, животное?
Понял твою мысль, спасибо.
Аноним 21/03/21 Вск 18:19:06 1973342387
Screenshot from[...].png 3Кб, 404x55
404x55
>>1973171
Нужно срочно убрать.
Аноним 21/03/21 Вск 18:24:11 1973352388
>>1973342
Согласен, непорядок. С какого хуя тебе в сложении должны рассказать об умножении в столбик, животное?
Аноним 21/03/21 Вск 19:07:08 1973426389
>>1973352
Как говорит вики: "умножение определяется как многократное сложение". Ссылки — это не рассказывание.
Аноним 24/03/21 Срд 17:07:09 1976444390
image.png 18Кб, 396x165
396x165
Вы зачем письмо против Столлмана написали
Аноним 24/03/21 Срд 23:03:10 1976728391
25/03/21 Чтв 11:10:14 1976966392
>>1976444
Кошкодевочки все правильно сделали, Торвальдс, Столман, вся эта старая гвардия топят явно или неявно за меритократию и элитизм в мире софтостроения, а все прогрессивные девочки такое не любят, а любят свободу для всех, равенство, дайверсити и инклюзивити, что полностью противоречит фашистской меритократии белых бумеров-диктаторов из прошлого столетия.
Аноним 25/03/21 Чтв 13:06:42 1977047393
toptal-blog-ima[...].jpg 144Кб, 641x545
641x545
>>1880122 (OP)
Это код из учебника в шапке:

let mut guess = String::new();
let guess: u32 = guess.trim().parse().expect("Please type a number!");

Расскажите, почему это не динамическая типизация?
Потому что если let, то типа не считается?
Аноним 25/03/21 Чтв 14:09:07 1977075394
>>1976966
Разве там не с большой долей иронии всё это написано?
Аноним 25/03/21 Чтв 14:11:42 1977078395
>>1977047
Не считается. Есть Any если хочется.
Аноним 25/03/21 Чтв 14:51:54 1977121396
>>1977075
Нисколько, если все будет так продолжаться штульманы превратят опенсорс в тусовочку для себя и своих подсосов.
Аноним 25/03/21 Чтв 15:40:31 1977172397
>>1977047
В каком место она динамическая если все типы указаны явно?
Аноним 25/03/21 Чтв 16:00:57 1977205398
>>1977047
В расте просто можно создавать переменные с одинаковыми названиями в одной области видимости. При этом первая переменная становится недоступной после объявления второй. При этом у каждой переменной есть свой собственный тип.

В языках с динамической типизацией можно делать так:

let a = 1;
a = "abc";

В расте так нельзя.
Аноним 25/03/21 Чтв 16:09:53 1977220399
>>1977172
Неявное приведение типов означает слабую, а не динамическую типизацию, но если ты решил доколупаться, то это тоже есть в учебнике

let spaces = " ";
let spaces = spaces.len();

Или

let x = five();
Аноним 25/03/21 Чтв 16:12:22 1977224400
>>1977205
Ну, разница только синтаксическая, в rust мы говорим let. Или я что то не догоняю?
Аноним 25/03/21 Чтв 16:27:30 1977251401
>>1977224
Не знаю. Объясню еще раз: let x = ...; создает новую переменную x, с новым типом. Просто x = ...; присваивает значение существующей переменной. У единожды созданной переменной тип изменить нельзя. В языках с динамической типизацией - можно. В расте присвоить переменной значение другого типа нельзя, но можно создать новую переменную с другим типом, с тем же названием. Но это будет уже не та переменная.
Аноним 25/03/21 Чтв 16:52:08 1977304402
>>1977251
Это я понимаю анон.
В одном случае мы старой переменной присвоили новый тип, в другом дропнули её и создали с тем же именем но другим типом.
В чём существенная разница?
Аноним 25/03/21 Чтв 16:57:28 1977321403
>>1977304
Существенная разница в том что в динамических языках тип таскается в памяти в рантайме. Поэтому ты делаешь проверку типа в рантайме. В случае с растом этой инфы в рантайме нет, потому что все проверки делаются статически на этапе компиляции.
Аноним 25/03/21 Чтв 19:27:16 1977433404
Прочитал раст бук, в целом понравилось. Много чего не понял, но под конец уже скучновато стало, так что буду на примерах разбираться.

Кто что вообще пишет на расте, кроме микросервисов для веба?
Хотел бы для себя что-то написать, но гуи не нужен, игрушку думаю не потяну с 2 фултайм работами, нужно что-то, на что можно полчаса/час в день уделять и чтобы по фану было.
Аноним 25/03/21 Чтв 20:21:16 1977471405
>>1977433
https://bfnightly.bracketproductions.com/

Книжка уже старовата, да и некоторые вещи там хуёво написаны, но если не писать игори, то что вообще писать? Хотя я лично рекомендую Legion, а не Specs. Первый намного круче.
Аноним 26/03/21 Птн 01:04:07 1977697406
>>1977433
напиши рей трейсер, это не так сложно как кажется на первый взгляд, можно уложится в 1000 строк кода, а как работает каждая функция как раз можешь по пол часа разбирать, вывод можешь в картинку сделать или в гуи если охота с опенгл поебаться, но тогда уже 1к строк не уложишься
Аноним 26/03/21 Птн 10:43:10 1977895407
>>1977304
> в другом дропнули её

Не дропнули. Дропается она как обычно в конце блока, просто обратиться по имени не получится, но можно сохранить ссылку.
Аноним 26/03/21 Птн 19:23:36 1978390408
>>1977895
Это тоже однохуйственно. Вот этот анон >>1977321 правильно объяснил: компилятор весь код прочесывает на соответствие типов, и в рантайме все будет статически. Но я бы не стал использовать эту фичу, чтобы себя не наебать. Зачем это нужно вообще не могу понять, код не сокращает, ясности не вносит, но запутать может легко. Наверное я просто в философию не до врубился.
Аноним 26/03/21 Птн 19:37:36 1978400409
Анон, подскажи. В rust в основной либе многого нету, и предлагается cargo указывать зависимости в ручную в теге [dependencies]
А где есть вот этот реестр официальных но не включенных зависимостей для rust?
Аноним 26/03/21 Птн 19:49:29 1978410410
Аноним 26/03/21 Птн 21:08:33 1978490411
Мельком почитал макросы в rust - ну просто пиздец днина ебаная. Нет, по сравнению с изжопной дрисней из C(++) - это прогресс, но блять предоставлять доступ к AST языка в самом языке - сразу виден почерк титулованного говноеда. Бог дал им метапрограмминг на завтипах, но нет, лучше сделаем ебаного мутанта из сишных макросов
Аноним 26/03/21 Птн 21:12:42 1978498412
>>1976444
Пиздец, кринж. Зашкварят раст
Аноним 26/03/21 Птн 23:02:09 1978599413
>>1977433
>Кто что вообще пишет на расте, кроме микросервисов для веба?
Это толсто или тонко? Объясните.
Аноним 26/03/21 Птн 23:04:36 1978601414
>>1978498
Трансы пидорасы коммитили в upstream rust'а, значит зашкварили. По понятиям всё, раст - зашкваренный язык. А если ты скачивал офф. релиз на диск, то закшварил ты диск.
Аноним 26/03/21 Птн 23:41:43 1978616415
unnamed.jpeg 35Кб, 130x512
130x512
>>1978601
Трансы - не пидорасы, а уважаемые арестанты. А ты сам то кто по масти? Junior cuck sucker? Ну так не стесняйся, проходи дальше по треду и под шконарь, уважаемый товарищ петушок.
Аноним 27/03/21 Суб 12:45:50 1978891416
>>1978616
Как легко ты порвался от безобидной шутки.
Аноним 27/03/21 Суб 14:10:56 1978939417
>>1977047
Ну так type inference это попытка сделать статическую типизацию такой же лаконичной как динамическая. Так и было задумано. В динамической типизации больше гибкости за счёт меньшей производительности: ты можешь вращать ast прямо во время выполнения, делать eval, получать список переменных в текущем скоупе и прочие приседания которые невозможны/неоправданно сложны в статике.
Аноним 27/03/21 Суб 14:15:55 1978941418
>>1976966
Кошкодевочки просто хотят разрушить всё что есть в этом мире и построить новый коммунизм, где никто их не будет называть обидными словами. А опенсурс как цель для атаки выбран потому что там безобидные гики-задроты, на которых всем можно нажаловаться чтобы их закрыли. Даже если гиков-задротов закроют, никто не запрещает делать форки и начинать новые организации, libreoffice не даст соврать.
Аноним 27/03/21 Суб 14:22:40 1978943419
>>1978490
> метапрограмминг на завтипах
Много наметапрограммировал на завтипах? Давай нормальное сравнение со слайдами и почему нам это выгодно, иначе пиздабол простой.
Аноним 27/03/21 Суб 16:10:13 1978991420
>>1978941
Это лишь твоё мнение. Ты не способен ощутить на себе давление и токсичность всей это sci-fi bro культуры, потому что скорее всего сам являешься её частью. Кошкодевочки хотят сделать программирование доступным для всех желающих, без мобов токсиков-задротов и их ёбаных фюрерков Столманов, Торвальдсов и т.д.
Аноним 27/03/21 Суб 18:35:04 1979071421
>>1978991
Да чё не способен, сам бывал объектом травли и часто просто за глаза ненавидели лютой ненавистью. Вот только всяких любителей поднасрать админресурсом или травить толпой я ненавижу ещё больше.
Аноним 27/03/21 Суб 19:17:32 1979085422
>>1978991
Топят то они за правильные идеи, но "преисподняя полна добрыми намерениями, а небеса полны добрыми делами". Тенденцию к мировому тоталитаризму они только усугубляют. Столлман хоть борец против этого самого тоталитаризма. https://www.gnu.org/philosophy/right-to-read.ru.html глянь на год статьи. Кто тогда об этом думал кроме Столлмана?
Аноним 27/03/21 Суб 19:56:25 1979109423
0-1-e1490271.jpg 34Кб, 500x500
500x500
>>1979085
>Столлман хоть борец против этого самого тоталитаризма.
Это правильная вешь, но "преисподняя полна добрыми намерениями, а небеса полны добрыми делами". Тенденцию к мировому тоталитаризму он только усугубляет.
Аноним 27/03/21 Суб 20:01:02 1979113424
>>1979109
У него есть куча административного ресурса, политическое лобби, корпаративные юристы, которые зачмырили не одну кошкодевочку?
Аноним 27/03/21 Суб 20:04:28 1979116425
>>1979109
Столман свободный имакс написал в свое время. Кошкодевочки в основном только судятся, продавливают законы, искушая государство на подавление свободы слова.
Аноним 28/03/21 Вск 11:57:03 1979381426
>>1978991
>Кошкодевочки хотят сделать программирование доступным для всех желающих
А оно и сейчас доступно, просто кiшкодивчины не хотят собственно программировать, а хотят аппроприировать эту субкультуру, получать 300К\сек и чтобы их в попу целовали
Аноним 29/03/21 Пнд 12:08:59 1980343427
А есть ли язык чтоб как Раст, ну памятебезопасный без сборщика мусора, но простой и легкий в освоении?
Аноним 29/03/21 Пнд 12:32:07 1980353428
>>1980343
Nim какой-нибудь, хз правда насколько точно подходит
Аноним 29/03/21 Пнд 13:24:54 1980382429
>>1980353
В нем сборщик мусора используется.
Аноним 29/03/21 Пнд 15:11:38 1980502430
Аноним 29/03/21 Пнд 22:00:37 1980873431
>>1980343
>как Раст, ну памятебезопасный
Лол
Аноним 30/03/21 Втр 13:03:13 1981239432
>>1980502
Сейчас раст советовать еще рановато, а ты V который нестабилен и с багами
Аноним 30/03/21 Втр 13:04:31 1981241433
>>1980343
Раст простой, ничего сложного нет, попробуй что-нибудь на нем написать
Аноним 30/03/21 Втр 16:51:08 1981495434
>>1981241
Видел там такие пиздец конструкции, и типа это норма, иначе нельзя.
Аноним 30/03/21 Втр 16:54:45 1981500435
>>1981495
раст для элиты, только сверхразум может осилить раст
Аноним 30/03/21 Втр 17:08:06 1981512436
>>1981500
Гордиться илитарностью от понимания хуево спроектированного синтаксиса в следствии кривой реализации благой идеи и переучивать либу и синтаксис раз в полгода - это хуже чем уметь трифорсить и троллить этим в б, а нынче это /postcount

Тредов создано: 67.
Тредов просмотрено: 12321.
Постов: 495.
Аноним 30/03/21 Втр 18:59:40 1981636437
>>1981512
> Гордиться илитарностью от понимания хуево спроектированного синтаксиса в следствии кривой реализации
Ты ошибся, это тред по расту, а не по крестоговну.
Аноним 30/03/21 Втр 19:05:50 1981659438
>>1981636
>переучивать либу и синтаксис раз в полгода
Да нет, вроде всё правильно.
Аноним 30/03/21 Втр 19:38:54 1981743439
>>1981659
Как будто в крестах не так. Выходит новый стандарт раз в три года, считай другой язык вышел, всё теперь надо делать по-другому. Ну ещё заучить талмуд новых undefined behaviour.
Аноним 30/03/21 Втр 19:51:55 1981782440
>>1981743
А причем тут кресты?
Тут про раст речь. Судя по твоим проекциям, я точно попал.
Аноним 30/03/21 Втр 20:32:15 1981850441
>>1981782
Какой дебильный тролль.
Аноним 30/03/21 Втр 20:39:42 1981863442
>>1981782
Куда попал? Даже ссаные жс и питон регулярно что-то меняют. Если хочешь штабильности, то тебе наверное в лисп, там и синтаксиса толком нет.
Аноним 30/03/21 Втр 21:43:21 1981929443
whv.jpeg 7Кб, 196x257
196x257
Написал в своё время прогурамку на расте, захотел переписать её на C, посмотрел зависимости

lmdb = "0.8.0"
sha1 = "0.6.0"
walkdir = "2.2.9"
clap = "2.33.0"
serde = { version = "1.0.98", features = ["derive"] }
serde_json = "1.0"
rustyline = "5.0.0"
regex = "1.2.0"
lazy_static = "1.3.0"
data-encoding = "2.1.2"

И чёт расхотел переписывать, но раст я ебал в рот, шта делоть?
Аноним 30/03/21 Втр 22:18:15 1981954444
image.png 507Кб, 700x700
700x700
image.png 268Кб, 1724x908
1724x908
Читаю последнюю главу пикрелейтед 1. В ней рассказывается, как собрать модуль ядра Linux с использованием https://github.com/lizhuohua/linux-kernel-module-rust .

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

Кто-нибудь сталкивался? Всё свежее, сегодня обновлял.
Аноним 31/03/21 Срд 10:29:36 1982222445
>>1981495
Приведи пример, у меня прост их не было
Аноним 31/03/21 Срд 20:55:09 1982784446
>>1981954
выглядит так, что есть проблемы со стандартом компилятора, путями инклудов или дефайнами
Аноним 05/04/21 Пнд 12:50:38 1986443447
>::
Зачем они эту хуйню сделали? Хотели цпп-дедам подлизать?
Аноним 05/04/21 Пнд 15:52:48 1986638448
>>1986443
А как тебе бы понравилось больше?
Аноним 05/04/21 Пнд 20:42:02 1987137449
Аноним 05/04/21 Пнд 21:09:19 1987171450
>>1987137
Шарп-дедам подлизать?
Аноним 05/04/21 Пнд 22:10:04 1987231451
>>1986443
Ты бы взглянул на первые версии раста, там один в один плюсы с небольшим сахарком. Они и есть цпп-деды, которых заебало. Многое пофиксили, но можно вывезти девушку из C++, но нельзя вывезти С++ из девушки
Аноним 06/04/21 Втр 00:16:41 1987429452
Аноним 06/04/21 Втр 00:19:29 1987436453
>>1987137
Ало, у нас через точку доступ к полям структуры, ты охуеешь компилятор писать, чтобы разбирался с этими ебаными точками.
Аноним 06/04/21 Втр 00:28:49 1987447454
>>1987436
Ты не разбираешься в вопросе
Аноним 06/04/21 Втр 11:32:35 1987705455
Книгу по расту не читай @ вопросы сразу задавай:
Для чего нужен RefCell? Почему не заюзать Arc & Mutex?
Вопросы по AsRef & AsMut - для чего эти конверсии нужны? С виду внутри они ничего не делают. По сути возвращают тот же self.
Спасибо заранее за ответы
Аноним 06/04/21 Втр 16:27:44 1988045456
>>1987705
>Для чего нужен RefCell? Почему не заюзать Arc & Mutex?
>
Они используют атомики и, внезапно, мьютексы, поэтому без многопоточности только замедляют код.

>>1987705
>Вопросы по AsRef & AsMut - для чего эти конверсии нужны? С виду внутри они ничего не делают. По сути возвращают тот же self.
>

Всякие хаки с дженериками. Например в метод get HashMap<String, i32> можно передать ссылку на слайс, на String или на Cow<str>, и она все проглотит из коробки. Иначе пришлось бы везде писать as_str().
Аноним 06/04/21 Втр 19:32:18 1988305457
Хочу сделать консольную фигню, которая будет скачивать с веб-странички все пдф-файлы и вытаскивать из них картинки. Какие либы прошаренный анон порекомендует использовать, чтоб получилось модно, асинхронно и с огоньком?
Аноним 06/04/21 Втр 19:36:23 1988309458
Аноним 06/04/21 Втр 19:52:12 1988324459
>>1988305
Подобная параша наверное на паре строчек в питоне решается. А да я забыл, раст - это же язык для всяких веб-сервисов и прочей вебной параши.
Аноним 06/04/21 Втр 20:02:28 1988337460
>>1988309
>>1988324
Хочу сделать именно на расте для обучения, чтобы потом вебную парашу мутить.
Аноним 06/04/21 Втр 20:20:10 1988349461
>>1987705
Про рефселл тебе ответили, а вот про AsRef и AsMut у тебя неверные данные, ибо берётся ссылка на `Self`, а возвращается ссылка на `T`. Например, есть вот такой вот импл:

impl AsRef<[u8]> for str

В итоге в функцию, которая принимает `impl AsRef<[u8]>` ты можешь запихать как слайс байтов, так и строчку.

При этом и этих трейтов есть некоторое различие с Borrow и BorrowMut, но оно скорее философское.
Аноним 07/04/21 Срд 16:09:53 1989025462
Аноним 12/04/21 Пнд 17:16:29 1993888463
Как идиоматически в расте вывалиться из мейнлупа?

Допустим, есть у меня fn main() {loop{}} с лупом внутри. Внутри которого функции, функции что-то делают. Что можно сделать внутри этих функций, чтобы выскочить? Сначала думал std::process::exit, но
>no destructors on the current stack or any other thread's stack will be run. If a clean shutdown is needed it is recommended to only call this function at a known point where there are no more destructors left to run.
так что не похоже.

Потом попробовал прямо из функции вызвать break; но ожидаемо получил
>cannot `break` outside of a loop

Ещё попытался явно задать, из какого лупа выходить, так что было fn main() {'main: loop {}}, но и это не работает. break 'main; получает >undeclared label `'main`
и тот же
>cannot `break` outside of a loop

Как надо?
Аноним 13/04/21 Втр 01:58:31 1994300464
>>1993888
Эм, в зависимости от возвращенного результата функции сделать брейк?
Аноним 13/04/21 Втр 03:29:14 1994304465
>>1993888

fn main() {
loop {
match looped_foo() { Continue => (), Break => break, }
}
}

enum ControlFlow { Continue, Break }

fn looped_foo() { Continue }
Аноним 13/04/21 Втр 11:51:32 1994466466
>>1994300
Хотел избежать обработки логики в теле цикла, но в итоге пришлось делать так.

>>1994304
Да, примерно так и получилось, но чтобы избежать повторения проверок, пришлось побольше логики вытащить наружу в enum и уже там обрабатывать.
Аноним 13/04/21 Втр 14:56:33 1994616467
Имеет ли смысл ставить найтли и использовать все новые фичи, когда учишься? Когда доваришься, они же как раз в стейбл попадут.
Аноним 13/04/21 Втр 15:13:26 1994630468
>>1994616
Разницы нет, поскольку нет работы. Учишь что нравится.
Аноним 13/04/21 Втр 17:02:42 1994798469
>>1994616
Лучше не надо, потому что либы реально ломаются между билдами.
Аноним 13/04/21 Втр 21:08:01 1995090470
>>1988305
Тебе бы лучше headless chromium и какой-нибудь puppeteer. Модно асинхронно и с огоньком не везде получится страницы проходить, а уж особенно мокрописьки качать, которые всевозможными способами защищены от автоскачивания.
Аноним 14/04/21 Срд 17:30:48 1995953471
>>1994798
Я бы вообще запретил либы писать новичку. По крайней мере не выкладывать в паблик какое-то время.
Аноним 14/04/21 Срд 21:25:08 1996329472
>>1995953
И голосовать должны только люди с достатком выше среднего.
Аноним 14/04/21 Срд 22:04:59 1996376473
>>1996329
Но ведь и правда сложно написать хорошее АПИ если ты новичок.
Аноним 15/04/21 Чтв 11:14:51 1996713474
>>1996376
Ну как сложно. Из-за понятного синдрома не сложно. Просто получается хуета в основном.
Аноним 15/04/21 Чтв 18:14:11 1997250475
>>1880122 (OP)
Пиздец, неужели нет простого способа сделать статический раст-бинарник, не прибегая к изъебствам вроде линковки с собранными из исходников либами (musl, openssl итд)? В go вот заебись сделали, хоть он и параша сам по себе.
Аноним 15/04/21 Чтв 18:34:46 1997268476
Поставил себе VSCodium, накатил аддоны для Rust-а. Добавил папку с Cargo в PATH через xinitrc. Запускаю - выдаёт ошибку,
Rustup not available. Install from https://www.rustup.rs/
Чё за хуйня?
Rust установлен. cargo bueld/run в консоли работает. Даже прости господи, через аддон для Вима работает. А в этой херне - нет.
Чё за хуйня?
Аноним 16/04/21 Птн 01:57:40 1997628477
>>1997268
Судя по тому, что ты умничаешь с xinitrc, коренная причина в том, что ты в некотором роде долбоёб. Способов же прострелить себе ногу у тебя масса: ты мог поставить свой кодиум через какую-нибудь контейнерную срань типа snap; ты сидишь под wayland и ему поебать на твой иксовый конфиг; ты мог использовать ~ и переменные в PATH вместо прямых путей... Просто зайди в сеттингс-экстеншенс-раст, задай прямые пути, и не еби анону мозг.
Аноним 16/04/21 Птн 07:44:20 1997681478
>>1997250
Уточни что тебе нужно. Ты хочешь собрать статический бинарник, но чтобы библиотеки линковались динамически?
Аноним 16/04/21 Птн 08:50:26 1997688479
>>1997681
Нет, наоборот, я хочу слинковать все библиотеки статически. Чтобы готовому бинарнику не требовалось никакое окружение и его можно было бы использовать в docker-образах, собранных с помощью "FROM scratch". Легко добиться этого невозможно, т.к. растовые бинарники динамически слинкованы с glibc. Ок, можно вместо glibc использовать musl, но в таком случае, если проект использует, например, openssl, zlib, curl, придется еще и их собирать самому и тоже линковать статически. В то время, как в go достаточно, грубо говоря, "-tags netgo" и все заебись работает.

В расте самый мимнимальный подходящий для дефолтной сборки образ - distroless/cc-* от google, но там все равно 20 лишних мегабайт лежит. Хотелось бы и от них избавиться.
Аноним 16/04/21 Птн 12:01:39 1997837480
>>1997688
>придется еще и их собирать самому и тоже линковать статически.
Ну и что?
Аноним 16/04/21 Птн 12:15:26 1997848481
image.png 88Кб, 1370x516
1370x516
Аноним 16/04/21 Птн 14:06:28 1997988482
>>1997268
>xinitrc
>.profile
>.bashrc
>.<whatever-sh>rc
Нахуй тебе иксовый rc для установки PATH, ты что, софтварный гомосексуал?
Аноним 16/04/21 Птн 14:14:45 1997994483
>>1997848
А если просто по виндузятской традиции класть so-шки рядом с бинарем?
Аноним 16/04/21 Птн 14:20:00 1998002484
>>1997688
>"-tags netgo" и все заебись работает
Каким образом? В самом трушном гугловом bazel, которым внутри гугла все бинари собирают статически, надо конкретно поебаться, чтобы статически залинковать сишный рантайм. У меня большие сомнения, что go линкует libc статически, ведь смысл внутригугловой политики all build static - в том, чтобы не управлять зависимостями их собственных библиотек, а не в том, чтобы полностью отвязаться от конкретной libc на дистрибутиве. Там и так везде свой унифицированный линукс, собранный и обновляемый из местной монорепы. А собирать все, кроме libc статически умеет и раст, и go, и их же bazel.

>>1997848
Алсо, ровные ребята давно перешли на unikernel, а ты все еще следуешь старинным традициям из 2018г.
Аноним 16/04/21 Птн 15:06:32 1998050485
>>1997994
distroless/cc-debian10 это оно и есть - so-шки в тех местах, где они должны быть (/usr/lib и прочее). Цель - сделать без so'шек, единый бинарь.
>>1998002
Ты, тащемта, прав, go не линкует (g)libc статически - он вообще не использует (g)libc.
>Go binaries are statically compiled by default.
but if you are using net or os/user, you will get a dynamically compiled executable (linked against libc)
>You will have to provide the netgo and usergo build tags to use the Go-based dns resolver (instead of libc's) and the Go-based function to query the Unix user “database” (instead of libc's).
>Каким образом?
Повторюсь, таким, что собранный из scratch докер-образ с гошным бинарем работает нормально, а с растовым - обсирается (ибо растовый бинарь динамически слинкован с libc, а libc в scratch нет).
Аноним 16/04/21 Птн 15:41:24 1998074486
>>1998050
>Ты, тащемта, прав, go не линкует (g)libc статически - он вообще не использует (g)libc.
Я нагуглил, что в go мейнстримный рантайм использует свою собственную реализацию для осуществления сисколлов. В rust есть нативные альтернативы libc, но их нельзя назвать мейнстримом, на котором работает подавляющее большинство пакетов. Так что вот така хуйня
Аноним 17/04/21 Суб 23:18:34 1999672487
Аноны, а как в расте с утиной типизацией? В книге трейты всегда привязываются к конкретным типам через impl блоки. А можно ли, как в плюсовых шаблонах, работать просто со всеми типами, совместимыми по сигнатурам методов и полей?
Аноним 18/04/21 Вск 09:14:19 1999929488
>>1999672
Можешь определить макрос вида impl $TypeName { } и вызывать для каждого типа. Это не универсально и крайне херово масштабируется, но работает.
Аноним 18/04/21 Вск 09:20:53 1999932489
>>1999672
В плюсах от этого бегут как от чумы, а ты тащишь это говно в раст. Ты нормален?
Аноним 18/04/21 Вск 09:29:35 1999935490
>>1999932
>В плюсах от этого бегут как от чумы
Орлы
Аноним 18/04/21 Вск 11:34:40 2000063491
>>1999672
fn foo(t: impl Into<DuckType>) { }

Утиная типизация не нужна, но если очень хочется, то есть варианты. Например, берёшь вот это вот:
https://docs.rs/frunk/0.3.2/frunk/generic/trait.Generic.html

и делаешь вот так вот:

fn foo<G>(g: G)
where
G: Generic<Repr = DuckType::Repr>,
{ let duck: Ducktype = frunk::convert_from(g); }

Но очевидно, что для работы такого дактайпинга тебе надо на все используемые типы задерайвить Generic трейт. Так что на типы из чужих либ ты таким образом дактайпить не сможешь.
Аноним 18/04/21 Вск 11:56:16 2000093492
Аноним 19/04/21 Пнд 11:33:52 2001099493
Аноним 19/04/21 Пнд 17:16:56 2001628494
>>1882589
похуй, пусть учат английский
Аноним 21/04/21 Срд 18:32:10 2003695495
>>1996713
Раст совсем не тривильный язык когда касается написания грамотного АПИ. И синдромы тут не при чем.
Аноним 21/04/21 Срд 18:48:32 2003714496
>>2001099
Как я понял const не подчиняется некоторым правилам работы с переменными. (Можно строго сказать что это и не переменная вовсе)

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

https://dtolnay.github.io/rust-quiz/24
https://dtolnay.github.io/rust-quiz/3

Лично мне они были не очевидны.
Аноним 21/04/21 Срд 18:50:13 2003717497
h1.jpeg 66Кб, 276x361
276x361
>>2003695
>И синдромы тут не при чем
Я слышал кто-то сказал в этом треде синдром?
Аноним 23/04/21 Птн 21:19:41 2006201498
>>1999672
неявные привязки это плохо, ты в этих макаронах сам запутаешься потом
Аноним 24/04/21 Суб 22:57:27 2007516499
Хули ваш раст жрёт столько энергии?

Я с ноутом в метро 4 остановки проехать не успеваю, как от 100% до нуля батарея падает.

Другие языки с другими компиляторами такой проблемы не имеют.
Аноним 24/04/21 Суб 23:02:50 2007525500
>>2007516
Компилятор сложный, производит много выводов о типах. Но при этом хорошо оптимизирован так как ругали его за скорость работы.

Вот эти самые оптимизации компилятора научились в т.ч. как следует использовать все возможности процессора, потому и жрет как не в себя.
Аноним 24/04/21 Суб 23:28:53 2007558501
>>2007516
ты б еще идрис компилил и жаловался, что долго
Аноним 25/04/21 Вск 01:01:48 2007654502
>>2007558
идрис вроде перевыпустили хз че там
Аноним 25/04/21 Вск 14:01:56 2007972503
>>2007654
Он просто ещё сложнее стал, а 2.0 — это не перевыпуск, это из-за брикинг чейнджей ссемвер пришлось апдейтить.
Аноним 26/04/21 Пнд 18:41:34 2009397504
А вот и оно! Когда-то я спрашивал про то почему в раст можно передать Some(х) в функцию, которая ожидает функцию. Прекрасное объяснение от matklad (контрибьютор в раст, обучает людей. всем рекомендую эти видео. Он еще вроде создатель rust-analyzer по крайней мере плагин для vscode показывается так) https://youtu.be/32cSLAe4aOw?list=PLlb7e2G7aSpTfhiECYNI2EZ1uAluUqE_e&t=918
Аноним 26/04/21 Пнд 19:12:02 2009437505
Аноним 26/04/21 Пнд 19:15:04 2009440506
Аноним 26/04/21 Пнд 19:25:01 2009450507
Аноним 26/04/21 Пнд 19:26:48 2009452508
>>2009450
блин, а я вчитываюсь в код ничего не понимаю, уже думал что совсем отупел, лол
энивей спасибо за ссылки
Аноним 02/05/21 Вск 23:50:29 2017018509
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов