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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Rust #6 /rust/ 1327089 В конец треда | Веб
Rust — невероятно быстрый язык для системного программирования без segfault'ов и с гарантиями потокобезопасности.

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

https://www.rust-lang.org

> Пачиму helloworld весит как моя мамка?!1й


https://lifthrasiir.github.io/rustlog/why-is-a-rust-executable-large.html

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

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

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

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

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

Оп рекомендует:
https://www.amethyst.rs/
https://github.com/TatriX/dvach
2 1327232
Какую смазку брать для моего парня брать?
3 1327239
>>27232
Ржавую.
4 1327246
>>27089 (OP)
Взял вашу книжку полистать. Первая же угадайка поломалась:

io::stdin().read_line(&mut guess)
.expect("Feiled to readlineliiil)");

Даёт ошибку "type `core::result::Result<usize, std::io::error::Error>` does not implement any method in scope named `expect`"

А вот это робит:

io::stdin().read_line(&mut guess);

Да, жалуется, но поведение хотя бы запускается и делает что надо.

Что за хуйня?
2019-01-15-1424511458x698scrot.png114 Кб, 1458x698
5 1327249
>>27246
Незнаю, нужно больше инфы.
123334.jpg496 Кб, 1099x778
7 1327257
>>27249
>>27250
Обнаружил в чём проблема:
rustc 1.0.0-beta (9854143cb 2015-04-02) (built 2015-04-02)
cargo 0.0.1-pre-nightly (84d6d2c 2015-03-31) (built 2015-04-01)

И это на офсайте ж нашёл. rustup-init, кстати, не сработал почему-то.
Сейчас бету снёт, накатил 1.31.1 - всё хорошо.
Внезапно и cargo стало прям как по примерам генерировать всё.
8 1327261
Объясняю почему Rust говно.
1) Как системный ЯП, Rust медленнее, чем C. Причем, в одном случае вы будете ебаться со сложной системой управления памятью (аки защита от макак) , а в другом - с собственным говнокодом. Подразумевается, что системеный программист не макака и способен нормально организовать работу с памятью, без искусственных ограничений встроенных в ЯП.
2) Как прикладной ЯП неудобен (см. пункт 1). Невасянский GC не завезли.
9 1327262
>>27261
Количество уязвимостей в коде твоего сферического системного программиста показывает что можно пожертвовать скоростью в пользу безопасности в общем случае. Впрочем, утверждение что одно медленней другого так же ничем не подкреплено.
10 1327264
>>27261
Но ведь системное программирование не ставит своей целью сверхскорости. Это скорее побочный эффект с того, что С фактически является обёрткой над Ассемблером.
11 1327267
Если раст не быстр, значит и не нужен.
12 1327276
>>27261
Ты ни на си, ни на расте не писал нихуя.
13 1327330
>>27261
Дак ты, это, не с Цэ сравнивай, а с Цэ++. Быстрее сей бывает только ёбля голого ассемблера и фортрана.

Аноны, я и сам хуй простой, только вкатываюсь. Такой вопрос, как бы сделать
(a as i16 - b as i16).abs() as u8
но поизящнее? Нужно вычесть из одного беззнакового другое, получается только вот так топорно.
14 1327335
Раст по скорости на уровне питона.
15 1327364
>>27335
Хихикающая девочка-фротнендер? Заёбанный дядя-плюсист с пятью детьми? Школьник-максималист с комплексом великого провокатора?
Кто же ты, о чудо?
16 1327376
>>27330
a.checked_sub(b).unwrap_or(b - a)
17 1327381
>>27364
Реалист, мань
18 1327390
>>27376
едрить, ну и костыль. Хотя, сам пример интересный, спасибки.
19 1327393
>>27390
Раст это костыль на костыле с убогим синтаксисом. Даже для мк не попрогать на нем.
20 1327427
>>27393
Ну а как бы ты вычел на ассемблере? Тут или распаковывать в знаковое, или вычитать из большего меньшее. Вот системность раста, как языка, она об этом. Вот тут даже хз, что будет шустрее, вроде бы на simd есть команды для сравнения и сортировки, так что и там, и там вариант со сравнением, скорее всего.
22 1327487
>>27330
Вполне себе заглатывает и у це++ >>27486
23 1327495
>>27276
lab1.c lab2.c lab3.с LAB4.c
не хотел?
24 1327509
Чем плохо переписывание существующего кода на раст? Почему это так не любят?
25 1327521
>>27509
Ничего плохого если ты сам этим занимаешься. Не любят из-за товарищей которые в иссуях на гитхабе капают на мозги мол давай переписывай свою хуйню на раст, раст ебать топчик.
26 1327525
>>27521
В каких Иисусах?
27 1327539
>>27525
Issues.
28 1327600
>>27539
Почему ты пишешь имя Иисуса на английском языке?
29 1327625
Вопрос к прошаренным. Не сочтите за наезд или троллинг.
Раст вообще развивается? Что там нового?
Просто часто слышу в разговорах, что раст застопорился. Расскажите кому не лень и кто шарит. Только подробно.
30 1327627
>>27625
Хуясе застопорился. Недавно выкатили 2018 версию с кучей новых фич. В этом году ожидаются две большие фичи: корутины и константы в генериках. А так сами разработчики не хотят торопить события и сосредоточится на стабилизации и допиливании существующих фич, а не придумывании новых.
31 1327630
>>27627
Ясно. Смотрел давно видос, что лысый из яндекса нахваливал язык. Сейчас где юзают его, в каких проектах/конторах?
32 1327665
>>27487

>заглатывает и у це++


https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/c.html
у него и сишечка заглатывает, если так посмотреть.
33 1328487
Что-то я читаю всякие реддиты-медиумы-хакерньюсы в последнее время и замечаю , что люди прям срут на раст. И собсна вопрос, а чего нас так вдруг невзлюбили? Язык не особо чем выделяется, чтоб говном поливать. Растаманы не индусы, и не фронтендеры. Оглядел тред, тут тоже какие-то буйственные настроения. В чем хейт то пошел ? Я что-то пропустил ?
34 1328499
>>28487
Сперва был хайп, переоценка, теперь идёт откат. Таким маятником и устаканится отношение к нему.
Не срут же на джулию, с которой я на него вкатился, а она то ещё говнецо.
35 1328508
>>28487

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



Разочарование, хотели чтобы язык кресты убил, а он в середине своего развития упоролся и чижика съел.

Ну и в первую очередь потому что хотелки нипалучились и устраивающей всех по фичам стабильной спеки ещё так и не вышло.
36 1328571
>>27089 (OP)

>Rust — невероятно быстрый язык


Такой быстрый, что в некоторых тестах даже медленнее C#

>regex-redux


>C# .NET Core 2.22


>Rust 2.44

6Mfy5mrd.jpg21 Кб, 640x554
37 1328592
>>28571
Лол, я даже не глядя уже понял , с какого сайта бенчмарки такие идут. Интересно , сколько ещё клованов найдется , которые все его цитировать будут. В каждом ебаном треде о каждом ебаном языке, блять.
horriblesubs-nisekoi-13-1080p-mkvsnapshot20-152014-04-0523-[...].jpg34 Кб, 736x414
39 1328639
40 1328643
>>28571

>[DllImport("pcre2-8", EntryPoint = "pcre2_compile_8", CharSet = CharSet.Ansi)]


Эх, щас бы сравнить встроенную библиотеку раста с сишной библиотекой регулярок от гугла и назвать это тестом перформанса раста вс шарпа ¯\_(ツ)_/¯
41 1328649
>>28487
Дизайн языка плохой, рестриктивный.
Он не делает решение никаких задач проще. Запретили одну дырявую абстракцию, в итоге на расте пишут другие точно такие-же дырявую абстракции адресации памяти с точно такими-же багами.
42 1328655
>>28643
А тебе кто-то запрещает использовать интероп в шарпе?
Наоборот, это преимущество языка. 90% кода пишутся на простом, высокоуровневом языке, а там, где нужна производительность, вынести в быстрые библиотеки.
43 1328659
>>28655
Это всё очень хорошо, но это не будет показателем производительности C#, так что такие бенчмарки идут нахуй.
44 1328661
>>28649

>Он не делает решение никаких задач проще.



Он делает проще задачу поиска проблем из категории buffer overrun, use-after-free и aliasing. Ничего кроме этого он не заявлял.
45 1328664

>Rust is fast


Not with the number of defensive copies or arbitrary synchronizations you need to make to satisfy the BC.

>Rust can easily integrate with other languages


No stable ABI

>Rich type system


No HKTs
No pi types

>guarantee memory-safety


Still trivial to leak memory with a reference cycle

>productivity


Enjoy fighting the BC more than doing actual work
46 1328670
>>28664

> Enjoy fighting the BC more than doing actual work


С таким настроением только в языки с gc.
47 1328672
>>28487
На всё чем хоть кто-то пользуется срут все кому не лень, см. цитату Страуструпа.

Алсо, так же можешь посмотреть на коменты под новостями о новых версиях какого нибудь окамла (которых нет). Так что, наличие критики = используемость.
363602.jpg69 Кб, 725x465
48 1328690
>>28672

>см. цитату Страуструпа.

49 1328694
>>28670
Че, неприятно? Язык не оправдывает своих ожиданий и разработчики нагло врут о якобы быстром языке.
50 1328697
>>28694

> нагло врут о якобы быстром языке


Это ты про сишарп вкинул что ли?
51 1328750
>>28664
Ловите борщехлеба.
sage 52 1328761
>>28750
К чему ты это пропердел?
53 1328769
>>27625
Если все такие умные может ответите?
54 1328809
>>28769
https://github.com/rust-lang/rfcs/issues
https://github.com/rust-lang/rust/issues
хз, тебе что нужно-то? go, вон, вообще почти не развивается - а хипстеры жрут и добавки просят. Фич уже предостаточно, чтобы взять и пользоваться.
55 1328812
>>28809
А это правда, что Rustовитяне все CoCолды?
56 1328815
>>27232
по поводу гомофобии, которая постоянно всплывает в растотредах
вы хоть понимаете, что это не только раста касается, а вообще всех новых технологий разрабатываемых в бездуховных геймерике и гейропе? где они преобладают, там и кок/сжв/лгбт будут как правило! и в таком случае вы предлагаете из-за этого тупо гасить всё новое оттуда или есть варианты получше?
57 1328818
>>28815
Когда по существо нечего сказать, включают петросяна.
58 1328821
>>28815
Программировать на C++, разве там много LGBT?

>>28818

>по существу нечего сказать


Почитай это >>28664
59 1328823
>>28821
Нечего там читать. "Я не осилил борроу-чекер, я хочу систему типов как в языках с гц, но с перформансом сишечки". Хотеть не вредно.
60 1328828
>>28823
Борроу-чекер просто НЕ позволяет тебе писать быстрый код
Какой сейфти, если утечку памяти можно сделать через обычный референс цикл?
Какое компатибилити, если хуево поддерживается двоичный интерфейс приложений?
Ну и видимо, кроме hello world'ов ты сложнее ничего не писал, да и понятно почему, ты не смог заставить код работать из-за BC
61 1328831
>>28828
Мань, ну вычитал ты где-то кукареки того, кто не разбирается в том о чем говорит, ну молодец.

Пруфа про связь борроу-чекера и скорости?
Мемори-сейфити != нет утечек памяти
Какая связь между гаратниями совместимости между версиями раста и ABI?
62 1328841
>>28821

>Программировать на C++, разве там много LGBT?


сразу вспомнилась картинка двух программистов в леопардовой раскраске
не знаю как сейчас, но если для с++ предполагается приток новых программистов, то там будет также, ибо новые поколения молодых людей уже воспитываются в том духе, который неприятен гомофобам
что тогда будете делать?
63 1328844
>>28841
Создадут нормальный язык. И в этом случае производительность программистов будет намного больше, чем на других, лгбтшных, потому что им не нужно бороться с самоидентификацией и харассментом
64 1328845
>>28844
Очень надеюсь что ты либо тупой троль, либо глупый ребенок. Потому что иначе, у меня для тебя плохие новости.
65 1328850
66 1328853
>>28845
Во-первых, вы тысячу лет ебетесь с BC. Осилить BC значит потратить дохуя драгоценного времени, вместо работы
Во-вторых, это гендерно-небинарные животные. Любой откровенно плохой код будет котироваться, т.к. "плохой код" - это термин цисгендерных угнетателей.
В-третьих, а впрочем, уже достаточно.
67 1328865
>>28853

> Осилить BC значит потратить дохуя драгоценного времени, вместо работы


Не осилить бц значит потратить больше времени на последующую отладку. Или ты тот самый гениальный программист который пишет сразу без ошибок? Тогда непонятно с чего вдруг у тебя проблемы на такой мелочи как бц.
68 1328869
>>28844

>Создадут нормальный язык.


а с железом и всеми остальными технологиями как быть? приходите за техподдержкой, а там ОНИ
69 1328879
>>28869
Приходится сейчас на Путина только и надеятся, что не даст пидорам захватить рынок
70 1328888
>>28831

>Мемори-сейфити


Не было и никогда не будет. Анально огораживаешь одну модель памяти, а потом прописывает не тот индекс массива и ловишь panic
71 1328894
>>28888
во-первых, никто не запрещает тебе пользоваться итераторами и прочую функциональщину.
во-вторых, сейфти там скорее о том, что у тебя не возникнет ситуаций, когда 2 потока меняют значения по одному адресу, либо один поток удалил массив, а второй об этом не в курсе (на сях такая поебень даже в однопоточном коде встречается).
в-третьих, у раста хотя бы паники адекватные. Я бы даже сказал, приятные.
72 1328932
>>28888
Ну дык обращение по индексу делается если ты точно стопроцентно уверен что нужное значение там есть. Если не уверен, делаешь get(i) и получаешь свой Option<T>
1547753527806.png83 Кб, 500x700
73 1328933
sage 75 1329009
>>29005

>jemalloc is removed by default


дальше не читал.
Моя драм-машина.webm14,1 Мб, webm,
616x420, 5:01
76 1329081
Non-lexical lifetimes можно как-то отключить?
Знаю что можно выставить edition = "2015", но это все 2018-edition-фичи отключит, а можно ли вырубить отдельно nnl?
77 1329092
>>28809
Мне интересно НОРМАЛЬНОЕ и объективное мнение по языку. Я зашел не тролить, мне реально интересно, потому что нравится С++(На работе java). Просто я не хочу пока что в него погружаться, чтобы разбираться в нём.
Своё мнение напиши. Как язык, что нравится а что нет.
855702.png253 Кб, 460x460
78 1329093
>>28812
Конечно нет. Взгляни на этого парня. Он ебёт шведских цыпок по две штуки в день пикапя их рассказами про хаскель.
79 1329119
>>29092
Ну, мне пока всё нра. Не хватает https://github.com/rust-lang/rfcs/issues/2092 разве что.
Если сравнивать с плюсами, то у раста
- меньше паник
- паники читабельны и понятны (сегфолты в плюсовом ооп коде та ещё мерзость)
- есть cargo
опять же, у плюсов есть хорошие фичи, типа умных указателей (не бц, но типа похоже), но это опционально - можешь юзать, а можешь и не юзать. Или ты будешь юзать, а кто-то нет - в какую-нибудь стороннюю функцию, которая юзает обычные указатели, умный уже не передашь.
А вообще я novichok, неделю на расте
80 1329148
>>29092
нормальное и объективное мнение: язык говно. тупо добавили read write lock для всех переменных на этапе компиляции.

говорят, что многопоточное программирование сложное из-за ебли с синхронизацией и mutex'ами, т.к. сложно этот весь зоопарк контроллировать и уследить, нужно постоянно строить ментальную модель в голове что где откуда читается, где блокируется и т.д.
а теперь представь, что ВЕСЬ код на расте нужно писать как многопоточный код с mutex'ами.
81 1329153
>>29148
А чего там сложно с мютексами-то? Вот с атомиками, да. Заебёшься придумывать как так сделать чтобы оно работало и было быстрее старого доброго лока.
82 1329222
>>28888

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



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

>>29148

>говорят, что многопоточное программирование сложное из-за ебли с синхронизацией и mutex'ами,



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

>а теперь представь, что ВЕСЬ код на расте нужно писать как многопоточный код с mutex'ами.



Если ты не макака, ты ХОЧЕШЬ писать в таком стиле что на плюсах, что на Питоне, потому что огребешь проблем, если вызов функции поменял состояние , а ты не уследил.
83 1329540
>>29081
Просто ради интереса: а зачем? То есть оно же никак не мешает.
84 1329553
>>29148

>ВЕСЬ код на расте нужно писать как многопоточный код с mutex'ами



ЧИВО БЛЯТЬ? То есть я абсолютно не понимаю что ты спизданул. Какой весь код с мьютексами? Код пишется абсолютно нормально. Да, иногда приходится думать, почему ругается BC, но как бы тут на тебя ругается компилятор, а в C(++) это будет или сегфолт, или какая-нибудь забавная гонка данных, которую хуй отладишь. Или оверхед на смарт-поинтеры, да.

А сейчас еще NLL в раст добавили, теперь можно потихоньку и отвыкать от старых правил.

Да, бывает, что BC на нормальный код ругается и приходится подсказывать ему с помощью лафйтаймов, но это крайне редкий случай, и лучше уж так, чем потом сидет в дебагере, разбирая, а где же там все разъебалось.
85 1329726
>>29553

>NLL в раст добавили


Замечательно. Пока не скомпилируешь, не поймёшь есть ошибки или нет.
86 1329736
>>29726

> Пока не скомпилируешь, не поймёшь есть ошибки или нет.


Есть RLS, он компилирует в бекграунде и показывает ошибки сразу. А вообще двачую. Лучше бы сделали как в C++: пока не запустишь, не поймёшь есть ошибки или нет.
87 1329783
>>29726
В любом языке так делаю, чтобы не отвлекаться от алгоритма, который пишу, зависимости нет.
88 1329796
>>29726
Так падажжи ебана, а что не так? Конечно можно как в джаваскрипте ловить "undefined is not defined", но я как-то предпочту отловить ошибку ДО ТОГО, как программа запуститься. Странное желание, конечно.
Теперь ты подчиняешься мне.webm10 Мб, webm,
747x420, 4:35
89 1329966
>>29796
Думаю он имел ввиду что раньше ошибки лайфтамов он мог найти даже без компиляции - статическим анализом, посчитав скоупы.
Вообще я не знаю нужна ли компиляция теперь, но проверять "в голове" определённо сложнее стало.
>>29540
Вот собственно затем.
Я раст только изучаю, а nnl усложняет понимание и так сложной системы лайфтаймов.
90 1330099
>>29966
Нужно всего лишь этот статический анализатор сделать и будет работать ровно так (или таки воспользоваться RLS/Racer).ТО есть в такой формулировке проблема только в том что еще нет такого инструмента. В C++ вряд ли IDE волшебным образом находила сама ошибки, да.
20190120-b0b88.png141 Кб, 587x543
91 1330368
>>29966

>я не знаю нужна ли компиляция теперь


У меня в виме плагинчик, которых высвечивает мои косяки при каждом сохранении файла - вы об этом? Если да, то хз, как вы без этого живёте.
алсо, поясните за лайфтаймы и вообще структуру - не наворотил ли я пиздеца
92 1330480
http://ticki.github.io/blog/why_im_leaving_open_source/
один из главных разработчиков redox os сдулся
93 1330489
>>30480

> My main reason is that I have chosen to pursue a career in mathematics research.


Ну понял чел что писать код это не его. Что с того?
94 1330490
>>30480

>6 May 2018

95 1330528
>>30480
The proposals were not aligned with the language goals. I was, as is recurring, too ambitious, thinking that I could reform the whole type system with all these new nice theoretical properties, many of which are more complicated than useful.

Вся суть
96 1330666
А что это за браузер на вебмке, где по тредам маршрутизируют, словно по миднайт коммандеру?
98 1330973
>>30368
Вложенные слайсы? Почему не просто Vec<Vec<T>> ?
99 1331177
>>30973
Хотелось построжее. Однако, эти лайфтаймы, энто что-то, а вот вектор, ну совсем распиздяйский тип. Но я нашёл сторонний костыль - ArrayVec.
100 1331292
>>31177
Построже с чем? Единственное прямо преимущество, которое я вижу, это потенциально более эффективная работа слайсов, по сравнению с веторами.

А так вообще непонятно какую задачу ты пытаешься решить. Судя по ArrayVec ты знаешь уже конечный размер своей "матрицы". Тогда почему не просто массив массивов?
101 1331329
Кто то использует связку Rust + Vulkan api?
102 1331773
Начинаю только изучать Rust
Подскажите, пожалуйста, что означает символ "?" в конце некоторых функций/методов? И как он называется, чтобы пойти в доках почитать подробнее
104 1331806
>>31773
исключения для бедных
105 1331913
>>31779
>>31806
пасибки :3
106 1331922
>>31292

>почему не просто массив массивов


мне нужен массив массивов с конечным типом ImageBuffer. Допустим, у меня 40 на 40 - как мне проинициализировать такую-то еблолу?
1. С ссылками я мог бы сделать [[&someImage; 40]; 40];
но ссылки в структуре, это пока неподвластное мне ниндзютсу
2. Если использовать [[someImage; 40]; 40], то это даёт ебический оверхед при создании - сперва скопируй 40х40 раз одну хуйню, потом заполни другой.
3. Можно обернуть ImageBuffer в п.2 в Option и заполнить нонами вместо someImage, но на хрен такое только ради создания - потом-то у меня однозначно всё на месте будет.
4. Остаётся юзать вектор, как и остальным слабакам
107 1331953
>>31922
А зачем нужна одна и та же хуйня 1600 раз?
108 1331979
>>31922
То есть я правильно понял, что тебе нужен 40x40 массив со ссылками на уже существующие объекты? Или что?

Вот ты пишешь:

> мне нужен массив массивов с конечным типом ImageBuffer


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

Если проблема в том чтобы проинициализировать, то тут или вектором, или намути макрос, который за тебя заебашит инициализацию такого массива (я даже уверен что уже подобные хелперы существуют).
109 1331987
>>31979
Может я тупой, но.. проблема в том, чтобы создать пустой массив типа ImageBuffer и потом заполнить значениями. Нужно или сразу создать заполненный - а это лишнее копирование, или сразу инициировать - а это 1600+ строк кода инициализации. Хотя, на счёт макроса я погуглю, сам такое писать пока не осилю.
>>31953

>одна и та же хуйня 1600 раз


вот так в расте инициализируются массивы. Сперва одна хуйня 1600 раз, а уж потом фигачишь туда 1600 разных хуйней вместо неё.
110 1332011
>>31987
Все, понял. Ну да, создать "пустой массив" нельзя (как через malloc в C), ибо получится кусок памяти, который заполнен мусором (очевидно). Проще всего тогда через векторы, наверно:

let x: Vec<Vec<ImageBuffer>> = vec![Vec::with_capacity(40); 40];

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

Есть еще ОЧЕНЬ НЕКРАСИВЫЙ вариант: https://doc.rust-lang.org/nomicon/unchecked-uninit.html , но я бы без веской необходимости им не пользовался.

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



Ну так ты сразу пихай туда нужную хуйню.
sage 111 1332012
То есть в расте нет адекватного решения на это?
112 1332014
>>32012
А что в твоем понимании адекватный вариант?
113 1332034
>>32011
Нашёл array-macro, заглянул ему под хвост, а там всё тот же ArrayVec https://github.com/xfix/array-macro/blob/master/src/lib.rs
короч, пока на ArrayVec я и посижу.
114 1332795
Лол, я этого автора уже по заголовкам определяю, очень у него статьи своеобразные.
https://habr.com/ru/post/437128/
115 1333481
>>27089 (OP)

> Упражнения


> https://exercism.io/tracks/rust


А там всегда по 3-4 дня ждать ответа?
116 1333503
>>33481
Да. Никто же на языке не пишет.
117 1333536
>>33481
Линкани сюда, посмотрим.
118 1334327
Посоны, а если я открытый гейсо всеми атрибутами типа полосатого хедера в свиттере, радужного бэкграунда на аватарках и тд, это будет считаться преимуществом при отборе на вакансию?
119 1334476
>>34315 (Del)
>>34327
ГЫЫЫЫЫЫ мам смотри там педики в разработке конпелятора участвуют ГЫЫЫЫЫ на работу на расте берут только педиков ГЫЫЫЫ мам я затролел их

пожалуйста, съеби назад в свой пщ-тред, ребенок
120 1334547
>>34476

>яростный кукарек обиженного СоСолда


думаю, теперь всем окончательно стал понятен общий уровень завсегдатаев этого треда
121 1334549
>>34548 (Del)
Было бы смешно, он бы не агрился. Мне вот тоже не смешно. Нахуй вы несмешно тралите?
122 1334559
>>34547

> пук


> среньк


Ясно
123 1334561
>>34548 (Del)

> бля ахаха смотрите там педики а если я педик меня возьмут к ним гыгыгы


Очень смешно, да. Может тебе еще и русские комедии нравятся?
124 1334562
Ес
20190126-41865.png53 Кб, 1185x124
125 1334770
Аноны, поздравьте меня с первым unsafe: мучу каст из Vec[u8] в Vec<Rgb<u8>>

вообще, сразу вопрос:
ImageBuffer<Rgb<u8>, Vec[u8]> => (через .into_raw()) => Vec[u8] => (через unsafe mem::transmute::) => Vec<Rgb<u8>>
я ничего по пути не проебу?
картинка на случай проёба разметки
126 1334791
>>34770
А ты уверен, что у Rbg<u8> паддинга нету?
Лучше реализуй для Vec<u8> что-то типа GetPoint() -> Rgb<u8>. Или вообще сделай свой ImageBuffer массивом векторов, так и векторизация лучше работать будет.
127 1334792
>>34791

>массивом векторов


В смысле, вектор под каждый канал.
128 1334799
>>34770
Покажи лучше код. Из твоего описания тяжело сказать, не проебешь ли ты чего. Но кажется что не должен, Rgb устроен максимально примитивно (это же из image, да?), там вряд ли что может помешать (разве что на вход получишь таки не Rgb картинку, а что либо другое).
129 1334800
>>34791
Нет, оно repr(C). Я недавно оттуда напрямую гонял байты в opengl, все нормально.
130 1334810
>>34799

>image


да оно самое. Кода много, я там типы привожу, макросы хуячу - чтобы безболезненно можно было на Rgba или grayscale перекатиться.
>>34791

>у Rbg<u8> паддинга нету


А вот как понять? Вроде простая структура https://docs.rs/image/0.21.0/image/struct.Rgb.html

Лан, сча тестом покрою через обратную конвертацию и сравнение, и заебок. Как же охуенно, что в расте так элементарно пишутся тесты.
131 1334841
Я раст не знаю, но мне очень интересует наверное единственный существующий язык-альтернатива си. И меня интересует, каким именно образом в расте осуществляется в ней защита от утечек памяти и потокобезопасность?
132 1334850
>>34841

> И меня интересует, каким именно образом в расте осуществляется в ней защита от утечек памяти и потокобезопасность?



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

Утечки, если постараться, можно получить, от дедлоков, если действовать неаккуратно, тоже никуда не денешься..
133 1334926
>>34850

>Утечки, если постараться, можно получить


А если стараться не получать утечки, то легче ли их будет предотвратить чем в С?
Я хоть на С и писал только одни лабы, но даже в них всё равно сталкивался с утечками памяти, даже когда старался их предотвратить. В расте с этим всё как я понимаю намного проще и компилятор не даст скомпилировать откровенную лажу?
134 1334933
>>34926
В си ты скорее всего просто забывал освободить память, оттуда и утечки.
Чтобы получить утечки в расте, нужно сделать хитровыебанный цикл между Rc.
135 1334936
>>34933

>В си ты скорее всего просто забывал освободить память, оттуда и утечки


Именно так и есть. Поэтому для обнаружения и предотвращения утечек мне приходилось использовать следующий метод: я запускал проверяемый кусок в бесконечном цикле и смотрел в менеджере процессов на потребляемую процессом память. Если она оставалась константной, то значит всё в порядке, а если нет, то значит в освобождении памяти есть ошибка. И как не странно, выяснялось, что утечки встречались намного чаще, чем этого хотелось.
136 1334937
>>34936
Открой для себя valgrind.
А лучше пиши на расте и не парься. Вероятность обосраться в нём на столько меньше, что до своего первого дедлока/утечки ты успеешь обписаться.
137 1334941
>>34937

>Открой для себя valgrind.


Я вообще не сторонник дебагеров. И весь дебаг обычно провожу прямо в голове. Ну или пишу вспомогательные куски кода для тестирования.
138 1334942
>>34941

> laba2.cpp


Ты держись там.
139 1334944
>>34942
Лаба лабе рознь. И бывали у меня и такие лабы, которые две недели нужно было писать по несколько часов каждый день.
140 1334945
>>34944
Нихуя ты! Не перетрудился?
На дебаггер надейся, но и сам не плошай!
141 1334963
>>34476

>в свой пщ-тред



не, он не из пщ-треда, ибо всё, что появилось за последние 10 лет, уже опидорено, и так будет и дальше продолжаться и усиливаться пока мы паразитируем на технологиях бездуховных геймерики и гейропы
142 1335037
>>34963
А у меня вот друг гей. Мне норм.
143 1335049
>>34936

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



Конкретно эту проблему решили еще в С++ (до 11-го стандарте на уровне "можно сделать"), просто из-за кучи слоёв абстракции это породило ряд иных дырок.
144 1335050
>>35049
Это каким же образом? Положив в стандартную либу пару смартпоинтеров?
145 1335056
>>35050
Я про весь подход с RAII в целом. Благодаря смартпоинтерам стало приятнее писать деструкторы, но в любом случае, если в Си на каждый malloc приходилось писать free, то в плюсах нужно было описать одну функцию, которая вызывается сама.
146 1335058
>>35056
Вот только ты можешь этого и не делать.
И люди уровня label3.cpp в рот ебали эти ваши смартпоинтеры.
147 1335060
>>35058
А у людей уровня laba3.rs тупо нет выбора. И это здорово.
148 1335061
>>28659

>программа на языке не показатель производительности языка


))
В манямирке шизиков только, а в реальном мире, что язык может - то и производительность. Производительность может быть только у реальных написанных программ, а не у маняязыка в избирательном шизиками вакууме.
149 1335066
>>35056

> если в Си на каждый malloc приходилось писать free


Не-а. Самая большая проблема в том, что у функции может быть несколько точек выхода. Типа
void yoba() {
x = malloc(...);
if (!peka()) {
free(x);
return;
}
if (!psshh()) {
free(x);
return;
}
}

Поэтому тебе не на каждый malloc нужно писать free, а намного больше, на каждый выход x из области видимости. А чтобы не было бойлерплейта использовать goto.

void yoba() {
x = malloc(...);
if (!peka()) {
goto cleanup;
}
if (!psshh()) {
goto cleanup;
}
cleanup:
free(x);
}
при чем этих cleanup'ов может быть несколько, в зависимости от логики.

И вот это уже пиздец.
>>35060
А люди уровнем повыше ебутся.
149 1335066
>>35056

> если в Си на каждый malloc приходилось писать free


Не-а. Самая большая проблема в том, что у функции может быть несколько точек выхода. Типа
void yoba() {
x = malloc(...);
if (!peka()) {
free(x);
return;
}
if (!psshh()) {
free(x);
return;
}
}

Поэтому тебе не на каждый malloc нужно писать free, а намного больше, на каждый выход x из области видимости. А чтобы не было бойлерплейта использовать goto.

void yoba() {
x = malloc(...);
if (!peka()) {
goto cleanup;
}
if (!psshh()) {
goto cleanup;
}
cleanup:
free(x);
}
при чем этих cleanup'ов может быть несколько, в зависимости от логики.

И вот это уже пиздец.
>>35060
А люди уровнем повыше ебутся.
150 1335070
>>35066
Не ебемься. Убери свой готу от греха.
151 1335177
>>35061

> программа на языке


Так в том и дело что часть программы на другом языке.
152 1335241
>>35177
В том то и дело что нет. Язык это то на чем ты пишешь программы. Ты не пишешь библиотеки на других языках, а только их подключаешь.
153 1335242
>>35241
Это тест скорости библиотеки.
154 1335364
>>35241
Получается, если подключить ту же либу к Расту, то Раст окажется быстрее Раста?
155 1335467
>>35364

>Получается, если подключить ту же либу к Расту, то Раст окажется быстрее Раста?


Вот ты ебодятел-то, а. Эта либа написана на С, 99% времени работает она, соответственно, ты измеряешь скорость работы алгоритма в его реализации на С. Эту же либу можно и к бидону подключить - внезапно, какой охуенно быстрый язык получится.
sage 156 1335487
>>35467
Игорь, ты? Помнишь меня? Я твой одноклассник. Я узнал тебя по твоим шизоидным словам и высерам. А помнишь, как мы всем классом нассали тебе в кружку в третьем классе, на сладкоежке? Ты ещё выпил, облизнулся и попросил добавки. А потом тебя пришёл забирать твой отец, тот самый дворник, который на Вернадского изнасиловал собаку и получил условный срок за то, что украл плавленный сырок в магазине. Он зашёл в класс, все стали смеяться, а ты обосрался под себя от стыда, а потом сказал, что всю жизнь будешь ненавидеть дворником, но в 9м классе, когда ты пошёл на рейд, чтобы их отпиздить, то они пустили тебя по кругу, после чего тебе наложили на анус восемь швов. Как поживаешь, Игорян?
157 1335525
>>35487
Если бы ты использовал не настолько протухшую пасту, то мог бы блеснуть своей, экхм.., эрудированностью, что ли. А так и этим не смог. Сожалею, старайся лучше.
158 1336303
Ю-ху, анонии, насколько же легко писать тесты, охуеть. Я, конеш, понимаю, что есть gtest и для того же бидона куча либ. Но тут-то оно из коробки - а значит меньше велосипедов и больше взаимопонимания в растовом мирке.
159 1336315
>>36303
Братишка, побереги глаза. Поменяй схему.
20190128-8fc86.png148 Кб, 722x320
160 1336343
>>36315
Так лучше?
161 1336347
>>36343
Немного. Уменьши контрастность всех остальных цветов. Или просто возьми monokai или любую другую готовую тему.
162 1336696
>>36303
Да, тесты вообще благословленные. Единственное немного раздражает то что в tests/ нельзя нормально сделать модуль, который сам тесты не содержит, а включается в другие модули с тестами. Приходится изворачиваться с tests/utils/mod.rs , чтобы оно не собирало этот модуль как отдельные тесты.
163 1336701
А я правильно понимаю, что сейчас нет никакого способа делать динамические библиотеки (да и статические тоже), которые можно было бы распространять без постоянной пересборки всех зависимостей? Интересует не сборка в сишную библиотеку и потом unsafe extern "C", а именно возможность подключить динамическую библиотеку, написанную на расте, и использовать оттуда безопасный растовый код
165 1336730
>>36701
Ломают ABI.
166 1336769
>>36724
Я как раз явно сказал, что интересует не это.

>>36730
Хм. То есть вообще нет возможности распространять крейт кроме как исходный код?
167 1336774
>>36730
Ломают ABI.
Что это значит? Я понимаю так. Скомпилил ты в исполняемый файл. Взял этот файл, отправил другу, у него стоит та же ос или выше, он его запустил, всё сделалось. Правильно?
168 1336776
>>36769
Да. Ну или сишная либа.
>>36774
Скачал с сайта rayon.dll какую-нибудь, пытаешься её засунуть себе в проэкт, но сосешь хуй из-за того что ничего не собирается.
Если исполняемый файл, то всё ок, там все либы статически слинкованы и ничего больше не требуется.
169 1336781
>>36776

> статически слинкованы


То есть весь их код переведён в машинный язык и засунут в этот же бинарник (исполняемый файл)?
170 1336787
>>36781
Да. От этого и бугурты на хелло ворлд.
171 1336793
>>36776
Хуево. Это же еще очень мешает коммерческому использованию языка, ведь ты не можешь сделать что-то и распространять это в виде блобов.
172 1336803
>>36793
Ну ты сам прикинь, какова доля либ в коммерции (обычно продают готовый продукт) и помножь эту долю на долю раста - вот ты получишь %, где это даже не необходимо, а "было бы неплохо". К тому времени. когда раст захватит мир, это наверняка реализуют.
Что касается ускорения конпеляции, то для этого есть кэш и он неплохо работает.
173 1336935
Аноны, нид хелп. Как расшарить константу из главного модуля в либу и в дочерние крейты?
https://github.com/rust-lang/rust-enhanced/issues/358
https://stackoverflow.com/questions/37430628/rust-constants-in-different-modules

not found in the crate root - если делать ::VERSION
not found in `crate` - если делать crate::VERSION
я натурально заебался
174 1336942
>>36935
Что такое главный модуль? main.rs?
175 1336951
>>36935
Да, он. Ни в условный lib.rs, ни в крейты пробросить не получается.
176 1336956
>>36951
Ясен хуй, это не имеет никакого смысла. Клади свою константу в lib.rs.
Untitled.png45 Кб, 854x1008
177 1337019
Блеть, я просто хочу сматчить что инпут еть String да и только. Как это сделать подскажите?
178 1337027
>>37019
Он и так стринг. Проверку на ошибку (и вытаскивание из Result) ты уже сделал в виде .expect()
179 1337028
>>37027
Та то понятно. Я же хочу управляемую ошибку. В случае эррора там и Ок-а...
Untitled.png45 Кб, 674x965
181 1337076
>>37040
Проблема в том, что я не знаю вводит ли юзер инпутом число... Инпут то в String хранится и нет смысла матчить на тот же i32.
182 1337081
>>37076
Парсить этот стринг и снова матчить. https://doc.rust-lang.org/std/primitive.str.html#method.parse
183 1337187
>>36956
Так оно, кстати, работает. Но, вишь какое дело, мне удобнее задать все константы в главном модуле, чтобы либы подхватывали их оттуда. Иначе мне придётся держать кучу констант для кучи либ (размеры массивов, пути, вот это всё) и при изменении каждый раз лазить в эти либы.

Ещё такое: как сделать тесты в отдельном крейте? Делаю по манулам, какая-то хуйня получается - или ошибка импорта, или 0 тестов пассед из 0. Если есть линк на гитхаб с рабочим вариантом, буду оч признателен.
184 1337249
>>37187
Ёпты, нашёл решение. В кобылью сраку отдельные крейты и [lib], всё нужно делать через mod.
185 1337279
Есть ли в Расте дженерики?
186 1337286
>>37279
Нет, обещают добавить в Rust 2
187 1337288
>>37286
А модули тоже отложили до Rust 20? :/
189 1337377
>>37352
почему кое где есть ; в конце строки а кое где нету?
190 1337378
>>37377
; превращает выражение в ()
fn foo() -> () { 42; }
fn bar() -> i32 { 42 }
191 1337379
Бля а чего классы вообще выпилили?
192 1337380
>>37379
Да, потому что они создают гораздо больше проблем, чем решают.
193 1337382
>>37380
но ООП
194 1337384
>>37382
Парадигма которую используют через жопу.
Используй Трейты и будет тебе норм.
195 1337385
>>37382

>ООП


Для быдла.
196 1337398
>>37384

>Парадигма которую используют через жопу.


Это кто такое сказал?
197 1337399
>>37398
Да кто только этого не говорил.
В контексте раста, посмотри, например, вот это: https://www.youtube.com/watch?v=aKLntZcp27M
198 1337404
А что вообще с багами? Реально то игру вообще написать и не наткнуться на какую нибудь мистическую хуйню?
199 1337405
>>37404
Реально. Правда приличных законченных движков еще нет.
200 1337414
>>37405
Аметист и пистон не считаются?
201 1337416
>>37414
Аметист активно пилят и вроде как частенько ломают АПИ.
Пистон кажется перестали развивать.
Еще есть ggez, но там тоже часто ломают апи.
202 1337429
А есть ли в этих движках физическая модель? Я так понимаю главная их цель конектится к какому нибудь OpenGL по сишному интерфейсу и отдавать юзеру Растовый интерфейс для рисования?
203 1337431
>>37429
По дефолту вроде нет. Кажется в аметист планировали добавить.
Есть https://nphysics.org/
204 1337432
>>37431
Бля нах он нужен тогда? Самому ебаться с сишными запросами? Как у раста с C вообще?
205 1337433
>>37432
Как у тебя C тут всплыл?

> Как у раста с C вообще?


Как и у всех, всё хорошо. Это же C.
206 1337436
>>37432
Кто "он" и, действительно, при чем тут "ебаться с си"?
207 1337439
>>37436
Имеется ввиду игровой движок на расте. При том что движок должен уметь рисовать, вот я и говорю нах движок нужен если самому придётся брать то что этот чудодвижок нагородит делать из всего этого чуда вертексы и к openGL обращаться
208 1337440
>>37439
Что ты вообще несешь? Ты спрашивал про физ. движок. Физ движка из коробки нету.
Рендерит движок сам.
209 1337442
А вообще демки поглядел—пиздато. А как он так в браузере рисует?
210 1337443
>>37440
Ты прикалываешься? Вверху была ссылка, там физический движок! Но он не умеет рендерить да?
211 1337446
>>37443
Анончик.
У тебя есть игровой движок, скажем Аметист. Его задача дать тебе ECS и рендерить твою хуйню, что он с успехом и делает. Т.к. очевидно, ему нужна либа для работы с матаном, он юзает https://www.nalgebra.org
Отдельно от всего этого, есть еще физ. движок который используетт же либу для математики: nphysics.
Да, физ. движок ничего не рисует.
212 1337447
>>37443
Возьми графический движок и физический движок. И делай своих игорей.
213 1337448
>>37446
А блять, я думал np и есть Аметист
214 1337449
215 1337520
https://kevinlynagh.com/notes/match-vs-lookup/ немного про внутренности, оптимизацию, ллвм, ир, мир, асм итд
15487835664250.jpg36 Кб, 472x698
216 1337576
>>37520
Внутренности раста
1322152087635.jpg47 Кб, 373x500
217 1337727
>>37187

>задать все константы в главном модуле


По-моему ты неправильно воспринимаешь main.rs.
lib.rs - как раз "главный" модуль крейта-библиотеки.
main.rs - это отдельный крейт, который собирается в бинарник (bin-крейт), он вообще не часть библиотеки порождённой lib.rs.
219 1337815
>>37728
Тиресно, хотя я раст нихуя не знаю
Untitled.png27 Кб, 750x756
220 1338243
Да как его с элементом вектора сматчить то...
Untitled.png41 Кб, 719x782
221 1338261
Вот непонятно совсем че так.
Untitled.png54 Кб, 803x946
222 1338300
Пиздец как сложно. А впереди еще всунуть это все в заloopу
223 1338357
>>38243
Ну то что ты написал это херня. Паттерн должен быть, я даже не знаю как сказать, константным выражением что ли (я не уверен, как правильно обозвать термин). Твой код можно переписать в таком виде:

match input_department.as_str() {
x if x == &departments[0] => ... ,
x if x == &departments[1] => ... ,
_ => panic!("Unknown departments")
}

Я думаю, что это ограничение (невозможность указать результат вызова функции как паттерн) связано с тем что синтаксис x(y) в паттерне все таки означает "Тип x с полем y, где содержимое x.0 привязывается к y и может использоваться после =>". Если бы мы могли слева от => указывать вызов функции, была бы неопредленность.
224 1338443
>>38300
Братишка, это не ты случаем здесь летом руби изучал?
225 1338775
>>38243
Че ты вообще пытаешься сделать?
226 1338907
>>38775
Видимо пытается сматчить некий инпут с заранее заданными значениями и если такое есть, то где-то сохранить.

Я бы на его месте перестал изъебываться и написал что-то типа такого:

if departments.contains(&input_department) {
hm.insert(input_name, input_department)
} else {
panic!("ВСЕ ПИЗДЕЦ НАХУЙ!")
}
227 1338987
>>38443
Не. Никогда таким не интересовался.
>>38907
Та ифами как-то уныло. То-ли дело ёба match.
И до сих пор непонятно че оно ныло на вектор и нормально хавало перемнную на которую перед этим засаайнил тот же элемент вектора но это две лишних сточки кода.
228 1338993
>>38357
Дружок-пирожок но тут же >>38261 я указываю обычной переменной и всё работает. И причем про мач сказано что оно матчит с тем что слева от арма ака =>
229 1339010
>>38993
Нихуя оно не работает у тебя. Ты не сравниваешь то что ты передал в match с ранее заданным xuy, ты просто взял и то что ты передал в match связал с именем xuy в рамках конкретного => . При этом у тебя ЛЮБОЙ вход будет удолетворять первой строчке match'а, и остальные компилятор должен пометить warning'ом как недостижимые.

Вот тебе пример, если нужно нагляднее: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=906665de9ed8d1bd6a26e3bacd693070
231 1339615
я вот счетаю, что rust - язык для настоящих мужчин, которые не бояться анальных кар компилятора с его заимствованиями и лайфтаймами

так же я считаю, что все хейтеры этого языка - простые неосиляторы, которые своими вскукаречными потугами пытаются восстановить своё значение в этом мире, но мы то знаем (что они обычные кукаретики)
232 1339654
>>39615
Поддвачну. Я, вот, когда на других языках пишу, то такую хуйню горожу, аж самому противно, но не могу остановиться - конпеляется же. А тут как-то само получается стройно и почти красиво, я аж загордился чутка и блинов поел.
233 1339683
>>39654
как блины кста?
VJbL1fq - Copy.png138 Кб, 570x585
234 1339684
>>39615

>rust - язык для настоящих мужчин


Но я девочка_внутри и я люблю раст.
235 1339685
>>39684
для сексуальных меньшинств тоже найдется место в необъятных чертогах ржавчины. так что раздевайтесь и смажьте жёпу для компилятора
236 1339696
>>39615

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


...Сплетаемся в объятьях братских. Крепкие руки крепкие тела обхватывают. Целуем друг друга в уста. Молча целуем, по-мужски, без бабских нежностей. Целованием друг друга распаляем и приветствуем. Банщики между нами суетятся с горшками глиняными, мазью гатайской полными.Зачерпываем мази густой, ароматной, мажем себе уды. Снуют бессловесные банщики аки тени, ибо не светится у них ничего.

— Гойда! — восклицает Батя.
— Гойда-гойда! — восклицаем мы.

Встает Батя первым. Приближает к себе Воска. Вставляет Воск в батину верзоху уд свой. Кряхтит Батя от удовольствия, скалит в темноте зубы белые. Обнимает Воска Шелет, вставляет ему смазанный рог свой. Ухает Воск утробно. Шелету Серый заправляет, Серому — Самося, Самосе — Балдохай, Балдохаю — Мокрый, Мокрому — Нечай, а уж Нечаю липкую сваю забить и мой черед настал. Обхватываю брата левокрылого левою рукою, а правой направляю уд свой ему в верзоху. Широка верзоха у Нечая. Вгоняю уд ему по самые ядра багровые. Нечай даже не крякает: привык, опричник коренной. Обхватываю его покрепче, прижимаю к себе, щекочу бородою. А уж ко мне Бубен пристраивается. Чую верзохой дрожащую булаву его. Увесиста она — без толчка не влезет. Торкается Бубен, вгоняет в меня толстоголовый уд свой. До самых кишок достает махина его, стон нутряной из меня выжимая. Стону в ухо Нечая. Бубен кряхтит в мое, руками молодецкими меня обхватывает. Не вижу того, кто вставляет ему, но по кряхтению разумею — уд достойный. Ну, да и нет среди нас недостойных — всем китайцы уды обновили, укрепили, обустроили. Есть чем и друг друга усладить, и врагов России наказать. Собирается, сопрягается гусеница опричная. Ухают и кряхтят позади меня. По закону братства левокрылые с правокрылыми чередуются, а уж потом молодежь пристраивается. Так у Бати заведено. И слава Богу…
237 1339700
>>39696
и всё же воистину славный язык
238 1339716
>>39208

>#![feature(slice_patterns)]


Вон оно че, Михалыч.
239 1339718
>>39010
Пасиба.
240 1339729
>>39696
Блин, начал читать и думал мож как переделал забавно, а там просто цитата (хотя автор великий, конечно, как и повесть).
241 1339917
>>39683
Со сметаной и творогом - заебок. Ещё чай зелёный покрепче, с вареньем кислым.
Аноны, у кого-нить есть пример кода/крейта для многопоточного заполнения вектора строго по индексам? Сам примерно знаю, как сделать, но боюсь подводных граблей, да и велосипедить не охота.
242 1340003
>>39917
Заверни в Arc<Mutex<Vec<T>>>
244 1340303
>>40003
Мьютексы в моей задаче оказались только помехой, зря время потратил. Потом вообще непонятно, как из них данные раззалупливать - оригинал под обёрткой остаётся мувед, дроп не спасает. Если кто знает, поясните, плз, вдруг таки буду их юзать.
Сделал проще: в тредах возвращаю тупл с индексом и данными, а потом получаю в главном через джойн и впендюриваю по индексу. Впендюриваю тоже как-то чрезжопно, приходится сперва забивать result_vec "пустыми" значениями, если кто знает лучший путь, буду рад.
for t in threads {
let (idx, res) = t.join().unwrap();
result_vec.swap_remove(idx);
result_vec.insert(idx, res);
}
245 1340305
...а если так
for t in threads {
let (idx, res) = t.join().unwrap();
result_vec.swap_remove(idx);
result_vec.insert(idx, res);
}
246 1340308
...ну а так
for t in threads {
____let (idx, res) = t.join().unwrap();
____result_vec.swap_remove(idx);
____result_vec.insert(idx, res);
}
247 1340497
>>40308
Было бы неплохо, если ты таки объяснил, что ты пытаешься сделать.
248 1340584
>>39917

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



Но нахуя? Многопоточность - это когда у потоков изолированные данные и взаимодействие онли через ридонли-сообщения. Привыкай, сейчас на десктопы уже НУМА в лице тредрипера от амуде поперла и дальше будет только хуже, техпроцессы закончились и старая добрая SMP архитектура с одним пулом и контроллером оперативы уходит в прошлое.
Pokak 2.jpg36 Кб, 736x699
249 1340600
>>39716
Это линк на старые доки.
В 2018-edition слайс патерны включены.
250 1340620
>>40497
Нужно перемолотить некоторое количество наборов данных и сложить в массив в строго определённом порядке. Однопоточно проблем нет - делай push и все дела.
252 1340704
>>40691

>answer = result;


век живи - век учись. Сколько примеров не смотрел, видел заполнение векторов только через push. В остальном я практически так и сделал, только через return. Ещё такое - ты про join просто забыл или там какой-то фокус, что он и не нужен?
253 1340705
Макак, заебал, сделай отключение разметки в программаче.
254 1340715
>>40704
Джойн нужен если ты хочешь дождаться завершения выполнения треда. В моем случае мне это не нужно, т.к. мне важно получить значения, что происходит через канал.
255 1340741
>>40715
т.е. rx.recv() ждёт завершения? Тогда это тот же джойн. Пока я вижу смысл rx/tx в построении каналов между дочерними тредами, использовать это в главном выглядит излишеством.
256 1340742
Ну сделай на джойнах, какая разница. Если тебе важно чтобы порядок получения был последовательным.
257 1340832
>>40620
А почему бы не использовать rayon? Он же специально для такой хуйни заточен. https://github.com/rayon-rs/rayon
>>40691
В rayon'е можно сделать в одну сроку:
let answer: Vec<usize> = (0..(num_threads as usize)).into_par_iter().map(|i| do_some_stuff(i)).collect()
13246510780319.jpg72 Кб, 743x957
258 1340843
Чё там с доступом к DOM API (и вообще WEB API) из wasm'а кто-нибудь знает?
Я в курсе что его пока нет, но работа-то ведётся, черновики стандарта какие-нибудь есть?
259 1340852
>>40843

> Чё там с доступом к DOM API (и вообще WEB API) из wasm'а кто-нибудь знает?


Называется оно WebAssembly Host Bindings.

> Я в курсе что его пока нет, но работа-то ведётся, черновики стандарта какие-нибудь есть?


https://github.com/WebAssembly/host-bindings
260 1340905
>>40832

>rayon


Едрить, оверкилл. Я тут >>40303 сильно протупил - у меня же есть вектор с тредами, которые уже отсортированы, поэтому push в вектор с результатами будет идти в заведомо верной последовательности. А я, чёт, продолжал действовать так, как будто последовательность произвольна (как было бы при заполнении данных изнутри треда).
261 1340907
>>40905

> Едрить, оверкилл.


Почему оверкилл? Очень удобная штуковина, на самом деле.
262 1340918
>>40907
Потому что оно сильно увеличит время компиляции, хотя вместо этого можно просто написать 3 лишних строчки кода. Вот если ему надо много таких штук делать, тогда есть смысл взять либу.
263 1340921
>>40918

> Потому что оно сильно увеличит время компиляции


Нет, не сильно. Это ж тебе не C++ с шаблонами. Вот у меня в небольшой программе с rayon'ом:
Finished release [optimized] target(s) in 11.57s
264 1340928
>>40921

> Compiling no-rayon v0.1.0 (/tmp/no-rayon)


> Finished dev [unoptimized + debuginfo] target(s) in 0.48s


vs

> ... rayon ...


> Finished dev [unoptimized + debuginfo] target(s) in 4.11s



Впрочем это холодная сборка после cargo clean.
После первой компиляции оно одинаково быстрое. Разве что CI бесить со временем будет, что вряд ли значимо в данном случае.
Screenshot2019-02-0319-51-25.png21 Кб, 850x92
266 1340981
>>40942
СССука, хорошо.
267 1341021
>>40907
Мне больше нравится писать ванильно. Это, конечно, збс, что карго вот так легко позволяет подключать крейты, но если использовать эту фичу слишком интенсивно, проект станет похож на нодовый с крейтами уровня left-pad и isarray.
Кстати, даже логика rayon примерно та же, что у многих нодовых модулей - добавляет новые функции (into_par_iter, par_iter) для существующих структур. Я так погляжу, разрабы раста многое подсмотрели у жс и у ноды.
268 1341024
>>41021
Кек. Нет, братишка, манки-патчинг из жс-дристни ничего общего не имеет с тем, что делает rayon.
269 1341027
>>41021

> Кстати, даже логика rayon примерно та же, что у многих нодовых модулей


Ты наверное кроме C++ ни на чём не кодил. В C++ действительно другая крайность, что подключение любой библиотеки, кроме header-only превращается в ад. А так подобное есть в любом современном (и не только) языке. В той же жаве очень удобная система пакетов. У C# тоже.
270 1341080
>>41024
Их убогое vs наше великое. А суть та же - куча зависимостей тянет кучу зависимостей, каждая из которых экономит в среднем 7 строк кода на проект.
271 1341089
>>41080
Ты же даже не понимаешь о чем речь, правда?
Я говорил о разъебывание прототипов которое глобально видно всем, а не о количестве зависимостей.
272 1341096
>>41089
А я вообще не об этом, а о том, что порочна сама идея подключения внешнего модуля ради экономии пары строк. Что где-то оно хуёво реализовано с технической стороны, это уже частности.
273 1341108
>>41096
Если впадать в крайности в стиле нпм, то конечно порочна. Впрочем подход goвна, где в каждом проекте копипаста min/max и прочих вещей не намного лучше.
274 1341807
Анон, зацени, как можно сделать. Умный конпелятор сам понял, что итерировать нужно до окончания конечного итератора (cycle() делает бесконечный) - охуеть.
Например, такое нужно для суммирования сигналов со сдвигом по фазе.
hqdefault.jpg12 Кб, 480x360
275 1341926
Блецкий педоRust не дает засунуть мутабл борроу и ссылку в одну область видимости поэтому в loop input из консольки и insert в хэшмапу не получается.
276 1342017
>>41926
А теперь то же самое, но согласованными предложениями.

https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=6b744d80e281f850b52345e9fdfef379
277 1342116
>>42017
я не он, но проблемс в том, что если нужно как-то модифицировать ввод, а не напрямую кидать в хэшсет, канпелятор шлет нахуй
279 1342331
>>42116
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=093cfdd97d4c7697f767b34c1aa2b24c
"Ввод с консольки" и "Модицифированный ввод" - это разные сущности по семантике. Значит, имеет смысл положить их в разные переменные. Если будет что-то парсить in-place, ты заколебешься абсолютно в первом же нетривиальном случае. Проще сделать новый объект FP-параша стайл.
Untitled.png82 Кб, 1089x960
280 1342492
>>42017
>>42324
Я - он.Я про это.
281 1342493
>>42324
>>42331
он не я, но я пытался рассказать про ошибку, которая случается из-за несколько других вещей
вкатываясь из .NET, сложновато держать в голове все это borrowing/owning, а потом еще пытаться доказать компилятору, что все это должно работать по идее
282 1342494
>>42492
sooqa, ты тоже утонул на этом задании из растбука
(
283 1342495
>>42331
Сначала хотел написать что незачем создавать новую строку doubled_input, ведь можно модифицировать input.
Но не смог запушить в строку саму себя:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=fcfd5d7e1ce67d9b9a75bdfbab4d9739

inb4: repeat, format! - они создают новые строки.
284 1342507
>>42495

> ведь можно модифицировать input



Чтобы сделать длинную строку, нужно выделить под неё память и скопировать данные из маленькой строки. Когда ты в плюсах пишешь что-то типа
string a = "qqqq";
a += a;
Ты по сути делаешь то же, что и в случае
string b = a + a;
Только деструктор a вызывается раньше. Никакой "модификации" не происходит, нужно ровно такое же число операций.

>>42492
Тебе, по идее, нужно определить input_name и input_department в теле loop. Сейчас они "поглощаются" на первой итерации при добавлении в словарь и становятся невалидными, поэтому компилятор и ругается.
Untitled.png92 Кб, 1096x975
285 1342528
>>42494
На самом деле нет. Там не сказано лезть в заloopу. Если убрать loop то задание решено.
>>42507
Не прокатило.
E9DNk2LX400x400.jpg24 Кб, 351x351
286 1342536
>>42507
С++ практически не знаю, но из моих представлений при добавлении строки к строке происходит примерно следующее:
1. Проверяется capacity строки и если памяти уже выделено достаточно то строка-аргумент сразу копируется туда. (Т.к. пямять под строку при первоначальной аллокации/реалокациях, насколько я понимаю, выделяется с запасом.)
2. Если недостаточно - по происходит реаллокация памяти, причём, вроде как, перенос строки в другое место при этом не обязательно происходит, т.к. может оказаться что свободное место есть и рядом.
Так что эквивалентно это созданию новой строки только в худшем случае - и то наверняка в расте при полноценном создании новой строки больше действий выполняется.
288 1342566
>>42528
Блять. trim возвращает слайс на строку, которая всё также умирает на следующей итерации. Нужно вставлять &input_name.trim().to_string();

Но это говнокод, вынеси тримнутые строки до match, а в самом match используй их без взятия ссылок.
let input_name = &input_name.trim().to_string();
...
hm.insert(input_name, &department[0]);
289 1342704
>>42551
я, конечно, понимаю, что это не самое сложное задание, но по книге такая хуйня как
fn parse<'a>(mut words: impl Iterator<Item=&'a str>)
еще неизвестна
290 1342785
>>42704
Мне просто было жалко аллоцировать память.
Можно было бы сделать split_whitespace().collect::<Vec<_>>()
и дальше работать уже с вектором вместо итератора.
291 1342942
https://pastebin.com/SRS5P0yK
.clone(), .clone(), .clone()
по большому счету, не считая логгирования, я использую dept и empl только по разу. как заставить компилер понять это и не рассказывать мне про borrowing?
(или ЧЯДНТ)
с другой стороны, насколько такой клонинг убивает перфоманс? (inb4 я из управляемых языков, там вообще похуй на такую парашу)
292 1342973
>>42942
.to_owned() попробуй, если и правда по разу.
1.png54 Кб, 1039x744
294 1343065
>>43046
У тебя странная ошибка, но этот совет не отменял совет >>42507 , кек.
295 1343073
>>43065
И че, ранит?
У мя nightly сборка.
1.png18 Кб, 557x457
296 1343077
>>43073
Да.

>rustc 1.32.0 (9fda7c223 2019-01-16)

297 1343078
>>43073
>>43065
А, понел. У мя же мап указан что только ссылки берёт. ака
let mut hm: HashMap<&str, &str> = HashMap::new();
298 1343085
>>43077
Спасибо .Понятен даже стал весь код.
С твоей выдержкой можно медбратом в дурке работать или учителем в спец. интернате для отсталых.
299 1343092
>>43085

>Двачи


>в спец. интернате для отсталых.



Факты сходятся.
Едота2.jpg69 Кб, 675x675
300 1343094
>>43092

>Двачи Rust


>в спец. интернате для отсталых.



Факты сходятся.
301 1343101
Можно ли делать на ржавом делать биндинги для пистона так же как на плюсах? Думаю какой второй язык взять
303 1343193
>>43046
тебе ж компилятор подсказывает что делать
как вариант, передавать input_name[..], что создаст &str по значению равный оригинальному String
304 1343194
>>43193
сука, тред не обновился, думал, что ответа нет
305 1343288
>>43046
input.as_str()
306 1343485
>>42942

> как заставить компилер понять это и не рассказывать мне про borrowing?


Ну так ты если сначала переместишь dept и empl внутри своих and_modify, то все, нет больше твоих переменных. Все правильно.

> с другой стороны, насколько такой клонинг убивает перфоманс?


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

> я из управляемых языков, там вообще похуй на такую парашу


Угу, а потом бекенд, на котором сидит 2 пользователя, не влезает в гигабайт памяти.

В твоем коде можно просто перенести println! выше, до workplaces, все равно код до него дойдет, а println! не захватывает переменные, так что ты сможешь ими далее воспользоваться.

Ну и вообще у тебя как-то странно сделаны твои .entry, .and_modify, .or_insert.
307 1343487
>>43101
К >>43108 я добавлю, что есть еще такая штука https://github.com/dgrunwald/rust-cpython
mem-900x450.jpg38 Кб, 900x450
308 1343739

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


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


>Получаешь утечки памяти и сегфолты из-за скрещивания ежа с ужом.

309 1343814
>>43739

>>Получаешь утечки памяти и сегфолты из-за скрещивания ежа с ужом.


>


Не используй сишные либы с утечками памяти и сегфолтами. Проблема решена!
310 1343821
>>43485

> Все правильно


ну, я понимаю, что всё правильно, мне еще это компилятор рассказывает к тому же.
но вот как я вижу работу кода с .entry().and_modify().or_insert(): я получаю значение empl из хэша по ключу dept, потом либо изменяю его в and_modify или помещаю новое в or_insert, т.е. тут однозначная вилка в логике. но при том, что эти два вызова находятся в одном скоупе, компилер видит захват в and_modify, и потом переиспользование в методе выше его не устраивает по вполне разумным причинам.
в моем случае все эти значения - строки. конечно, неприятно копировать/клонировать все по паре раз,но как-то жить можно. а если бы это были чуть более сложные структуры данных (или не поддерживающие клонирование), то чтобы использовать одно поле для двух разных методов в логике, мне приходится приседать и выдумывать какую-то дичь (или мне так кажется с моим опытом уровня laba2.rs)

> не влезает в гигабайт памяти


предпоследний кастомер очень сильно удивился моим импрувментам дабы сервис не сожрал чуть больше имеющегося памяти, в коде, говоря: ну, пару гигов свурху можно и потребить, мы-то не сильно паримся по этому поводу
так, что да, лул, такое нынче пишется говно
311 1343829
>>43821

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



if let entry = hm.get_mut(){
entry.push(string)
} else {
...
hm.insert(...);
}

Интерфейс and_modify добавили ради какой-то монадической НЁХ, но никто не запрещает пользоваться классическим интерфейсом, если он тупо удобнее.
312 1343838
>>43821
А, блин, это Entry API, вообще забыл про него. Ну тогда короче, замени or_insert на or_insert_with (чтобы дефолтное значение генерировалось только если реально надо). Тогда пофигу, что везде clone, ибо оно будет реально выполняться только если будет вызвана соответствующее замыкание. Или можешь сделать так:

*(workplaces.entry(dept.clone()).or_insert_with(|| Vec::new())).push(empl.clone)

Ну и все еще если хочешь избавиться от clone, перетащи println! выше.
313 1344395
>>43838
лайк, подписка
314 1344559
сап двач. Пишет школьник почти 16 лвл. Решил вайти пару месяцев назад, все это время теребил книгу по плюсам (даже прошел половину). Пару дней назад голову ударила моча и понял, что плюсы к тому моменту когда я попиздую работать (это лет через 5-6) плюсы вымрут и везде где можно будет раст. Решил сейчас задрачивать матан и вкатываться в хасскель в целях апа инты. Через год буду выбирать что задрачивать. Ваше мнение по поводу того выстрелит ли раст, аноны?
315 1344561
>>44559
Он уже выстрелил. Даже на hh.ru уже есть вакансии не про крипту. Так что к тому моменту как ты попиздуешь работать предложений будет с головой.
316 1344572
>>44561
В гейропе аналогично будет? Собираюсь в чехии учиться, а это, вроде, голубая карта и нахуй возвращаться. И еще, ты уже работаешь на расте или у вас его юзают (чисто для справки)?
317 1344580
>>44572
Я работаю на расте, да. Как раз гейропе.
318 1344620
>>44580
можешь рассказать подробнее?)
другой анон
319 1344624
>>44620
Лабаем фин-тех штуки. Ничего особенного. По сути набор сервисов которые делаю всякие вычисления и набор апи для этого.
320 1344767
>>44624
это пишется на любом, в общем-то, языке. почему у вас именно раст?
321 1344785
>>44767
Я не он, но отвечу. Потому же, почему и жаба - из-за относительной строгости языка руководству проще быть уверенным, что армия макак-подчинённых не наговнякает.
322 1344792
>>44785
ну чет основная масса софта, судя по такому ответу, как раз ожидает наговняканый продукт от индусов, вместо эффективно работающего приложения
323 1344828
>>43814

>>Не используй POSIX и WinAPI, а еще >100 000 либ системного и прикладного уровня.


>> Когда предложил работодателю, меня уволили.

324 1344849
>>44767
Потому что модно-молодежно.
Сложно на самом деле ответить почему решились, меня в тот момент не было. С технической точки зрения выбор очень удачный.
325 1344935
>>44792

>наговняканый продукт от индусов


Дак индусы как раз и говнякают на жабе по этой самой причине, что в ней всё относительно (того же бидона или сей) строго и иерархично. Например, белые господа могут проектировать интерфейсы, оставляя грязным индусам реализацию.
>>44828
Да лан тебе ёрничать, не всё так плохо. Раст изначально заточен быть в упряжке с Ц/Ц++ софтом, т.к. прямо сейчас, например, код на расте работает в таком виде в фуррифоксе.
326 1344979
>>44828
Ни разу не сталкивался с сегфолтом внутри ни одной сторонней либы, не говоря уже про POSIX и WinAPI. Они этого добиваются обычно месяцами и годами ебли, но результатом остаётся просто пользоваться.
327 1344993
>>44935

>Раст изначально заточен быть в упряжке с Ц/Ц++ софтом


Пока все либы не перепишут на раст, будут в упряжке, так?
328 1345022
>>44993

>перепишут на раст


Зачем, если они уже есть и работают?
fgsfds.png79 Кб, 633x738
329 1345087
Такой вопрос. Есть метод для структуры, который должен возвращать Option<&T>. Как из него вернуть ссылку на вот этот дженерик(он - поле другой структуры бтв), обёрнутый в Option<Rc<RefCell<Ещё_одна_структура_нейм<...>>>>? Что ни делаю, компилятор ругается либо на то, что возвращаю ссылку на локальную переменную, либо 'cannot move out of borrowed context'. Что делоть? Как это вообще должно выглядеть. Код на пикриле. Что он говно, я знаю.
330 1345102
>>45087
http://cglab.ca/~abeinges/blah/too-many-lists/book/

Вообще перестань заниматься хуйней. Хочешь списки, пиздуй в haskell/lisp/erlang.
331 1345729
VSCode: по сейву в файле main.rs применяет автоформат документа, в lib.rs -- нет. шо за уродство
332 1345751
>>45729
Тормозной редактор на электроне, вот что это за уродство.
333 1345955
>>45751
как с IntelliJ живется? я привык в Visual Studio, но там, судя по вики, поддержка раста практически нулевая
334 1345970
как работают аттрибуты в расте?
ну вот я добавил #[derive(debug)] и почему от меня больше ничего не требуется?
если это сахар для компилятора, который распарсит поля и вытянет все в строку, то, например, растбук предлагает написать такую еболу: #[derive(PartialEq, Debug)]. есть какая-то дефолтная имплементация PartialEq?
15498078561900.png111 Кб, 512x512
335 1345976
>>27089 (OP)

>Вебня


>http://www.arewewebyet.org/



>Can I replace my Rails/Django/Flask already?


>Well, probably not yet.

336 1345993
>>45955
Живу в емаксе, зависимость есть. rls конечно то еще дерьмо, но щито поделаешь.
Жабоподелие тоже кривое-косое. И не менее тормозное чем студия на проектах больше привет_мир.
337 1345996
>>45970
Работают через макросы. Если интересно как конкретно поищи в сорсах стандартной либы эти макросы.
339 1345999
>>45970
Ну или почитай доку:
https://doc.rust-lang.org/std/cmp/trait.PartialEq.html
This trait can be used with #[derive]. When derived on structs, two instances are equal if all fields are equal, and not equal if any fields are not equal. When derived on enums, each variant is equal to itself and not equal to the other variants.

>>45996-кун
04.gif1,1 Мб, 1000x833
341 1346059
>>45976
Ну а чего ты ожидал? Может у C++ есть такие рич-веб-фрейворки с темплейтами и прочей хуйнёй? Скажи спасибо что хотя бы уже

>If your service primarily provides an API to be consumed by other computers, requires little external services and you are happy with writing most SQL yourself, then Yes, You Can!


Кстати, а что с этим всем у goвноедов? У них есть аналог Джанго/Фласка?
342 1346063
>>45998

>https://doc.rust-lang.org/1.26.2/unstable-book/language-features/proc-macro.html


>1.26.2


Плиз, когда гуглишь доки раста - ищи ссылку на актуальную версию.
343 1346066
>>46063
Ну мам.
344 1346069
>>46066
Я вот проверяю что я актуальные доки читаю - и ты проверяй.
346 1346075
>>46073
Ссылка хорошая, одобряю, но тому анону не совсем подходит.
347 1346368
есть какая-нибудь практическая польза от возврата экземпляра типа Self? ну, не думаю, что это все ради "мне впадлу писать название типа, давайте засахарим"
349 1346379
>>46375
ну замени -> Self на -> Mamkoo, нихуя не изменится

разве что в конструкциях типа impl<T: Govno> Pahom for T { }, но я не уверен, что там не будет подводных камней
350 1346380
>>46375
>>46379
я, падажи. я лупоглазый не увидел трэйт
351 1346385
>>46059
Могли бы хотя бы эту залупу впилить
https://rocket.rs/
352 1346391
После понятного пистона код на расте смотреть просто невозможно. Вы долго привыкали к нему после перехода с других динамических языков?
353 1346400
>>46391
на любой другой неинтерпретируемый язык тебе переходить было бы также тяжело)
354 1346414
>>45976
>>46059
Зачем в вебе эти поделия когда есть суперразвитый зрелый с кучей либ Rails? Для кого важен перформенс - Elixir/Phoenix.
Зачем?
355 1346506
>>46414
остается что-ли криптовалюты пилить на расте?
мимо
356 1346550
Я так понял из крестов больше перфоманса можно выжать, чем из раста.
357 1346562
>>46550
>>46550
Хуй поймёшь, зависит от конкретной задачи и читов. В целом по тем игрушечным бенчмаркам,что я видел разницы почти нет.
358 1346565
rgergaergafefew
359 1346717
>>46506
Я тоже мимо. Просто хочу разобраться.
360 1346736
>>46550
Чтобы "выжимать" перформанс, в любом случае нужен ассемблер. Но даже это 3% кода. Для всего остального единственные важные свойства - отсутствие рантайма и GC. На плюсах у тебя тупо не будет времени оптимизировать свой код, потому что ты будешь отлавливать баг UB. А USB не станет работать быстрее потому что ты экономишь 10 тактов на проверке границ, когда делаешь системный вызов.
361 1346743
>>46414
Популярные веб-фреймворки спиздили кучу фич у рельс, настолько, что затраты на изучение нового языка перестает быть столь выгодным. А поскольку есть уже множество готовых погромистов на пыхе\пистоне, то легче выучить один фреймворк.
Ну и еще устоявшееся мнение, что рельсы уже все, а руби это фреймворк одного языка
0.jpeg105 Кб, 1200x900
362 1346763
>>46743
Мне кажется что рельсы достигли такого уровня, что дальше развиваться особо некуда уже в рамках их предметной области (блогов за 15 минут кек). Поэтому и "всё".
Сам сейчас подумываю с рельсов на Элексир/Феникс попробовать перейти, т.к. другая парадигма, на порядки лучший перформанс - это открывает новую предметную область. Плюс эта платформа используется в продашкене какое-то время, уже проверена.
Но зачем кому-то еще один веб-фреймворк на Расте? Потому что ты фанбой Раста? Быть фанбоем одного языка в 2019 не вижу никакого смысла. Объясните, чего я не догоняю?
363 1346767
>>46763
При этом Руби - реально классный язык, работа с которым приносит удовольствие.
364 1346854
>>46763
Веб-фреймворки делают под все языки, даже под С. Хуле ты тут спрашиваешь? Иди спроси у авторов этих фреймворков.
365 1346871
>>46854
Авторам фреймворков может быть тупо по-фану, или фанбои своих языков. Я хочу спросить у людей, которые делают выбор между фреймворками. Свой выбор я описал.
366 1346880
>>46767
Два чаю, он офигенный. Просто пишу на нём на работе и радуюсь жизни. Единственное плохое только то, что эти ощущения приходится совмещать с кучей легаси на пхп и версткой.
367 1346888
>>46880
Хуй знает что там офигенного. Интеллисенса из-за дигамикодрисневости нет, какие там методы у объекта - хуй поймет, лезь в документацию.
368 1346898
>>46888
как и любойе языкговно без статических типов
369 1346899
>>46888
Т.к. в хорошем коде (а в Руби мире культ хорошего кода) у объекта не бывает много открытых методов, то их можно все держать в голове, а лишь изредка залезать в доку меня напрягает.
С другой стороны, получаешь мощное метапрограммирование (отдельный лайк за простую реализацию DCI), отсутствие тонн бойлерплейта, красивый DSL для тестирования, консистентность, выразительность и изящность.
Я бы уже и рад перейти на что-то другое для смены обстановки, но Руби так хорош.
370 1346908
>>46899
То есть апишку любой новой библиотеки нужно сначала выучить как стишок, чтобы держать в голове? Такое себе удовольствие.
371 1346931
>>46908
Ну ты ж не будешь по интелисенсу изучать новую библиотеку. Если это библиотека API какого-то сервиса, ты изучешь раз, напишешь враппер с двумя-тремя публичными методами и больше не думаешь о деталях реализации.
Можешь привести свой контрпример, аж интересно.
372 1346954
https://code.visualstudio.com/updates/v1_31#_removed-legacy-search-mode
Оказывается растовский ripgrep используется в vscode, давно уже.
Раст - нужен.
373 1346957
>>46931
Ну падажжи, каждый написанный тобой враппер ты должен в голове держать?
А интеллисенс очень облегчает использование новой библиотеки, с ним в доках ты читаешь о принципах и основных объектах, детали же тебе подсказывает интеллисенс прям во время написания кода.
374 1346960
>>46767
Какие языки кроме Руби ты пробовал?
375 1346964
>>46957
Почему каждый, только те с которыми работаешь вот сейчас.
Я не спорю что интелисенс удобен, но это разумная плата за метапрограммирование кмк.
Если работаешь с объектами, у которых 100500 методов, необходимость интелисенса повышается. Если в ходу single responsibility principle, и программирование - это по сути композиция, то понижается.
376 1346966
>>46964
А какая разница, выучить 20 методов у одного класса или по 5 методов у 4 классов?
377 1346981
>>46899

> в Руби мире культ хорошего кода


Как-то (в ~2009, охуеть) прикручивал к тикетовке (типа багрепортилка для дежурных админов на хостинге) жаббер-бота, чтобы на мессаги оперативно реагировать. Это был единственный мой опыт на руби и оно даже работало. Дак я там такого наговнякал, страшно вспомнить.
Хорошо, что в Руби мирке никто про это не узнал, а то вломили бы пизды - мама не горюй.
vscode-solargraph-0.16.0.gif661 Кб, 600x400
378 1346982
>>46966
Я не говорю выучить, я говорю держать в голове. Не работая с конкретной кодовой базой, ты эти 20 методов забудешь через какое-то время. Когда я переключаюсь на задачу из другой области проекта, я стараюсь из своей памяти выгрузить инфу по прошлой задаче, которая сейчас мне не нужна.
Разница в том, что во втором случае информация структурирована, и воспринимается легче. Это одна из причин, по которой ООП > процедурного.
Кстати, для Руби есть IDE RubyMine с автокомплитом, не знаю насколько умным, и только что загуглил - экстеншен для VS Code, пикрелейтед.
Но Ruby это не PHP, где надо постоянно вспоминать в каком порядке аргументы в array_search, а в каком в strpos. В Ruby действует Principle of Least Surprise.
379 1346995
Хотел перекатиться на Раст, но думаю, ну нахуй. Вернусь ка я к Си и Си++.
380 1346998
>>46995
Держи в курсе. не держи
381 1347003
>>46998
Держу, а то тред мертв.
382 1347050
Раст отсасывает у джавы по перформансу во всех задачах.
14916626096380.jpg46 Кб, 390x470
383 1347081
384 1347347
>>47050
особенно в задаче "выжри всю память на хелло ворлд"
385 1347733
требования в растовакансии:

>Multithreading and Asynchronous concepts


в растбуке не нашел чего-то, отдаленно напоминающее асинхронность (в понятиях .NET, nodejs, etc.). это копипаста не очень умной хрюши писанины не очень умного челебоса, или какое-то приблизительное подобие асинхронности в rs все-таки есть?
386 1347737
>>47733
Корутины - это всего лишь приятный сахарок для асинхронности. В том же node.js (да и в js вообще) и .NET асинхронный код можно писать и на промисах (в .NET они имеются тасками) или коллбеках.
387 1347815
>>47733
В растбуке есть про Send и Sync, про Arc<T>, мьютексы, треды и каналы, но в вакансии может имеется в виду в целом. Может там тебя на собесе про STM cпросят. Я чёт охуел с того, что треды не напоминают тебе об асинхронности и мультитрединге. Выросло, блять, поколение, не нюхавшее pthread.h.
388 1347941
>>47815
в моем понимании асинхронность - это не держать тред ожидающим ответа от какого-то не очень быстрого источника информации (жосский диск, БД, сеть, etc.), а суметь сделегировать ему какой-то кусок другого многопоточного кода (или убить нахуй). ну, это идея в .NET такая, как минимум

Arc я не трогал, а про Send/Sync читал по-диагонали. я не говорю, что в буке нет такого, а то, что я - дуанне нашел. но есть повод потеребить главы заново
389 1348092
>>47941
Есть либы, в этом году введут async/await как часть языка.
390 1348640
>>27089 (OP)
Тем временем rust приближается к esp32:
https://esp32.com/viewtopic.php?t=9226
391 1350974
Аноны, а давайте посчитаемся, кого сколько раз отфутболили по растовакансиям. Меня вот пока 1 из 1.
392 1351046
>>50974
все обозримые вакансии - криптохуй инженер
пробоваться на такое чисто ради получения представления о релевантных знаниях
393 1351179
>>51046
Да не, меня тут с веб-хуйни отфутболили. Не хотелось бы раскрывать подробности, тк. наверняка в треде я не один такой. Ещё выясним, что ухлёстывали за одной сучкой, и подерёмся.
394 1351291
>>47733
По асинхронности: https://tokio.rs/
395 1352738
Что пописать на расте, если у меня под рукой нет микроконтроллера? Покидайте идей, где можно применить многопоток. Все упражнения из шапки треда уже выполнил. Мимо гофер из соседнего треда хочет вкатиться в раст.
396 1352760
>>52738
змейку напиши
397 1352761
>>52738
Возьми какую-нить шнягу, которую писал ранее для себя/бабушки/лулзов и перепиши на расте.
Алсо, всё то же, что пишется на го, пишется и на расте - они конкуренты, тащемта, что бы там не говорили.
398 1352768
>>52738
Коммить@пуллреквесть
399 1352944
>>52738

> Мимо гофер из соседнего треда хочет вкатиться в раст.


Подожди пару месяцев пока они асинхронные функции хотя бы в ночнушке допилят. Иначе после ГОвна будет больно без корутин.
image.png844 Кб, 1052x622
400 1354143
>>27089 (OP)
Если я интырпрайз программист, пишу на Котлине, чтобы не умереть с голоду КРУД к СУБД, но для себя хочу более быстрый и нативный хобби-язык (Котлин-нейтив очевидно не взлетит) в 2019 мне стоит смотреть на современные плюсы или раст? Других вариантов у меня нет, прально? (исключаем Хаскель и голанго-парашу)
401 1354223
>>54143
дай бог, раст пригодится где-нибудь еще кроме блокчейнов
ибо в данный момент широкого пула применений для него нет
402 1354477
>>54143
Из этих двух стульев в твоей ситуации явно раст.
403 1355760
Растаны, кто в саблайме пишет? Как его пропердолить, чтобы линтер с clippy был и автокомплит? RustEnhanced если checked на clippy поменять говорит "failed" и не выводит в лог никаких ошибок, хотя сам клиппи нормально работает. Anaconda_rust просто нихуя не делает, хотя я всю нужную ей муть поставил, сорцы тоже, пути добавил.
404 1355763
>>55760
vs code не хош?
405 1355783
>>55763
Не.
406 1355820
>>55760

>Как его пропердолить


установить emacs
407 1355965
В расте не запилили for..else? Гуглю и вижу только бугуртящих неосиляторов этой божественной конструкции из пайтона. Нет, скажите, лишнюю переменную заводить, потом её изменять, а потом после цикла проверять действительно проще и удобней?
408 1355968
>>55965

> водить, потом её изменять, а потом после цикла проверять действительно про


Явное лучше неявного.
409 1355985
>>55965
Покажи юз-кейс.
410 1356107
>>55965

>for..else


https://github.com/rust-lang/rfcs/issues/961
пообсуждали и отказались. Нельзя притащить в язык весь существующий в мире синтаксический сахарок, не притащив вместе с ним косяки, присущие уже содержащим его языкам. То, что есть сейчас, уже очень сахарно, по сравнению с сями/плюсами, уж точно.
411 1356735
Поясните как преобразовывать принято числовые типы друг в друга? Вот u32 -> f64: f64::from(chislou) или chislou as f64? А наоборот f64 в u32?
412 1356749
>>56735
as u32
413 1356755
>>56749
Почему не сделали единообразно? Зачем для int->float рекомендуют from, а для float->int - as?
415 1356763
>>56755
Потому что from задуман так, чтобы ничего не проебалось.
416 1356765
>>56763
Йеп. Заметь что для f64::from(u32) есть
https://doc.rust-lang.org/std/primitive.f64.html
А u32::from(f64) нет
https://doc.rust-lang.org/std/primitive.f32.html#method.min
417 1357075
https://blog.rust-lang.org/2019/02/28/Rust-1.33.0.html
if, кстати уже завезли в const fn или еще нет? И если нет, то планируют ли?
418 1357320
>>57075
Не завезли. Вот этот RFC https://github.com/rust-lang/rfcs/pull/2342 выглядит как самое близкое к этому. Да, там не про if в const fn, но кажется, что если этот RFC примут, то и в const fn завезут быстро.
419 1359104
Посоны, че по тулингу? Как качество код комплита в сранении с джавой?
420 1359173
>>59104
В vscode без указания типов не всегда комплитится, больше ничего не могу сказать.

мимо-написал-хеллоуворлд-на-расте
421 1359179
>>59104
По сравнению с джавой очевидно он хуже, но в отличии от джавы писать на расте без иде вполне себе можно.
https://areweideyet.com/
27367AA2-28C0-40B9-8E0C-ADCB42A72D91.jpeg129 Кб, 790x660
422 1359183
>>55965
Видел в расте метки для циклов, можно for else имитировать ими.
423 1359195
>>59183
Может хотя бы ты юзкейс покажешь?
image.png95 Кб, 527x254
424 1359200
>>59195
Когда лень создавать отдельную функцию, в которой можно из цикла просто вернуть найденное значение, а после цикла выполнить что-нибудь или вернуть дефолтное значение.
Или вот нагрепал код, где это используется, но тут определенно не хватает меток для циклов, чтобы выйти из вложенного.
425 1359202
>>59200
В расте подобное не пишут, потому что чаще всего у тебя будет нормальный функциональный код с итераторами, а не процедурная параша.
426 1359206
>>59202
Ну, лично мне for else даром не нужен, я бы и из питона его убрал.
427 1359207
>>59206
Объясни что на скрине происходит. Без типов решительно невозможно разобраться.
Что такое `aliases & d.keys()`? и какой тип у key?
428 1359213
>>59207

>какой тип у key?


я мимо, но какая разница? я так понял, дело обстоит с ассоциированным списком. чем бы тот key не был
429 1359215
>>59213

>с ассоциированным списком


если в питоне объект, как и в жс, - словарь "строка/объект"
430 1359217
>>59207
aliases_map это словарь, где у каждого ключа (str) есть синонимы (set of str), например:
{"id": {"identifier", "sid"}}

Функция принимает словарь d, который может выглядеть как {"sid": value} и как {"identifier": value}, и возвращает {"id": str(value)}. Попутно вытаскивая первое значение, если value является списком, а также проверяет, чтобы все ключи из aliases_map были на месте.

> aliases & d.keys()


Это пересечение aliases и d.keys(), то есть {"sid", "identifier"} & {"sid"} вернет {"sid"}.
431 1359249
>>57320
Этот RFC уже приняли (почти год назад, лол). Надо смотреть issue в репе самого раста: https://github.com/rust-lang/rust/issues/49146
432 1359252
>>56755
Хотят добавить универсальный TryFrom [1]. Но там свои проблемы с never type [2].
[1]: https://github.com/rust-lang/rust/issues/33417
[2]: https://github.com/rust-lang/rust/issues/57012
433 1359264
>>59200
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=2d460eb8bb303b44da87582da7287210

Что-то типа того. Сам пример не скомпилится в песочнице, потому что maplit недоступен %могли бы и добавить, конечно%, а мне лень переписывать.

Сначала думал сделать через HashSet::intersection как в пиздоне, но это настолько катастрофически неэффективно и неявно, что плюнул и сделал по простому.
image.png55 Кб, 761x344
434 1359495
>>59264

>думал сделать через HashSet::intersection как в пиздоне, но это настолько катастрофически неэффективно


Внезапно нашлось такое:
https://stackoverflow.com/q/35439376/521590

В одном из ответов рекомендуют заменить хэш функцию, это помогает, но все равно медленнее твоего варианта.
435 1359497
>>59495
Я вариант с пересечение даже не пробовал писать, потому что I WILL NEVER ALLOCATE
436 1360602
Что это означает [server]? Бывает еще такое #[derive(Deserialize)]. Пример кода:

[server]
ip = "127.0.0.1"
port = "30080"
tls = false

[log]
actix_web = "debug"
webapp = "trace"

[postgres]
host = "127.0.0.1"
username = "username"
password = "password"
database = "database"
438 1360607
>>60603
Оно, спасибо.
439 1360609
Посмотрел https://learnxinyminutes.com/docs/rust/ и немного удивлен. В нем реально так мало синтаксиса или не все описано? Для сравнения Эрланг, в котором реально очень мало синтаксиса https://learnxinyminutes.com/docs/erlang/ чуть меньше текста + большая часть комментарии.
440 1360611
>>60609
Много чего не описано. Впрочем, для ознакомления остальное совершенно не к чему.
441 1360612
>>60602

>derive


синтаксис наследования
442 1360613
>>60611
>>60612
Благодарю.
443 1360617
>>60612
Не пизди. Это процедурные макросы. Никакого наследования в расте нет. Они вообще могут делать почти всё что угодно.

Конкретно макрос Deserialize из Serde [1], добавляет трейты для десериализации объекта.

[1]: https://github.com/serde-rs/serde
444 1360619
>>60617

>Никакого наследования в расте нет


impl T for S {
}

только в случае с [derive] итоговое поведение определяется тем самым макросом. используя impl for реализацию выдумывает писарь
445 1360625
>>60619
Трейтам в расте для полноценного наследования не хватает как минимум двух вещей:
1) Полей в трейте. Проче говоря, сейчас все треты stateless.
2) Возможность вызова родительского метода при имплементации трейта. Проще говоря раст не создаёт vtable для методов трейтов. https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=59bde35749b208dc8d3f8a7829a26304
446 1360640
>>27089 (OP)
Бждад как красиво на второй шебм. Что за либа?
448 1360653
>>60625
естественно, я не говорю о строго ОО-шном наследовании
это наиболее полно (как по мне) объясняющий термин. я вообще не в курсе, если у impl какое-то определение. сам растбук говорит что-то вроде

> to define implementations on types

449 1360683
>>60641
Твой гитхаб?
450 1360687
>>60683
Да, а что?
451 1360704
>>60687
Не думал что на дваче можно встретить опытного лиспера. Есть ощущение что тут одни школьники и тролли.
452 1360708
>>60687
~Lisp, C++, Go, Clojure
это все рофлянопроекты, или ты реально во всем этом на уровне?
453 1360803
>>60641
Бля, а у меня как раз на той неделе появилась идея запилить консосоле-клиент для скроллинга нулевой. Ну Татрикс как всегда, блин.
photo2019-01-1016-19-38.jpg126 Кб, 1280x960
454 1360811
>>60708
На емакс-лиспе кучу всего писал. На го две кучи (мне конечно стыдно, но что поделаешь). На кложуре в основном всякие недоделки и на отправка всякого на синт через овертон. Общелисп какое-то время ковырял, даже по работе написал пару вещей, ну и для своих проектов. У нас общелисп сейчас на текущей работе прекрасно в проде крутится, хотя писал его не я. Ну и опенсурсный проект на общелиспе стал для меня билетом за границу, так что я не жалуюсь.
455 1360813
>>60811
надеюсь ты жирный девственник -^_^-
456 1360814
>>60813
Не, я уже 10 лет как женат, а ребенок говорит по норвежски лучше меня.
457 1360816
>>60814
надеюсь твоего ребенка выебут и зарежут муслимы, а твоя жена сгниет от рака :P
так и будет
да да
458 1360817
>>60816
>>60813
Анон, не заплачь только. Сходи водки выпей, подрочи, вебм-тред с бурятками полистай - глядишь и отпустит.
459 1360871
>>60811
кучу раз хотел вкатиться в лисп, ради прикола изучить кложур. другие языки тоже хотел подрочить. но нахуй этим всем заниматься, если практически всю эту мичпуху вокруг я не применю. а закордон мне неинтересен
раст хоть более-менее начал взлетать. хоть он меня вдохновил на чуть более глубокое изучение, чем первая страница интродакшна
460 1360949
>>60871
Пиши на хаскелле.
461 1361120
Сап экспертам в треде,
есть микросервис на джаве который запрашивает один сайт, парсит респонс, делает небольшие вычисления и кидает месседж в redis pub-sub, другой сервис принимает. В худшем случае всё это занимает ~100ms. И задержка не в сети, а именно в парсинге респонса (парсинг HTML-a через jsoup) и вычислениях до того как я отправляю месседж в редис.

Скажите, есть ли смысл переписать тот сервис на Rust?
462 1361143
>>61120
Не знаю на счет раста, но знаю что перл парсит текст быстрее си или на одном уровне.
463 1361146
>>61120
Есть. Когда попробуешь serde на вкус, все остальное будет казаться недоразумением.
464 1361148
>>61146
Кстати serde довольно таки тормознутый. JSON на 60 Мб serde парсит секунд 10-20, на питоне же меньше секунды.
465 1361149
>>61146

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


Сомневаюсь что rust может предложить что-то лучшее, чем aeson в хаскелле или circe в скале.
466 1361155
>>61120

>парсинг HTML-a


>парсит респонс


При чем здесь html?
467 1361156
>>61146
Окей, я уже попробовал serde, но так сходу сделать что-то работающее не получилось, пришлось все таки "the book" читать. Прошел пока половину, вот задумался стоит ли инвестиция времени того, может сильно быстрее и не будет, поэтому и вопрос.

>>61143
Да наверное си быстрее будет, но раз уже такое дело решил новый модный язык попробовать

>>61155
Ну надо вытащить данные из HTML-a, апи там нету, поэтому так. Или я не понял твой вопрос.
468 1361157
А что на расте написать можно? Сам занимаюсь мобилкой; на иосе и на ведройде пишу.

борду смогу написать на нем?
469 1361174
>>61157
Сможешь.
470 1361191
>>61157
Хочется из гранатомета по воробьям пострелять?
471 1361192
>>61157
На расте ничего не пишут. Язык говно же.
472 1361269
>>61157
Напиши игру.
473 1361306
>>61269
графоний есть адекватный для rust?
не в смысле пердолинг на уровне pubg, а хотя бы на уровне формоприложения с каким-нибудь простейшим 2д
475 1361408
>>61317

>arewegameyet


не удосужившись даже пролистнуть страницу, я посчитал, что это описание движка для гейдева. сункс
476 1361821
>>61317
Почитал - нихуя не понял как отрисовка происходит.
478 1362014
А что, в vs code все автокомплиты, линтеры и прочая ебала нормально работает?
479 1362024
>>62014
интеллисенс работает через член
например, у меня не подсвечивает бОльшую часть методов из стандартных библиотек и внешних модулей. что-то вроде
vec!(1, 2, 3).pu
не заавтокомплитит
а так да
480 1362045
>>62024
Двачую, почти ничего не автокомплитит, а для новичка как я было бы неплохо все подсвечивать как в джаве
481 1362085
>>62024
Ну клиппи хоть работает в редакторе? А то каждый раз в консоль за ним лезть. В саблайме сколько ни ебался, так и не понял, почему не работает.
482 1362178
>>61826
Нет, в смысле конечка какая opengl/directx
484 1362246
>>27089 (OP)
Возможно стоит добавить с следующую шапку:
https://scanlibs.com/hands-microservices-rust-scalable/
485 1362271
>>62246
Что за ебанина эти турбобиты-хуиты? Как с них качать безрегистрацииисмс блджад?
486 1362295
>>62271
Хз, берешь и качаешь. Могу закинуть куда-нибудь поудобнее, предлагай.
487 1362371
>>62295
dropmefiles
488 1362410
>>62271
Прошёл 7 кругов ада ради анончика :3
https://dropmefiles.com/4aClP
мимо другой анон
489 1362443
>>62271
dropmefiles dot com/4aClP
мимо другой анон
490 1362483
>>62410

>.epub


ох ты едрить
491 1362856
Там GOспода уже перекатили тред про лучший язык в мире. Догоняйте. В шапку следущего треда можно добавить новость от now.

> Starting today, we’re making it possible for you to deploy serverless Rust applications to Now with our official Builder,​ @now/rust.


Теперь можно деплоить ваши невероятно быстрые программы на Rust в виде lambda-функций.
https://zeit.co/blog/introducing-now-rust
492 1362919
>>27089 (OP)
Котаны, а есть нескучный синтаксис для раста без точек с запятой?

Ну типа как ризон для окамла, только наоборот (и для раста).
493 1362961
>>62919
Не взлетит по двум причинам.

Первая: точка с запятой превращает expression в statement (то бишь подавляет возвращаемое значение).
Например этот код скомпилируется
fn asd() {
20;
}
а вот этот нет:
fn asd() {
20
}
потмоу что компилятор будет жаловаться, что функция должна возвратить '()' (пустой тип), а ты пытаешься возвратить '{integer}'.

Вторая: макросы. Для поддержки этого диалекта раста придётся переделывать все макросы во всех крейтах, ибо они на входе будут ожидать валидный растосинтаксис (а из-за первой причины тебе придётся грамматику раста кардинально переделывать, чтобы убрать точки с запятой).
494 1362986
>>62024
Idea + rust plugin вполне предоставляет навигацию по библиотечному коду. Подсветка работает хорошо. На первый взгляд все как для джавы
495 1363043
>>62961
Чет ты аутизм какой-то выкатил. Я спрашиваю про компилирующийся в раст язык с нескучным синтаксисом, а ты какую-то дичь пишешь, извини.
496 1363055
>>63043

> Я спрашиваю про компилирующийся в раст язык с нескучным синтаксисом


До такой хуйни из жаваскриптомирка ещё никто не додумался. Будешь первым. Были те, которым точки с запятой пиздец как мешают кодить, но их методично посылали нахуй.
497 1363059
>>63055

>До такой хуйни из жаваскриптомирка ещё никто не додумался.


Почему? Я вроде несколько растоязыков видел, но в основном они слишком сильно меняли семантику (по крайней мере вариация на тему "динамический раст" точно была)
498 1363068
>>63055
Точки с запятой ебанутое решение, сделали бы как в свифте. И явный return лучше.
499 1363075
я обосрался
500 1363079
>>63059

> Почему?


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

Хотя тот же котлин, например, компилируется напрямую в байт-код, а не в жаву, хотя и имеет совместимость с жавой.
501 1363152
>>63079

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


Ты опять какую-то хуйню несешь.
502 1363156
>>63152
Это ты хуйню несёшь, говна кусок. Тебе что нужно? Встраиваемый в раст язык у которого своя собственная стандартная библиотека, для которого ты просто делаешь некоторые АПИ, как например встраивают язык Lua или JavaScript? Или язык который сможет вызывать растовские функции и компилируется вместе с ним в один бинарник (как например сделали с Rust2015 и Rust2018 - по сути два языка, которые поддерживаются одним компилятором и могут спокойно взаимодействовать друг с другом)? Если второе, то тебе нужна стандартная библиотека раста и возможность использовать его крейты? Если да, то для этого нужна совместимость на уровне ABI (чтоб можно было вызывать эти самые функции) и совместимость синтаксиса, чтобы процедурные макросы могла нормально работать (а они получают и выплёвывают синтаксическое дерево).
503 1363235
>>63059
Лучше притащить ссылку что именно ты там видел.
Если это что-то вроде http://www.piston.rs/dyon-tutorial/ то это просто отдельный язык и он не транспайлится/компилируется в раст.
Библио Глобус.webm7 Мб, webm,
360x360, 3:02
504 1363265
>>62919
Научись понимать и принимать непривычный для себя синтаксис.
Если ты не тупой, и если каждая мелочь синтаксаса обоснована, дизайн языка целостный, как в расте (а не легаси и наслоения протухающих костылей как в плюсах и js) - то ты без проблем свыкнешься с непривычным поначалу для тебя синтаксисом.
505 1363282
>>63265

>в расте нет либ, где там вертят на хую всякую логику да ещё и без документации

15363384867080.png197 Кб, 799x395
506 1363438
Пора бы перекатить, да?
Предложения по обновлению шапки, картинки или что нибудь-еще?
507 1364315
Сап растаны.

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

Итак. Наверное ленивый не слышал про новенький язык системного уровня. Решил и я потыкать Rust. За плечами императивная жавка, славная Scala, немного хаскель. (ну и тыкал всякий хлам типа питона, жса).

Краткие отрывки из описаний, статей - создают крайне положительное впечатление. Решил обмазаться. Обмазаться под винду, т.к. на домашней пекарне она, для игрулек.
Скачал компилятор и тут понеслась.
Он мне говорит скачай ебалу Visual Studio билд хуилд.
Ладно. Скачал-поставил. Компилятор говорит "нееее. не поставил". Ладно. Я упорный. Пошёл перечитывать растосайт.
Да говорят скачай ебалу и поставь галочку на с++. Какой С++? Я же поставил с++ билд тул. Вот же он. Ладно пошёл форумы курить. Ага там ещё есть С++ в списке. Ну ахуеть теперь.

Это вы ребята проебались конечно с гет стартед и инсталлом. Стартовать не очень приятно было. Ну ладно. Вроде хелоу ворлд завёлся.

Расчехлил растбук. Приятно написано. Вербозно конечно, но зато ничего не упущено.

Решил обмазаться ИДЕ. Поделями жидбрейнс я сыт по горло. Решил попробовать что-нибудь другое. Поставил VS Code. Давай накатывать плагинчики. Плагинчики говорят накати ещё lldb. А ещё накати питончика - ты же хочешь дебажить? Погорел, успокоился и накатил.

VSCode конечно лажа какая-то. Какой-то непонятный интерфейс. Ну ладно пока сойдёт. Подсветочка есть, билд сервер краснит, дока подтягивается. (оценил к слову локальную доку, собираемую из терминала. Кайф) Реквестирую советы какую ИДЕ ещё заценить.

Написал вот guess_game. Всё понятно. Вот он паттерн матчинг, вот типы, божественная иммутабельность, АДТ (result же это адт?). Всё как я люблю. Многое очень похоже на скалу. Всё удобно, всё радует. Да конечно опять точки с запятой ставить, но ладно уж.

В общем не смотря на рейдж на старте, пока всё идёт довольно весело и интересно.

Куча вопросов к вам, бывалым. Всё конечно узнаю из растбука, но мне нетерпится. Что по тайп-классам? Я так понял тут так же через трейты это реализовано. Но в скалке ещё implicit учавствует в их образовании. А как тут? Что по функциональной парадигме? Вики говорит, среди прочего, это функциональный язык. Что по referential transparency? println! говорит о том, что не завезли FFI инкапсулированного в какую-то IO монаду. Хотя в скала так же, но у нас это допилено функциональными либами. Как вообще сообщество смотрит на уклон в сторону ФП?
507 1364315
Сап растаны.

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

Итак. Наверное ленивый не слышал про новенький язык системного уровня. Решил и я потыкать Rust. За плечами императивная жавка, славная Scala, немного хаскель. (ну и тыкал всякий хлам типа питона, жса).

Краткие отрывки из описаний, статей - создают крайне положительное впечатление. Решил обмазаться. Обмазаться под винду, т.к. на домашней пекарне она, для игрулек.
Скачал компилятор и тут понеслась.
Он мне говорит скачай ебалу Visual Studio билд хуилд.
Ладно. Скачал-поставил. Компилятор говорит "нееее. не поставил". Ладно. Я упорный. Пошёл перечитывать растосайт.
Да говорят скачай ебалу и поставь галочку на с++. Какой С++? Я же поставил с++ билд тул. Вот же он. Ладно пошёл форумы курить. Ага там ещё есть С++ в списке. Ну ахуеть теперь.

Это вы ребята проебались конечно с гет стартед и инсталлом. Стартовать не очень приятно было. Ну ладно. Вроде хелоу ворлд завёлся.

Расчехлил растбук. Приятно написано. Вербозно конечно, но зато ничего не упущено.

Решил обмазаться ИДЕ. Поделями жидбрейнс я сыт по горло. Решил попробовать что-нибудь другое. Поставил VS Code. Давай накатывать плагинчики. Плагинчики говорят накати ещё lldb. А ещё накати питончика - ты же хочешь дебажить? Погорел, успокоился и накатил.

VSCode конечно лажа какая-то. Какой-то непонятный интерфейс. Ну ладно пока сойдёт. Подсветочка есть, билд сервер краснит, дока подтягивается. (оценил к слову локальную доку, собираемую из терминала. Кайф) Реквестирую советы какую ИДЕ ещё заценить.

Написал вот guess_game. Всё понятно. Вот он паттерн матчинг, вот типы, божественная иммутабельность, АДТ (result же это адт?). Всё как я люблю. Многое очень похоже на скалу. Всё удобно, всё радует. Да конечно опять точки с запятой ставить, но ладно уж.

В общем не смотря на рейдж на старте, пока всё идёт довольно весело и интересно.

Куча вопросов к вам, бывалым. Всё конечно узнаю из растбука, но мне нетерпится. Что по тайп-классам? Я так понял тут так же через трейты это реализовано. Но в скалке ещё implicit учавствует в их образовании. А как тут? Что по функциональной парадигме? Вики говорит, среди прочего, это функциональный язык. Что по referential transparency? println! говорит о том, что не завезли FFI инкапсулированного в какую-то IO монаду. Хотя в скала так же, но у нас это допилено функциональными либами. Как вообще сообщество смотрит на уклон в сторону ФП?
14658221976520.jpg49 Кб, 300x898
508 1364531
>>62410
Ты охуенен
509 1364533
>>62410
ты охуенен
510 1364534
>>62443
и ты охуенен
20190315-4e496.png36 Кб, 937x199
511 1364646
>>64315

>ФП


ну вот я как-то так проверяю наличие файла в дире. Вроде достаточно функционально. Или что ты там имел в виду?
512 1364751
>>64646

> что ты там имел в виду?


Это он скалой объебошился. Они там все такие.
513 1364797
>>64646
вот этот верно говорит -> >>64751. Ну почти. Не все на самом деле. Есть любители обмазываться императивщиной и сайд-эффектами. Но я из тех что объебошился, да.

Ну я так понимаю - так выглядят лямбды. Функции как first class values хз как это по-русски сказать это конечно шаг в сторону ФП, но я про монадки, аппликативы и прочий теоркат. Соответственно и про higher kinded types. Да чтоб с частичным применением. Ну и есть ли карирование?
514 1364806
>>64797

>карирование


https://rosettacode.org/wiki/Currying#Rust - что нагуглилось
монадки вроде прикручиваются сторонним трейтом + дефолтный Option
Большинство перекатчиков на раст из мира императивщины, поэтому лучше ты сам нагугли и поясни, как оно обстоит в расте и чем отличается от скалы/хацкеля.
515 1364948
>>64806
спасибо, анончик. по мере изучения разберусь с вопросом и напишу
516 1365865
Аноны, а у всех навигация к макросу в vscode не работает или только у меня? В идее норм, "go to -> implementation" и приехали, а тут облом.
517 1365885
>>65865
навигация ко всему, что не является кодом данной либы, работает через хуй (никак)
518 1366058
>>65885
В емаксе переход в функции крейтов и стандартной либы через rls работает через раз. Макросы не работают от слова совсем.
519 1367300
>>65865
>>65885
>>66058
Ну вы и лалки.

У меня в idea все работает прекрасно
520 1367303
>>67300

> все


Даже макросы сделали?
521 1367312
>>67303
Сделали, но не полностью. Иногда макросы отваливаются. Например, если лазить по исходникам других либ. А иногда не отваливаются
522 1367808
Че за нах?
Всё по растбуку 2018 который последний.
523 1367812
>>67808
так тестовые функции только в скоупе модуля обьявлять можно
вроде бы как было
Capture.PNG77 Кб, 757x788
524 1367814
>>67812
Тут вот норм тогда че они нерабочий пример пихают-то а...
Screenshot2019-03-2021-48.png68 Кб, 591x714
525 1367820
>>67814
хз

да и у тебя там ворнинг, а не ошибка, к тому же
526 1367828
>>67820
Ворнинг но тест не стартуется. Видно же что 0 раннинг
527 1367829
>>67828
https://rust-lang.github.io/rfcs/2471-lint-test-inner-function.html#guide-level-explanation
ну вот я загуглил твой мессадж

а потом увидел, что у тебя весь код прямо внутри fn main()
528 1367831
>>67829
Спасибо, когда вытаскивал всё за мейн то оно ныло на нот фаунд из зис скоуп. Вообще странно что они пихают этот код в растбук наверна где-то пропустил объяснения в стиле "не повторяйте дома"
529 1368548
>>67808
Ты filters_by_size внутрь main запихал. Юзал бы rustfmt сразу увидел что во что вложено.
530 1368908
а общий вопрос про блокчейны итт-релейтед?
531 1369223
Где почитать про эти ваши референсы, борровинги? Не понимаю нихуя. Что ни напишу, компилятор кидается в меня хуями и грит что-нибудь вроде "cannot move out of borrowed content" и "cannot assign to immutable reference". Ну или если нигде нет, объясните хоть, что к чему, на примере указателей и ссылок в плюсах
532 1369236
Смотрите, аноны, как не надо делать: David Wang - пидор китаёзский
https://github.com/wangds/libbayer
1. run_demosaic, который ни хуя не возвращает полезного, весь результат кадётся в заданный буфер. Но может выкинуть Err. Сука, я полдня убил, пока не обратил внимание на note от конпелятора и не сделал unwrap, которого даже нет в примере.
2. Оказывается, размерность результата должна быть равна размерности равки, ну охуеть. А смысл тогда задавать её самому, если она очевидно выводится?

Бля, ну что ему стоило создать буфер нужного размера самому и вернуть? Так он и сделал бы unwrap необходимым, и избавил юзера от лишних действий по выделению буфера заведомо известного размера. А так какая-то хуйня получилась, ей б-гу. И эта вот хуйня, единственное, что сейчас есть на расте для дебайерезации, rawloader её не умеет.
533 1369240
>>69236
Хороший повод написать свою либу.
>>69223
В растбуке.
534 1369246
>>69236

>Бля, ну что ему стоило создать буфер нужного размера самому и вернуть?



Если тебе нужно будет обработать 1000000 картинок, то выделение памяти отожрет заметную часть перформанса. Можно придумать что-то более элегантное, но это не случай "потому что могу".
535 1369252
>>69246
Ты о том, что можно задать один раз буфер под все 1000000 и потом нарезать слайсами? Вариант, конеш. Но unwrap() в пример он мог бы добавить, как и самостоятельно вывести размерность буфера из размерности равки (раз уж ему так сложно самому сделать сдвиг вправо на разность бит).
536 1369292
>>69240

>В растбуке.


Читал поностью. Нет там ни фига про все эти хитрости. Да и код примеров там слишком примитивный.
537 1369295
>>69292
Programming Rust почитай или просто задавай конкретные вопросы или приводи примеры кода.
Тред утонул или удален.
Это копия, сохраненная 15 апреля 2019 года.

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски