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

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

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
5918 Кб, Webm
#2 #639475
— Одну минуту, — громко произнес ОП, — прежде чем продемонстрировать вам способ распития портвешка, о котором все вы, как будто, позабыли, я должен опорожнить свой кишечник.

Вот каким образом развратник приступил к омерзительной операции. Его окружили четверо ржавопетухов: один держал наготове большой ночной горшок, второй взял зажженную свечу и подставил ее поближе к анусу, чтобы было лучше видно происходящее, третий сосал ему член, четвертый, перекинув через руку белоснежное полотенце, целовал главпетуха в губы. Тот, опершись еще на двоих педерастов, поднатужился, и как только появилось невероятное количество дерьма, которое обыкновенно и регулярно выдавал хозяин параши, учитывая страшное количество поглощаемого им борща, тот петух, что держал горшок, принялся восхвалять экскременты. «Какое прекрасное ржаводерьмо! — восклицал он. — Ах, господин мой, какое превосходное говно! Как красиво вы испражняетесь». Когда дифирамбы закончились, педераст, вооруженный салфеткой, языком очистил преддверие ануса, а горшечник подставил содержимое горшка под нос главпетуху и опять громогласно восхвалял его. После этого мощная струя мочи ударила в рот сосателю, который тут же проглотил всю жидкость, полотенце завершило то, что не мог сделать язык, и четверо педерастов, оставшись без дела, долго сосали поочередно язык, фаллос и задний проход распутника.
>>640533>>640546
#3 #640533
>>639475
Какая мерзость эта вебмка
#4 #640546
>>639475
Что за фильм?
>>640572
#5 #640572
>>640546
Скорее всего САЛО но хуй знает. Хуита для эстетствующих педрил.
#6 #641808
Смотрите, какую штуку на расте запилили: https://pijul.org/
Все преимущества darcs без его чудовищных тормозов.
sage #7 #643510
Очень плохая шапка, никуда не годится.
Объявляю тред досрочно утонувшим.
#8 #646447
>>646616
#9 #646602
>>641808
Зачем ЭТО вообще существует?
>>652037
#10 #646616
>>646447
Не милфа и не молодая, не смазливая и не страшная. Хз чот. Леночка ламповее, кек
#11 #652037
>>646602

> There are basically two approaches to version control: either snapshot-based (git, mercurial, svn or their ancestors), or patch-based (darcs). Historically, patch-based systems have been very simple to learn and use, but slow, whereas snapshot-based systems can be extremely fast, but are usually hard to use for more than the simple operations. As an example, cherry-picking is not intuitive in git/mercurial, and merging is sometimes plain wrong.

#12 #652288
>>639238 (OP)
Что там с серво? Далеко ещё до юзабельного состояния?
>>652293>>652727
#13 #652293
>>652288
Очень далеко, ничего интересней простеньких демок не завезли.
>>652303>>738694
#14 #652303
>>652293
У них какие-то непредвиденные трудности? ЕМНИП у них были наполеоновские планы на первую половину этого года.
>>652361>>652364
#15 #652361
>>652303
У их трудности название "нельзя просто взять и написать браузерный движок с принципиально новой архитектуры с нуля".
>>652392
#16 #652364
>>652303
А ещё "нельзя просто взять и разработать язык и бровсер одновременно".
>>652392
#17 #652392
>>652364
>>652361
Ну, так это вроде не непредвиденные.
>>652435
#18 #652435
>>652392
Проблемы у того, кто эти даты назначал.
#19 #652727
>>652288
Что-то работает, что-то ещё нет. Макабу он до сих пор не осилил.
#20 #653587
Тред жив/мёртв?
Допустим у нас есть некий тип struct SomeType. Можем ли мы используя return вернуть указатель на свежесозданный внутри функции экземпляр SomeType таким образом чтобы компилятор не наезжал по поводу того, что указатель сдох в том месте, где кончилась функция из которой мы делаем return?

Например есть функция, которая принимает путь(path) внутри себя вычисляет slice, который содержит скажем кусок пути. При попытке вернуть этот результат компилятор говорит мне что я дурак и дегенерат, бобик мёртв, вернуть его нельзя. Окай обвинения компилятора скорее всего уместны, но куда мне тогда поместить результат, чтобы он не помер при выходе из функции?
#21 #654367
>>653587
Что мешает просто вернуть значение, а не указатель?
>>654376>>669737
#22 #654376
>>654367
Может просто структура жырная?
>>654402
#23 #654402
>>654376
Если структура слишком жирная, чтобы класть её на стек (что странно), оберни её в Box<T>.
В любом случае, что-то должно сохранять владение.
#24 #654415
>>653587
unsafe
n
s
a
f
e
#25 #655459
>>653587
Вот как ты делают только мудаки. Нормальные поцы дают код который надо исправить. Тупо потому что ты сам не знаешь что хочешь, а так тебе хоть укажут в чем конкретно ты не прав.
>>669737
26 Кб, 600x600
#26 #657442
#27 #657490
https://github.com/ebkalderon/amethyst
Hello world c 324 строками кода. 2 месяца разработки. 150 звезд. Продал товар даже не начиная создавать.
>>657578
#28 #657578
>>657490
Там дохуя кода
>>657795
8 Кб, 337x92
#29 #657795
>>657578
Там учебник больше чем весь код с комментариями
#31 #666748
Растаны,
имеется структура(Foo), в ней хочу замутить HashMap типа ключ-строка, значение-лямбда вида Fn(Hui) -> Govno.
Теперь:
1) Fn насколько я понял - это trait. А значит сущность безразмерная, и при попытке передать лямбду по значению, я сосну.
Получается тип значения у HashMap будет Box<Fn(Hui) -> Govno>?
2) Какой строковый тип подойдет для роли ключа? Если использовать &str, то ключ будет существовать, пока я нахожусь в области видимости этого &str. Верно ли, что в таком случае, если в дальнейшем я буду ебашить Foo-фабрику, а в ней задавать начальные значения HashMap'у, то life-checker меня обоссыт? Т.е. опять нужно выделять память в куче(использовать String)?

C#-вебмакака
>>666835
#32 #666835
>>666748
https://play.rust-lang.org/?gist=d4bcb2e6902dea5a63df&version=stable

1) Получается что так. Причем сможешь хранить как лямбды, так и обычные функции. См. ссылку.
2) Не заебывайся и юзай String. Или &'static str если все ключи известны во время компиляции. Ты же не будешь хранить все ключи в одной длинной строке на стеке, так что в любом случае оно будет на куче. К чему эти преждевременные оптимизации. Будто в том же шарпе хэш мап не полностью в куче. Тем более если заполнять хэшмап последовательно большим количеством записей, то все равно все строки в куче будут последовательно лежать с минимальной фрагментацией.
>>666869
#33 #666869
>>666835
Охуенно. Спасибо за разъяснение.
#34 #667230
Rust такой охуенный, что я не могу на нем писать. Только заглядываю в документацию, как обканчиваю монитор, иду курить, а затем без сил падаю спать.
#35 #667966
Как работать с матрицами в этом вашем расте? Возможно вопрос звучит глупо, но я правда не понимаю.
Более конкретно, как по-простому задать часть одной матрицы с помощью другой, что-то вроде A[a:b, c:d] = B?
Мне для этого нужно самому сделать обертку над вектором и при вставке этой матрицы проходить по строкам (или столбцам в зависимости от способа хранения), вычисляя индексы? Или такое уже кто-то запилил?
>>667982
#36 #667982
>>667966
https://crates.io/search?q=matrix
Если нет того, что тебя удовлетворит - то да, пилить самому.
#37 #668111
Посоны.
Посоветуйте годных ящиков.
1) Числа. BigInteger, BigRational, decimal
2) Вывод графиков (2d, линии уровня, поля). Есть обертки matplotlib или gnuplot годные?
3) GUI (нужно чтонибудь типа picturebox WinForm чтобы самому рисовать)

А, посоветуйте еще годных плагинов для Sublime Text 3.
>>668220
#39 #668239
>>668220
Да я дурак просто, навигацию по cargo.io осилить немогу.
#40 #669737
>>654367
Так и сделал. Сперва не мог её вернуть так как получал указатель, не догадался его разименовать в переменную-результат.
>>655459
Понимаю неудобство, но с телефона не мог достать код.

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

Также есть сложности с компиляцией на windows некоторых библиотек, которые без проблем собираются под бубунтой.
#41 #669855
Потратил я час времени, значится, чтобы собрать ебучий серво. И у меня вопрос - что с восприятием реальности у челика, который ставил дату его релиза? Сука, он даже двощик не осилил, причём лагает как кусок дерьма даже на своих примерчиках. Подрубать гпу как вот этот челик >>663859 для рендеринга страниц - это, блядь, гениально, особенно на мобильных платформах.

Учитывая что проекту уже 3-й год - ещё ближайшие 3 года релиз чего-то более менее вменяемого сомнителен.
#42 #669903
>>669855
И да, Карл - 300мб на 1 вкладочку с двощиком. И это билд в релиз моде, без поеботы с дебагом.
>>669919
#43 #669919
>>669855>>669903
Весь смак в том, что никто толком и не знает, что они подразумевали под "альфа-версией" в прошлом году. У Мозиллы даже в планах не было использовать этот проект по назначению. Это исследовательский проект как бы. Всё что у них запланировано на текущий момент - добавить одну микропиську в FF. Сейчас они вообще толком ничего не говорят, хоть и расширяют количество сотрудников.
Also, вот сами эти их тестики из презентации:
https://github.com/pcwalton/webrender-demos/
На лисе реально 1-2 кадра в секунду, но под хромом хоть и не 60fps, но прилично идет, так что врал Патрик.

> причём лагает как кусок дерьма даже на своих примерчиках


Ну так оптимизацией они и не занимались. Их задача на текущий момент чтобы эта хуйня хоть как-то работала. В команде где-то 10 человек. Gecko разрабатывают 50 человек штатных сотрудников. Сколько разрабатывает Webkit/Blink?

> он даже двощик не осилил


Можешь сделать скриншот, кстати?
>>669948
357 Кб, 1920x1080
450 Кб, 1920x1080
#44 #669948
>>669919

>Сколько разрабатывает Webkit/Blink?


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

>Можешь сделать скриншот, кстати?


Пикрил.
>>669956>>670825
#45 #669956
>>669948
Ну да, хуйня полная.
#46 #669970
>>669855
Зато какои пиар
#47 #670755
>>669855

>Подрубать гпу на мобильных платформах


Лол, как раз там это лучшее решение. У всех современных смартов и планшетов есть поддержка opengl es 2, зачем грузить cpu если можно загрузить gpu, который справится с рендером более энергоэффективно.
#48 #670825
>>669855

> он даже двощик не осилил


Именно двощик он и не осилил. Макака немного намудрила с веб-магией.

>>669948

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


Десять человек на такой проект это действительно немного. Тем более, что им скорее интереснее сейчас прикручивать browser.html/mozbrowser api, чем фиксить рандомные баги с вёрсткой.
>>671101
#49 #671101
>>670825

>Именно двощик он и не осилил. Макака немного намудрила с веб-магией.


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

>Десять человек на такой проект это действительно немного. Тем более, что им скорее интереснее сейчас прикручивать browser.html/mozbrowser api, чем фиксить рандомные баги с вёрсткой.


Ну, 10 человек - это видимо толлько команда в штате, на том же гитхабе числится 400+ контрибьютеров.
>>671185
#50 #671185
>>671101

> на вроде бы простом реддите вообще падает


У меня вроде норм работает. Медиум начинает грузиться, но затем падает.
В случае двачика есть регрессия: раньше он рендерился намного лучше, лишь только постинг не работал.

> Ну, 10 человек - это видимо толлько команда в штате, на том же гитхабе числится 400+ контрибьютеров.


Большинство из них сделало примерно один маленький вклад за всё время.
>>671188
#51 #671188
>>671185

>раньше он рендерился намного лучше, лишь только постинг не работал.


У меня в серво он и сейчас не работает вообще ни в какой форме.
#52 #671576
На каком железе оно работает и как добавляют поддержку? На ARM работает?
>>672000>>672057
#53 #672000
>>671576

> На ARM работает?


Да, работает.
#54 #672057
>>671576
На любом, по идее. Там же LLVM бекенд.
#55 #674770
Чейнжлог к 1.7 опубликовали, посаны: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-170-2016-03-03
Если я правильно понял, можно в хэшмэп свой хэшер использовать, глядишь перестанет так на интах тормозить.
#56 #674875
>>674951>>675973
#57 #674951
>>674875
Что-то жиденько как-то
>>674959
#58 #674959
>>674951
Зато по расписанию.
>>674963
#59 #674963
>>674959
Ну надож видимость для спонсоров создавать.
#60 #675973
>>674875
Уже обсуждаем:)

Точки над бенчмарками уже расставили...
>>675976>>676017
#62 #676017
>>675973

>Точки над бенчмарками уже расставили...


Ну, если ты это так называешь, то да. Хотя я бы сказал что один колобок обосрался выставив напоказ свою глупость.
>>730469
#63 #676698
Rust заменит C++?
#64 #676711
>>676698
Его уже ничто не заменит.
#65 #676897
>>676698
Тебе в /sn/ или /mg/, тут гадалок нет.
Прямо сейчас есть множество областей, где замены нет даже близко. Например, gui.
>>676938
#66 #676938
>>676897
Так там же Tcl/Tk, не?
#67 #676943
>>676698
JavaScript заменит всё.
#68 #677538
Как отметили очередной релиз котаны?
>>677685>>681275
#69 #677685
>>677538
А что, предполагается по случаю очередного релиза употреблять алкоголь/вещества/баб? Если да, то люди точно потянутся к расту.
#70 #681241
https://www.youtube.com/watch?v=u0hYIRQRiws
Ну хуй знает. Они что, каким-то серво из параллельной вселенной пользуются?
>>681285>>681364
#71 #681275
>>677538
Хули там отмечать, если релиз каждые 6 недель, вне зависимости от изменений.

Кстати, куда делся GC из дорелизных версий?
>>681514
#72 #681285
>>681241
Не обязательно, просто в нём рендеринг на GPU доступен.
#73 #681364
>>681241
В линуксе вебрендер работает не так хорошо, как в макосе, но он все ещё намного быстрее Firefox'а.
283 Кб, 1277x982
#74 #681371
Через вебрендер, кстати, /pr/ норм рендерится.
>>681510>>740448
#75 #681415

>Initial implementation of the `?` operator just landed


>The ? postfix operator is sugar equivalent to the try! macro, but is more amenable to chaining:


>File::open("foo")?.metadata()?.is_dir()

#76 #681510
>>681371
А как его потыкать-то? Скомпилировал, куда засунуть либу, чо настроить?
>>681692
38 Кб, 500x550
#77 #681514
>>681275
Убрали к хуям подальше, чтобы ещё и эту плашечку хейтеры не повесили. Вообще, вроде бы с нуля пишут.
126 Кб, 974x622
150 Кб, 974x622
107 Кб, 974x622
#78 #681541
Windows 80.6%
Mac OS X 2.8%
Linux 16.6%
Nope?
>>682438
#79 #681692
>>681510
./mach build --release
./mach run --release -- https://2ch.hk/pr/ (М) -w
Как-то так. Можно ещё browser.html поверх него навернуть.
#80 #682438
>>681541

> Windows 80.6%


> Rust's support for the GNU ABI is more mature, and is recommended for typical uses.


Ребята там еще не убились о подводные камни?
#81 #685093
А этот Servo уже собирали под ведроид?
>>685105
#82 #685105
>>685093
На гитхабе заголовок в описании:

>Building for Android target


пиздуй собирай и тестируй, коли интересно.
#83 #686456
Привет, аноним.
Есть `x: Vec<f32>` со значениями от -10 до 10 с шагом 0.5.
Есть функция `f(x:f32) -> f32`
Нужно сохранить `x` и соответствующий ему `f(x)`.
Попытался юзнуть `HashMap`, но rust говорит что у `f32` не реализован трейт `Ord` и `Eq`. Может есть какие-нибудь еще варианты структур?
Нужно чтобы структура была отсортирована по значениям `x` и значения `x` были уникальными.
>>686717
#84 #686717
>>686456
Пройдись по всем элементам вектора, преврати каждый элемент в пару значения и функции от этого значения:
let v: Vec<(f32, f32)> = v0.iter().map(|x| (x, f(x)) );
У тебя и так в векторе значения уникальны и отсортированы, HashMap тебе (пока) не нужен. Если все-таки понадобится, используй метод collect.
Возможно, ты не понял что в векторе можно хранить пары значений?
>>686749
255 Кб, 577x825
#85 #686749
>>686717
Я немного неправильно выразился.
Есть функция f(x). Она очень затратна по вычислениям.
Я хотел бы реализовать обертку вокруг этой функции с кэшем. Есть заранее заданный интервал значений x, где я могу в порядке инициализации посчитать этот f(x). Если юзер запрашивает уже посчитанное значение, то я возвращаю его из кэша, а если новое значение, то я считаю значение функции и помещаю в кэш (ну и конечно возвращаю). Требование сортированности я чет с неба взял, а уникальность мне очень даже нужна.
Гугл подсказывает мне, что проблема в NaN, и похоже мне придется писать обертку вокруг f32 и реализовывать для нее нужные трейты.
>>687135
#86 #687135
>>686749
Бля, вот очередной мудак, который не показывает что у него там за секретный правительственный код который никто не может видеть, а все должны работать экстрасенсами.
Если юзер может запрашивать только определенные значения с заданным шагом - то просто принимай от него целочисленные значения или преобразуй принимаемые значения в дроби типа 1/2, 2/2, 3/2 где делитель константа. И по делимому пили хэшмап.
Если принимаемые значения произвольные, то хэшмап тут никаким вообще боков не пойдет. Тупо по тому что операция равенства для значений с плавающей точкой вообще точно не определена. Просто почитай как float работает в современных процессорах.
Можно конечно сделать обертку с имплементацией трейта и таки сделать хэшмап, но я не понимаю что это тебе даст.
В случае с произвольными значениями надо делать сортированный вектор из пар значений (x, f(x)), с бинарным поиском по первому значению с определенной погрешностью (например 0,005).
Но тут опять же не понятно, значения f(x) прямо пропорционально зависят от x? Если да, то например если посчитан результат для 0,4 и 0,6 то при запросе 0,5 можно взять два готовых результата и отинтерполировать.
>>687321
#87 #687321
>>687135
Потише, братишка, в этой ситуации.
Я просто себе задание выдумал, чтобы выполняя его я познал вкус программирования на расте. На самом деле я из DARPA
Мне просто нужен кэш, куда я буду складывать вычисленные значения. А теперь следи за руками -
HashMap get O(1)~

> В случае с произвольными значениями надо делать сортированный вектор из пар значений (x, f(x)), с бинарным поиском по первому значению с определенной погрешностью


Binary search O(log n)

> но я не понимаю что это тебе даст


Скорость даст, которую я хочу получить, используя HashMap.

> Тупо по тому что операция равенства для значений с плавающей точкой вообще точно не определена.


А пацаны то и незнают про (a-b).abs() < f32::EPSILON
#88 #687507
Чо такое 'a 'b 'huebe?
>>687829>>687952
392 Кб, 1400x1980
#89 #687829
>>687507
Время жизни. В расте у всех данных есть один конкретный владелец.
В общих случаях компилятор сам определяет время жизни. Но иногда он у тебя хочет уточнить что ты хочешь от него. Например, ты заимствуешь какие-то данные из какой-то структуры. И ему нужно удостоверится, что заимствование (&) не переживет владеющей ею структуры.
Есть время жизни 'static. Данные с таким временем жизни данные существуют всё время работы программы. Остальные названия выбираются как тебе угодно.
856 Кб, 2560x1600
#90 #687841
http://www.wired.com/2016/03/epic-story-dropboxs-exodus-amazon-cloud-empire/
Тут заявляют, что Dropbox с Go на Rust перекатился.
#92 #687982
Вот вам еще проект принес:
https://github.com/twitter/rpc-perf
>>688026
#93 #688026
>>687982
Ну у них все подряд на скале. Хипсторы такие хипсторы.
>>688038
SAGE #94 #688038
>>688026
Как что-то плохое.
>>688040>>688061
#95 #688040
>>688038
Чертова сажа
2052 Кб, 2209x1000
#96 #688061
>>688038
Да ничего плохого.

> Servo is going to have an alpha release in June: Servo + browser.html. Help them identify issues!


https://groups.google.com/forum/#!topic/mozilla.dev.servo/dcrNW6389g4
#97 #689675
Когда раст будет готов к продакшену, котаны? Просматривал crates.io, там почти все либы с нулевой мажорной версией.
И поясните за версионность. Мне самому нужно менять version в toml файле, или какой-нибудь cargo release сам меняет его?
#98 #689700
>>689675
Нет продакшен грейд http библиотеки на mio, нет нормального gui, из встраиваемых языков только lua. А для числодробилок и игорей вполне годен. Язык сам по себе стабильный, вроде никуда меняться не собирается настолько чтобы все переписывать пришлось. Крейты некоторые бывает меняются вплоть до переписывания половины апи, да, но об этом обычно прямо указано на страницы репы, что они в стадии разработки.
>>690148
#99 #689815
>>689675
1-3 года и будет готов для продакшена.
На текущий момент версию менять самому.
#100 #689816
>>689675
Про версионирование - никто, кроме тебя, не знает, какой выставить следующий номер версии, Cargo уж точно.
В качестве схемы версионирования используй http://semver.org, как все нормальные люди (и почти все крейты на crates.io)
#101 #689936
Гайз, паттернов проектирования завезите под раст.
#102 #689956
Каталог библиотек: libs.rs
В отличии от crates.io здесь либы сгруппированы по категориям.
#103 #690030

>cargo new hello_world --bin


>cd hello_world


>cargo build --release


>смотришь размер бинарника hello_world.exe


>более двух мегов


Хули тут так много?

Я думал этот язык специально сделали на замену дидовских крестов, а оказалось совсем не так.
#104 #690058
#105 #690148
>>689700
А mio уже годен? Сравняется по производительности с nginx?
>>690155>>690557
#106 #690155
>>690148
Это библиотека ввода-вывода, ущербное.
>>690165
#107 #690165
>>690155
Я понял.
#108 #690295
>>690030
Всё повязано на libc со статической линковый. На линуксе пилят какие-то васяны отдельную привязку к musl, там в несколько кб можно обойтись. Но там вообще отдельная библиотека.
#109 #690557
>>690148
Я его больше года назад последний раз тыкал, так то работало все, это просто обертка над epoll.
Но api было по стандартам раста довольно ущербное. Сейчас есть поверх него всякие обертки, посмотри, повыбирай. На crates.io просто в поиск mio вбей, там всякие mioco, rotor и т.д.
#110 #690559
>>690030
Попробуй C скомпиль статически с libc.
>>690564
#111 #690564
>>690559

>C скомпиль статически с libc


Это опасно же. Подключишь длл, а там, допустим, маллок по другому реализован.
>>690570
5 Кб, 780x275
#112 #690570
>>690564
Я просто оставлю я здесь.
>>690633
#113 #690633
>>690570
А можно скомпилить статически только то что используется в проге, без всего лишнего?
>>690723>>690904
#114 #690723
>>690633
С glibc, вероятно, нельзя.
#115 #690904
>>690633
Тебе это зачем? Ты прогу дискетами распространять собрался? Для микроконтроллеров все равно std не подходит, для них и исполняемый файл получается копеечный.
#116 #691688
А в будущем планируется автовывод типа, а то как-то печально без этого. Или четкие чуваки сразу правильно пишут все эти обвесы из Box<<T>>>>?
>>691695
#117 #691695
>>691688
Ну а сам-то ты как себе это представляешь? Напиши хоть псевдокодом что именно ты хочешь.

Если я тебя правильно понял – чтобы всё боксилось и тд автоматически – нет, слишком крутая абстракция для низкоуровенного языка, лишняя магия. Разве что как плагин для компилятора что вообще, как мне кажется, очень хуёвая фича – если язык выстрелит все начнут писать на своих диалектах раста, как в мире хачкеля.
>>691723
#118 #691723
>>691695
Ну я просто в контрраст статьях натыкался на такие истории: "Писал писал, потом не скомпилировалось потому что нужно боксануть, а потом туда, а потом еще это, в итоге нужно в десяти местах поменять тип". А так везде бы писался var и было бы нормально. Почему сильно крутая абстракция, в це++ есть аuто.
>>691728
#119 #691728
>>691723
Блядь, ты дурак, мозга мне выебал. В расте есть вывод типов все переменные, внезапон, имеют синтаксис вида let hui = Box(Hui::new());, только он не спасает от такой хуйни никак.
>>691730
#120 #691730
>>691728
Знаичт я читал очень старые посты. А чего мозг сломался то? ты же словил эксепшн?
>>691737
#121 #691737
>>691730
Дело не в постах, а в том что люди которые их писали не осилили шаблоны. Без них не в плюсах, ни в расте нормально редактировать обобщённые функции/прототипировать что-то то ещё удовольствие.
Эксепшенов в руст низавизли((
>>691755>>691835
#122 #691755
>>691737

>Эксепшенов в руст низавизли((


Ну как в go, только без мерзких кортежей, а со вполне ясным Result
#123 #691835
>>691737

> Эксепшенов в руст низавизли((


Как будто что-то плохое. Пердолится с отловом эксепшенов в мультипоточном коде не очень приятное занятие.
Пагни вообще охуенно сделали. Если дерьмо случилось, но не критично и вполне планово - return Err("Не получилось"). А если критичная ошибка, то panic!("НАЧАЛЬНИК ТУТ ПОТОК РАСПИДОРАСИЛО")
>>691837
#124 #691837
>>691835

> ПердолитЬся (что делать?)


Самопочин
#125 #697271
Тут растономикон перевели, вдруг кому пригодиться.
https://github.com/ruRust/rustonomicon
>>697484
#126 #697353

>I lead the TypeScript team from its initial release to its use in major frameworks. I also helped design parts of Clang/LLVM, Chapel, and ChaiScript.


Jonathan Turner joins Mozilla's Rust team
https://internals.rust-lang.org/t/announcement-jonathan-turner-joins-mozillas-rust-team/3278
5 Кб, 260x193
#127 #697484
>>697271
Насколько я понял, проблемы с памятью у Rust из-за того, что mem::forget не помечен как unsafe? Ну допустим похуй на unsafe. Почему деструктор то не вызвать?
Чтобы была возможность стрелять в ногу, очевидно же!
>>697524>>697564
#128 #697524
>>697484

> Почему деструктор то не вызвать?


Потому, что он нужен именно для того, чтобы не вызывать деструктор.
#129 #697564
>>697484
Он не помечен, потому что, а хуй его знает почему. На самом дело много дискуссий на эту тему, но в итоге пришло к тому что вызов деструктора в расте не гарантирован, а утечки памяти не нарушают memory safety. И что можно воспроизвести поведение mem:forget и без него, не использую при этом unsafe.
>>698530
#130 #697565
Вот, даже нашел https://github.com/rust-lang/rust/issues/24456
Как раз из за этого говна scoped треды из std вырезали.
>>697615
#131 #697566
Ну, собственно, это цикличная ссылка в Rс.
Создаешь Rc, счетчик внутри равен 1. Делаешь клон Rc, счетчик становится равным 2. Кладешь клон Rc в себя же.
При выходе из скопа в первоначальном Rc уменьшается счетчик и становится равным 1. Проверяется, что счетчик не 0 и деструктор не вызывается. В итоге содержимое навсегда зависает в памяти.
>>697629>>697636
#132 #697615
>>697565
НЕ ОСИЛИЛ
@
ВЫПИЛИВАЙ ФИЧУ
>>697704
#133 #697629
>>697566
Мне кажется это уже особенность самих указателей с счетчиком. В C++ вместе с shared_ptr завезли weak_ptr, чтобы циклы разбивать.
Хватит терпеть циклы! Даешь УМНЫЕ умные указатели!
>>697636>>697704
#134 #697636
>>697629
>>697566
Ну так тут тоже weak и strong есть. Или они чем-то различаются от c++'ных?
>>697641
#135 #697641
>>697636
Weak есть в Rust. У них поведение с плючами идентичное. Rc +1 при клонировании делает, а Weak не учитывается в счетчике.

Я к тому, что

> 2016


> AI подебил в го


> утечка памяти из-за циклических ссылок


Ничего круче счетчиков пока не придумали?
#136 #697704
>>697615
>>697629
Ну так все как в С++, проблема в том что утечка памяти не так страшно, но если forget'нуть scoped тред, то это приведет к дедлоку в главном треде. Поэтому выпилили не Rc, а scoped треды, а forget сделали safe.
Но никто не мешает эти же scoped треды с crates.io забрать и пользоваться аккуратно.
>>698155
96 Кб, 1280x875
#137 #698155
>>697704
Имхо, помечать forget как safe это идиотское решение. Как минимум из-за RAII. Память, файлы, сокеты, все завязано на этот механизм. И тут на тебе возможность наебать систему.
#138 #698175
>>698165
Ну сборщик мусора это уже что-то тяжелое. Я имел ввиду додумались ли бородатые дядки до какого нибудь другого умного указателя.
Да и сборщик мусора тоже подвержен циклическим ссылкам. Питон до сих пор вроде (http://stackoverflow.com/questions/8025888/does-python-gc-deal-with-reference-cycles-like-this) не может разрубить цикл.
#139 #698185
>>698176
Он будет медленнее когда у тебя много долгоживущих объектов. Когда куча маложивущих - подсчёт ссылок разорвёт память как полотно и целостность памяти пойдёт по пизде, тут gc выиграет и неоднократно.
>>698188>>698190
#140 #698188
>>698185

>Когда куча маложивущих


Происходит куча stop-the-world'ов, не? По крайней мере в джаве используют приватную ансейф фичу что бы избавлятся от кучи побочных объектов.
>>698235
#141 #698190
>>698185

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


Поясни за фрагментацию. Я сам использовал только языки со сборкой мусора, и не очень понимаю в чем фишка.
Вот например память, со структурой A. (sizeof(A) == 3)
[A|A|A| | | | |]
Добавляем 2 структуры B (sizeof(B) == 2)
[A|A|A|B|B|B|B| ]
Удаляем первую структуру B
[A|A|A| | |B|B| ]
Дефрагментация ?
Вроде и память есть, но структуру А уже не добавить.
Как такую хуйню обрабатывать? Когда заморачиваться о такой хуйне?
#142 #698235
>>698188
А теперь представь что из одного источника stop the world у тебя их столько, сколько элементов в массиве.
>>698400
#143 #698400
>>698235
Тогда почему языки без сборки такие быстрее языков со сборкой? Тем более наверняка удаление того же массива не по одному элементу, а раз по блоку памяти.
>>698490
#144 #698490
>>698400
Потому что перечитай ветку сообщений, вася. Есть конкретная ситуация где гц быстрее подсчёта ссылок – и всё, я не писал что это манна небесная.
9 Кб, 184x184
#145 #698530

> https://doc.rust-lang.org/std/rc/


> Destruction is deterministic, and will occur as soon as the last owner is gone.


>>697564

> На самом дело много дискуссий на эту тему, но в итоге пришло к тому что вызов деструктора в расте не гарантирован


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


Разрабы раста ловко себя обоссали.
>>698899
#146 #698899
>>698530

> as soon as the last owner is gone


Ну так всё верно. Просто the last owner не может быть gone, если Rc владеет сам собой.
#147 #701634
Есть Iron юзающие тут?
Есть вопрос по составлению View. Я сам избалованный MVC-ребенок, и мне интересно как вы решили проблему генерации View. Суть такова, что есть SPA, который возвращается при заходе юзера на домашнюю страницу, и API, который дергается из SPA/другого клиента. Нужен какой-то темплейт движок, который это добро рендерить будет. Какие middleware лучше подключить?
У меня ощущение, что либы еще достаточно сыроваты для сириуз бизнеса. Постоянно что-то недоделано, кривовато
>>701866
#148 #701866
>>701634
1) Да, как и сам раст находящийся в разработке до сих пор.
2) Для сириус бизнеса в принципе-то юзать можно, только явно не для веб девелопмента. Какой гибудь плагин для nginx написать подойдёт идеально, делать на нём весь бэкэнд – пустодроч.
>>703271
#149 #703271
>>701866
Я думаю, переписать уже готовый бэкэнд на раст довольно тривиально. А вот с нуля писать это пока что такое себе. Тем более при нахождении всех вэб либ в глубокой преальфе.
>>703325
#150 #703325
>>703271
Если сравнивать со скриптовыми и управляемыми языками доминирующими в этой области - нихуя не тривиально переписать это всё, а потом ещё искать того кто всё это говно поддерживать будет.

Чо сразу на C++ то не переписать сайт-то? Там с поддержкой и преальфой библиотек проблем нет, лол.
#151 #708262
Обновил Racer и он прямо раз в 10 быстрее стал (прошлый раз собирал в Январе). Но размер всё ещё огорчает. Он стал меньше на 400 кб но 30.9 мб это всё равно как-то не очень. Хотя я не обновлял сам раст, может так-то меньше.
>>708335>>709572
#152 #708335
>>708262
Ещё бы он хотя бы начал нормально видеть импотры с макросами - цены бы ему не было.
#153 #709572
>>708262

>30.9 мб это всё равно как-то не очень


Терабайты на харде копейки же стоят, не?
#154 #709630
Там у них так не бомбит, что регулярно пишут мантры на эту тему.
http://huonw.github.io/blog/2016/04/memory-leaks-are-memory-safe/
>>726412
#155 #711409
Есть какой-нибудь достаточно простой способ получить рандомное значение из enum?
>>711467
#157 #711496
>>711467
Спасибо. Хотя хотелось бы чего-нибудь покрасивее, такую хунту я могу и в крестах делать, хотя даже там enum class ввели ради безопасности.
59 Кб, 900x600
#158 #711546
>>639238 (OP)
Недавно начал упарываться по расту. Пока всё нравится. Но интересует один вопрос. Можно ли в расте создавать треды (процессы) подобные эрланговским? Чтоб можно было несколько тысяч запустить и обмениваться сообщениями с ними. Я так понимаю что если обычные треды создавать в таком количестве, то операционка может вмешаться и прикрыть это дело, или я ошибаюсь?
>>711943
#159 #711943
>>711546
Приветствую.
http://devdocs.io/rust/
Рекомендую в закладки добавить, если ещё не сделал. Там можно закачать всё и хранить автономно в браузере.
По твоему вопросу. Обмен между потоками можно осуществлять через вот это:
http://devdocs.io/rust/std/sync/mpsc/index
Помимо этого, в crates можно найти и иные решения по каналам и потокам.
Стандартно на данный момент нормальных легковесных не предусмотрено.
Изначально назначение языка как раз и было
>>711945
#160 #711945
>>711943
Ой, не дописал.
Изначально назначение языка как раз и было на эту тему, само название Rust идёт откуда-то там из биологии и связано с данной темой.
Но пока приходится ограничиваться системными потоками.
>>712086>>712241
#161 #712086
>>711945
Говоришь так будто сожалеешь, если бы грин треды оставили как часть языка, то у нас был бы совсем другой ненужный rust. А так мы получили такую-то няшку, к тому же почти ничто не мешает запилить рантайм для грин тредов, просто никто еще этого не сделал.
https://github.com/rust-lang/rfcs/blob/0806be4f282144cfcd55b1d20284b43f87cbe1c6/text/0230-remove-runtime.md
66 Кб, 436x500
#162 #712241
>>711945

> само название Rust идёт откуда-то там из биологии


От ржавчинных грибов же.
>>712251
#163 #712251
>>712241
А что в этих грибах связанного с тредами?
>>712256>>713453
#164 #712256
>>712251
Они нативные.
>>713451>>713555
#165 #713451
>>712256
Но в расте были не нативные треды.
#166 #713453
>>712251
Надёжность и распределённость.
>>713555
#167 #713555
>>712256
>>713453
Сук, трллте мня?
>>713561
#168 #713561
>>713555
Сасай))
#169 #716753
Где можно почитать release notes новой версии раста?
>>716834
#170 #716834
>>716849>>716855
#171 #716849
>>716834
Я так понял что в основном косметические улучшения пошли.

> cargo init can be used to start a Cargo project in your current working directory, rather than making a new subdirectory like cargo new.


Вот это заебись.
#172 #716855
#173 #718207
Мне вот интересно, когда они через 4 месяца дойдут до 2.0, то точно так же выпустят обещанный апдейт без нихуя, кроме пары замороженных апи?
>>718209
#174 #718209
>>718207
1.10 же, не?
>>718211
#175 #718211
>>718209
А сразу использовать нормальную версионировку, а не издеваться над системой счисления.
>>718307
#176 #718307
>>718211
Ну так они и используют. В каждой версии ведь что-то добавлено кроме багфиксов.
Всё по semantic versioning.
>>718314
#177 #718314
>>718307
Хз что за семантическое версионирование, но для моего парсера в мозгу цифры 1.1 и 1.10 идентичны (как и 1.10000 и тд).

Кроме багфиксов ещё баг/фича-фиксы в языке.
>>718828
#178 #718374
>>639238 (OP)
Наверное очень популярные вопрос среди тех кто знакомится с растом. Поясните за параметры времени жизни.
Вот пример:
struct Customer<'a> {
car: Option<&'a Car>
}

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


Почему компилятор не может сам автоматом подставить эти параметры? Все примеры, что я видел - какие-то слишком очевидные, более того, я когда писал свой небольшой код - нигде не ставил параметры, и компилятор ругался "ставь их", и я просто наставил везде и прога скомпилилась и работала верно. Почему компилятор не может за меня это делать? Я подозреваю что есть какие-то более неочевидные случаи использования параметров времени жизни. Может приведет кто пример?
>>718830>>718838
Превозмагая трудности #179 #718627
Ньюфаг вкатывается в тред,
Есть С-функция которая возвращает "%звездочка%const c_char" который нужно преобразовать в строку, как проверить возвращаемое значения на null pointer?

Вот что намудрил: https://ideone.com/FnH1jn
Пример 1: Крашится если c_function возвращает указатеть на null или возвращает корректное значение.
Пример 2: При null указателе возващает дефолтное значение "is_null_value" иначе всегда пустая стока.
>>718727
#180 #718727
>>718627
Растономикон читал?
>>718739
#181 #718739
>>718727
Только rust book осилять начал.
>>718785
#182 #718785
>>718739
Тогда пока не лезь в unsafe и ffi. Как прочитаешь rustbook и разберешься с основами, можно начинать читать rustonomikon, там как раз то что тебе нужно, более глубокое погружение в язык и небезопасные возможности, без которого нормальную связь с библиотеками на других языках не осилишь.
https://doc.rust-lang.org/nightly/nomicon/
https://github.com/ruRust/rustonomicon
#183 #718828
>>718314
Наркоман? Током ебнуть?
Версия это не вещественное число.
1.10 != 1.1

И как твой мозг представит 0.21.3 ?
#185 #718838
>>718374

> Почему компилятор не может сам автоматом подставить эти параметры?


Может он еще за тебя код писать будет, и проектировать модели?
'a - это гарантия того, что ссылка на Car будет жить столько, сколько Customer. Это ты и указываешь, расставляя 'a в своем коде.

Как тут например расставить параметры?

struct Customer {
car: Option<& Car>,
hui: Option<& Hui>,
pizda: Option<& Pizda>
}

Ну поставит например компилятор

struct Customer<'a> {
car: Option<&'a Car>,
hui: Option<&'a Hui>,
pizda: Option<&'a Pizda>
}

А по моей модели нужно

struct Customer<'a, 'b> {
car: Option<&'static Car>,
hui: Option<&'a Hui>,
pizda: Option<&'b Pizda>
}
#185 #718838
>>718374

> Почему компилятор не может сам автоматом подставить эти параметры?


Может он еще за тебя код писать будет, и проектировать модели?
'a - это гарантия того, что ссылка на Car будет жить столько, сколько Customer. Это ты и указываешь, расставляя 'a в своем коде.

Как тут например расставить параметры?

struct Customer {
car: Option<& Car>,
hui: Option<& Hui>,
pizda: Option<& Pizda>
}

Ну поставит например компилятор

struct Customer<'a> {
car: Option<&'a Car>,
hui: Option<&'a Hui>,
pizda: Option<&'a Pizda>
}

А по моей модели нужно

struct Customer<'a, 'b> {
car: Option<&'static Car>,
hui: Option<&'a Hui>,
pizda: Option<&'b Pizda>
}
>>814540
#186 #718981
В чем ваши хваленые zero-cost заключаются, если для того чтоб что-то в куче создать, надо Box::new(x) делать, причем x - вначале появится на стеке, а потом будет в кучу перемещен?
Придется свой какой-то велосипед с использованием unsafe использовать, как это сделано в реализации Vec, иначе бы мы охуели создавать в стеке вектора по миллиону элементов и потом копировать в кучу их часами. Но если всё заканчивается unsafe, то нахуя нужен раст?
>>718982>>719021
#187 #718982
>>718981
или наслаждаться переполнением стека
#188 #719021
>>718981
zero-cost по мнению разрабов это "минимальная стоимость".
https://doc.rust-lang.org/book/ownership.html

> Rust has a focus on safety and speed. It accomplishes these goals through many ‘zero-cost abstractions’, which means that in Rust, abstractions cost as little as possible in order to make them work.



Для Box новый синтаксис пилится. Пацаны что-то не поделили с Box, Rc и Cell, и в итоге решили использовать Box::new, пока все не уляжется, и api библиотеки не стабилизируется.
https://github.com/rust-lang/rust/issues/28008
>>719023>>719223
#189 #719023
#190 #719223
>>719021
То есть box однажды появится в стейбл версии.
А в чем конкретно проблема? Что не поделили они там? Такое ощущение что проблемы на стороне LLVM.
>>719431
#191 #719431
>>719223
Там довольно много чего не устоялось.
Вот tracking issue: https://github.com/rust-lang/rust/issues/22181
#192 #721551
Какая альтернатива синглтону в расте? Как я понял реализовать то его можно, но это не идеамотично. Таскать контекст по функциям?
>>722111
#193 #722111
>>721551
Та же что и в других языках, например, dependency injection, service locator.
#194 #722502
Аноны, есть что-нибудь по Rust на великом и могучем? Ангельский знаю не очень хорошо, поэтому хотелось бы для начала почитать на русском, чтобы понять основные концепции так сказать, а потом и за приведённые в шапке книги взяться можно будет
>>722540
#195 #722540
#196 #722620
Изучаю rust уже пару недель, но так и не могу понять почему внутри скопа матча, х = с, документацию читал, но въехать не могу, объясните на пальцах, почему так получается?

код:
let x = 1;
let c = 'c';

match c {
x => println!("x: {} c: {}", x, c),
}

println!("x: {}", x);


вывод:
x: c c: c
x: 1
>>722636>>722772
#197 #722636
>>722620
Текущий скоуп перекрывает имена родительских скоупов. в данном слуае в матче у тебя x => .. этот икс перекрывает тот икс что let x = 1;
>>722643
#198 #722643
>>722636
это понятно, но откуда у x значение с, где оно присваивается? Ведь если через оператор => присваивается вывод println то в x будет совсем не c
>>722716>>722755
#199 #722716
>>722643
Потому что паттерн матчинг так работает. У тебя в паттерне переменная, что говорит компилятору "возьми то, что я там пытаюсь заматчить и сделай так, чтобы оно называлось именем этой переменной".
#200 #722755
>>722643
Извини анончик, писал пост про то как мы с тобой няшимся под пледиком и я рассказываю тебе про раст на примере розовых единорогов и бабочек, но отключилось электричество и все пропало. Так что коротко и зло, к тому же тебе уже ответили.
Ты читать что ли не умеешь?
In other words, x => matches the pattern and introduces a new binding named x. This new binding is in scope for the match arm and takes on the value of c. Notice that the value of x outside the scope of the match has no bearing on the value of x within it. Because we already have a binding named x, this new x shadows it.

Здесь у тебя нет сравненния, так как х затерла объявление твоей переменной, но эта новая х не инициализирована, следовательно здесь нечего сравнивать и раст закономерно решает что ты просто используешь патерн для связывания, что-то наподобие `x @ любое возможное значение` (так как в матче у тебя только одна рука). Поэтому у тебя просто создается биндинг (связывание) к значению c.
Это то же самое что и https://goo.gl/QpMHc3
Или чтобы тебе было еще понятнее это немного похоже на https://goo.gl/3LifL8 хоть и не совсем то.
Короче, перечитай еще раз главу про паттерн матчинг.
>>722764
#201 #722764
>>722755

> Короче, перечитай еще раз главу про паттерн матчинг.



Спасибо, походу и правда надо еще читать дальше растбук, всеровно еще есть не до конца понимание
75 Кб, 736x490
#202 #722772
>>722620
В конкретно твоем примере match не имеет смысла.
Фактически его можно представить вот в таком варианте:
https://play.rust-lang.org/?gist=f18337e68bfd66eedbeb0cbf740a28e9&version=nightly&backtrace=0
Т.е. эти две x - разные переменные в разных скопах. Если тебе надо это избежать, используй разные имена.
Твой пример имел бы смысл, если бы ты, например, сделал несколько вариаций:
https://play.rust-lang.org/?gist=df4400b0fdcd09b35fe7792a6713bc0a&version=nightly&backtrace=0
А, вообще, паттерн-мэтчинг и деструкторы - классные штуки. Не зря на них много внимания в мануалах сосредоточено.
С ними можно много чего делать.
https://play.rust-lang.org/?gist=1305382e6a7484d1b2b7ce37dd1785a5&version=nightly&backtrace=0
#203 #724009
Когда книга уже выйдет где более подробно будет всё рассказано чем в the book?
>>724017
#204 #724017
>>724009
Rustonomicon где-то переводили, там все узкие места и всё про ансейф облизано 10 раз.
>>726133
#205 #726133
>>724017
Думаю он не это имел ввиду.
#206 #726412
#207 #726852
CoLaboratory: Rust - конференция о Rust в Москве
https://rustycrate.ru/новости/2016/04/25/colaboratory-rust.html
#208 #729519
http://blog.rust-lang.org/2016/04/19/MIR.html
Мир, короче, всем.
>>729696>>730442
#209 #729696
>>729519
Тоже видел это. Прямо семимильными шагами к светлому будущему движемся.
#210 #730442
>>729519
А я уж думал каноникал решили мир на расте переписать, ну вот.
#211 #730469
>>676017
http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=fasta
Всем привет от колобка, ЛАЛки!
#213 #734923
>>733887
Ты даже документацию по функции с которой у тебя возникла проблема не в силах прочитать?
https://doc.rust-lang.org/std/mem/fn.drop.html

>While this does call the argument's implementation of Drop, it will not release any borrows, as borrows are based on lexical scope.

>>736323>>736845
#214 #736323
>>734923
Да уже потом понял, что тупанул.
60 Кб, 409x428
#215 #736845
>>734923
Тут даже вопрос не в функции, а по механизму заимствования.
Потому что drop пустая и я от неё ничего не ожидал больше, чем от какой-либо другой функции.
pub fn drop<T>(_x: T) { }
А вот то что заимствования не освобождаются при передаче в функцию - в этом я ступил. Обычно же его передаешь как-нибудь так:
https://play.rust-lang.org/?gist=335ae238f07ac3d8c94c5d8399eba014&version=stable&backtrace=0
И не задумываешься об этом.
Спасибо за наводку.
#216 #738694
>>652293

>Очень далеко, ничего интересней простеньких демок не завезли.


нихуя себе простенькая демка, 500fps при анимации сотни дивов с тенью https://youtu.be/erfnCaeLxSI?t=125
>>739246>>739579
#217 #739246
>>738694
Когда двачик нормально рендерить сможет?
>>739574>>740448
#218 #739574
>>739246
У них текущая цель - чтобы 5 сайтов конкретных более-менее отображалось.
#219 #739579
>>738694
Наверно потому, что он на гпу всё рендерит?

Я посмотрю как его на телефоны/ноутбуки будут проталкивать, это ведь дикий ++ по энергопотреблению.
>>739643>>739843
#220 #739643
>>739579
Еще кто-то рендерит не на гпу?
#221 #739843
>>739579
Все на гпу рендерят. Просто гекко и вебкит не настолько "глубоко" это делают.
#222 #740113
Котаны, быдло-эмбеддер в треде.
Появился интерес к изучению сабжа, вот только есть небольшой анальный зуд на многие термины типа "лямбда-функции", "hashmap" и прочее.
Где лучше всего читнуть про это, чтобы вкатываться в язык уже подготовленным?
#223 #740115
>>740113
Нигде не читай заранее, в любом учебнике всё описывается подробно, там ничего сложного нет.

Ну или можешь гуглить аналоги на няшной (или какой у тебя там основной язык), я так часто делаю когда не понимаю сати какого нибудь паттерна.
>>740118>>740133
#224 #740116
228 пост ИТТ.
#225 #740118
>>740115

>сати


Сути.
#226 #740133
>>740115
Так может паттерны и читнуть разом? В планах тоже было.
>>740146
#227 #740146
>>740133
Если планируешь явамакакой работать – читай. Я ирл вне явы сталкивался только с визитором и синглтоном, сомнительная польза от их знания.
>>740172
#228 #740172
>>740146
Чтобы знать, какое говно мне пригодится, а какое - нет, надо хотя бы минимально в них разбираться.
А то как начал читать тред или смотреть описания языка, так натыкаюсь на всякое абстрактное говно, которое не знаю.
Меня просто интересует альтернатива С, да и в целом развиваться надо. Всякие ООП и прочее в моей области редко нужны.
#229 #740448
#230 #740462
#231 #740519
>>740113
Наверное книги по сипп читать лучше. Там полно инфы на русском. А в доках Раста все на английском. Алсо вот про эмбедед https://zinc.rs
>>740526
#232 #740526
>>740519
Ангельский для меня - не ограничение, иначе хуевый бы из меня был эмбеддер, в смысле ещё хуевее, чем сейчас.
Читну, спасибо.
#233 #740762
Может кто в курсе, как собрать приложение без привязки к терминалу под виндой? Создаю окошко с помощью glutin, но при запуске кроме него открывается и терминал.
>>740863>>741071
#235 #741071
>>740762
Просто пропатч бинарник после компиляции. Там один байт всего поменять, по-моему.
#236 #744537
поясните про биндиги к си коду. я вот хотел embed базу данных использовать, типа sqlite, но нихуя не понял, мне что нужно отдельно си код ктмпилить? или ставить в окружение что-то?
>>744545
#237 #744545
>>744537
Бляяять. Ты из скриптопараши/явадотнетов вкатываешься чтоле?

Если у тебя нет бинарника – да, тебе в любом случае придётся его собирать отдельно.
А потом нужно просто импортировать экспортируемые бинарником функции, как в экземпле, всё.
>>744589
#238 #744589
>>744545
лол, канешн самые компилируемые языки были у меня это typescript и coffeescript. я прост не понял почему у меня flate2 скомпилилось само, хотя там тоже код на си. как различать биндинги на внешний код от биндингов на си код который идёт в комплекте?
>>744600
#239 #744600
>>744589

>я прост не понял


В таких случаях нужно ковырятся в проекте.
https://github.com/alexcrichton/flate2-rs/blob/master/miniz-sys/build.rs#L6
Вот так хитро он сам компилирует свои сишные зависимости.

> как различать биндинги на внешний код от биндингов на си код который идёт в комплекте?


Биндинги - просто объявления функций обрамлённые в extern. Раст не си/плюсы, и тут неимпортируемый код всегда пишется там же где объявляется.
#240 #744977
А что-нибудь известно про box синтаксис? Я его сейчас много использую, но он нестабилен, Вдруг закроют?
>>745349
#241 #745349
>>744977
усмысле? Box::new(hueta) - обёртка которая сразу кладёт в кучу?
>>745884
#242 #745355
А что там с гуем, посоны? Что-нибудь новенькое появилось? Или всё так же старый-добрый пердолинг с Сишними апями через unsafe и самописные костыли? QML-биндинги расто-сообщество так и ниасилило портировать (а ведь они есть и с сишными апи)?

А как там интеграция с C++? Шаблоны с енумами вызвать из раста без ручного unsafe байтоёбства (который сломается после первого обновления шланга) хоть как-то можно?

А то сейчас пишу на F#+WPF, а хочется попробовать что-нибудь функциональненькое и одновременно скоростное (и с няшным гуем). Но видимо расту ещё до этого срать и срать.
>>745380>>745398
#244 #745398
>>745355

>Шаблоны с енумами


Ааа блять, не пиши хуйни. Шаблоны с енумами остаются в компайлтайме, разница в манглинге у разных компиляторов и тд – это говнище не стандартизировано, и его никогда не получится импортировать никуда нормально. Даже в D их интерфейсить не получилось (это такие рефакторнутые плюсы, если чо).

>Но видимо


Но видимо ты плохо понимаешь зачем нужен раст. Пишешь гуй – используй высокоуровенный язык. Не еби мозги себе и окружающим.
>>745408>>745410
#245 #745408
>>745380

> https://crates.io/crates/qmlrs


Неполноценное альфа-дерьмецо. https://github.com/cyndis/qmlrs/issues/43

> https://crates.io/search?q=gtk


А вот это уже лучше. Надо будет глянуть.
>>745398

> Ааа блять, не пиши хуйни.


Что не пиши? Раст без дикий костылей вообще половину шаблонов С++ не осиливает (хотя учитывая, что эти сами шаблоны и есть костыли, то всё нормально). Или C++ библиотеки нинужны?

> Но видимо ты плохо понимаешь зачем нужен раст.


Для чего же? Хоть ORM или аналог LINQ завезли? Или базы данных тоже нинужны, а нормальные посоны ебашат чистым SQL?
>>745525>>745540
#246 #745410
>>745398
Нахуя это ваше говно нужно?
Поясни уж.
45 Кб, 353x609
#247 #745525
>>745408

> Хоть ORM или аналог LINQ завезли?



https://www.rust-lang.org/

> Rust is a systems programming language


> ORM


> LINQ

>>745812>>745868
#248 #745540
>>745408

>Раст без дикий костылей вообще половину шаблонов С++ не осиливает


Повторюсь: ты не понимаешь как эти шаблоны в крестах работают и, видимо, не умеешь читать.

>Или C++ библиотеки нинужны?


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

>Или базы данных тоже нинужны


Бери высокоуровенный язык и ебашь гуи с крудами на нём. На расте ни ORM, ни LINQ адекватных аналогов нету и не будет. А ещё memory-safety модель языка будет тебе только мешать писать подобные вещи.
>>745798
#249 #745542
Ахуеваю конешн от туповатости хипсторов. Боженьки из мса им дали язык, с неебической платформой для гуя из коробки, ради него же добавили в язык асинхронность и даже специальную версию сборщика мусора. Им дали линк для быстрого шлёпанья крудов. Им дали мл на дотнете, назвав фшарпом – они всё равно ползут в мир низкоуровенного программирования и спрашивают чо там по гую.
>>745809
#251 #745798
>>745540

> Бери высокоуровенный язык и ебашь гуи с крудами на нём.


Т.е. раст вообще ни для чего нинужен? Зачем тогда эти дибилы с мозилы делают на нём браузер?

> А ещё memory-safety модель языка будет тебе только мешать писать подобные вещи.


Что-то уровня: А ещё type-safety будет тебе только мешать писать подобные вещи. от любителей javascripta и прочего подобного дерьмеца.
>>745820
#252 #745809
>>745542

> неебической платформой для гуя из коробки


В .NET Core, кстати, весь гуй уже выкинули (для кроссплатформенности). А что там будет с .NET Framework не совсем понятно. Может от него вообще откажутся (а может наоборот откажутся от кора). WPF (а уж тем более формочки) уже сейчас считается устаревшим, да и работает только на винде. Предлагаешь гуй на html+css лепить и таскать с собой вебкит для рендеринга?
#253 #745812
>>745525

> ORM


ORM даже на плюсах есть. Хотя с кем я разговариваю. Тебе же ничего нинужно кроме байтоёбства.
>>745834
#254 #745820
>>745798

> нет гуи с крудами


> раст вообще ни для чего нинужен


Ты тредом ошибся, маня.

> Зачем тогда эти дибилы с мозилы делают на нём браузер


И конечно, мозилы будут писать нотариально заверенные письма о своих намерениях дауненку с двощей, который
1) не может погуглить
2) не может скачать IRC клиент, зайти на канал разрабов раста и спросить.
Но давай ты сейчас попробуешь включить мыслительный нерв и порассуждать:
У мозилы возникли некоторые проблемы с C++ в фуррифоксе ->
нет нормальной замены C++ с решением существующих проблем ->
решили создать новый язык для решения существующих проблем.

> Что-то уровня: А ещё type-safety будет тебе только мешать писать подобные вещи. от любителей javascripta и прочего подобного дерьмеца.


Теперь точно можешь пиздовать отседова, так как сразу видно что с borrow-checker ты не сталкивался.
>>745836>>745848
#255 #745834
>>745812

> impying ORM на C++ такая уж важная вещь


Хотя крудошлепу вроде тебя это очень важно.

Если бы не был таким долбоебом, то мог бы уже найти http://www.arewewebyet.org/topics/database/ где ясно что ORM так то разрабатываются, но еще сырые.

Так что соглашусь с аноном выше.

> Но видимо ты плохо понимаешь зачем нужен раст.

#256 #745836
>>745820
Ой-ёй, кокой ты злобный. С твоих слов раст это вообще какой-то волшебный язык, всё чего нет - абсолютно нинужно. Во как. Фанбойство? Или магия языка программирования?

> Теперь точно можешь пиздовать отседова, так как сразу видно что с borrow-checker ты не сталкивался.


Ой всё. Видимо ты сам туповат, если borrow-checker для тебя вызвало хоть какие-то проблемы, хотя в интернете всё это по 200 раз разжёвывается для самых тупых (вроде тебя). А на расте я писал ещё с бета-версии. И вижу, что пока кроме улучшенного высокопроизводительного байтоёбства в нём ничего и нет. Хотя нет, вот хоть асинхронный HTTP-сервер завезли[1] (13 часов назад, гы-гы-гы), прогресс на лицо. Хотя ты даже что такое асинхронный HTTP-север не знаешь. И день назад бы утверждал, что он абсолютно не нужен в таком языка программирования как раст.

[1]: https://github.com/hyperium/hyper/pull/778
>>745844
#257 #745844
>>745836

> С твоих слов раст это вообще какой-то волшебный язык, всё чего нет - абсолютно нинужно.


Наркоман?
Я говорю что раст в первую очередь создан мозилами для своих проектов. Все остальное пилится силами сообщества.

> Видимо ты сам туповат, если borrow-checker для тебя вызвало хоть какие-то проблемы,


А теперь ты кидаешь ссылку со своей реализацией LINQ или хотябы ORM.

> А на расте я писал ещё с бета-версии...


> мам мам сматри я олдфак тралю нюфагов

>>745851
60 Кб, 551x551
#258 #745848
>>745820

>У мозилы возникли некоторые проблемы с C++ в фуррифоксе


Заебись оправдание неосиляторству.
>>745854>>745856
#259 #745851
>>745844

> А теперь ты кидаешь ссылку со своей реализацией LINQ или хотябы ORM.


Но зачем? Это мне для домашних проектиков нужно. А то у очень больно смотреть как даже после обработки ngen'ом .net-приложение порой тормозит. Но видно не судьба. Самому писать лень, очевидно же.
Хотя вот уже делаю биндинги поверх [1]. Правда вряд ли я этим поделюсь с сообществом, потому что вангую, что полученный код будет невероятно уродлив (а может и не будет).

> > мам мам сматри я олдфак тралю нюфагов


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

[1]: https://github.com/filcuc/DOtherSide
>>745858
#260 #745854
>>745848
Ну куда ж мозилле до анона с двощей. Вот он бы им все правильно сделол.
#261 #745856
>>745848

> Мозилла - единственная более-менее крупная компания, у которой хватило яиц навести порядок.

>>745859
39 Кб, 174x177
#262 #745858
>>745851
А теперь смотри:

> Хоть ORM или аналог LINQ завезли?


> memory-safety модель языка будет тебе только мешать писать подобные вещи.



> Что-то уровня: А ещё type-safety будет тебе только мешать писать подобные вещи


> сразу видно что с borrow-checker ты не сталкивался.



> ты говно - я Д`Артаньян


> покажи свой LINQ \ ORM



> Это мне для домашних проектиков нужно


> pic related



Ок. Ты победил.
>>745861
#263 #745859
>>745856
Тащем-та тот же гугл гораздо больше языков программирования создал, чем мозилла. Даже пытался няшный дарт протолкнуть, но веб-макаки отказались от ЯП, который имел слишком слабый запах говня, и остались верны старому доброму яваскрипту. Да и вообще сейчас любая более менее крупная ит-корпорация обязательно создаёт свою OS (на базе андроид), свой ЯП (самый-самый быстрый, обычно поверх JVM), свою бд (для верибиг-дата) и свой бев-фреймворк (который почти не тормозит). Просто раст выделяется из этого всего тем, что это системный язык.
#264 #745861
>>745858
А что на домашних проектах нужно обязательно страдать и байтоёбить? Даже немножко абстракций и сахарку низзя?
>>745868
#265 #745868
>>745861

> страдать и байтоёбить


Еще раз блять повторяю. >>745525
Почитай определение системного программирования.

Хочешь сахарку - ищи другой язык\платформу. Раст для тебя еще сырой.
>>745870
#266 #745870
>>745868
Системное программирование и сырой это разные вещи. Раст попросту сырой. Отсутствие некоторых фич к какому-то там волшебному системному программированию, которое видимо летает над языком и уничтожает все абстракции ещё до того как они появятся, не имеет никакого отношения.
>>745878
#267 #745878
>>745870
Раст не попросту сырой.
В стандартной поставке нет средств ORM и LINQ потому что rust - системный язык.
Дизайнерам было похуй на крудоблядков, потому что язык предназначен для другой аудитории.
Сырой он в плане того, что либы сырые, что очевидно.
Вот здесь и переплетаются две разные вещи, понять которые ты не способен.

> волшебному системному программированию... бла бла бла...


У тебя батхерт какой-то. Иди обмажься C#. Ах да

> А то у очень больно смотреть как даже после обработки ngen'ом .net-приложение порой тормозит


У мсье просто руки из жопы, что круды тормозят, вот он и изливает тут душу, что в другом языке нет нужных ему фич.
>>745888
#268 #745884
>>745349
имеется ввиду box zalupa, допустим деалем матч и паттерн Huita(box zalupa) => {...}, говорит о том что zalupa обернута в бокс. Очень удобно.
#269 #745888
>>745878

> В стандартной поставке нет


И не должно быть. Только это не из-за того что он системный.

> У тебя батхерт


У всех баттхёрт кроме тебя.

> У мсье просто руки из жопы


Прост ты никогда не работал с нетом. И да мне просто интересно было узнать как там у раста с гуем и базами данных, а в ответ только "кудах, нинужно, мозилла лучше знает, системный язык, а чего добился ты".
>>745905
39 Кб, 174x177
#270 #745905
>>745888

> Прост ты никогда не работал с нетом.


Обосрался, маня. 4 года на asp.net крудошлеплю. Был в стартапе со спагетти-кодом - ничего не тормозило. В студенчестве писал диплом решал систему дифуров - числодробилка слишком громкое название - ничего не тормозило.

> И не должно быть. Только это не из-за того что он системный.


Тогда вопрос

> Для чего же [нужен раст]? Хоть ORM или аналог LINQ завезли?


решен.

> У всех баттхёрт кроме тебя.


Нет ты.

> "кудах, нинужно, мозилла лучше знает, системный язык, а чего добился ты"


Пиздоглаз или жопочтец?

> Я говорю что раст в первую очередь создан мозилами для своих проектов. Все остальное пилится силами сообщества.



Хитрые маняврирования:

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


> Зачем тогда эти дибилы с мозилы делают на нём браузер


> pic related[1]

>>745916
#271 #745916
>>745905

> 4 года на asp.net крудошлеплю.


> мам мам сматри я олдфак тралю нюфагов



> Был в стартапе со спагетти-кодом - ничего не тормозило.


Очевидно, ты не писал десктопные приложения, сложнее, чем решалка системы диффуров.

> Тогда вопрос решен.


Действительно, мозилла и сообщество сказали нинужно, значит нинужно.

> Пиздоглаз или жопочтец?


> Приводит аргумент >мозилла лучше знает< из списка.


Да ты у нас сам тот ещё жопочтец. Попу хоть после проигрываний вытираешь?
>>745931
#272 #745931
>>745916

> Приводит аргумент >мозилла лучше знает< из списка.


> Я говорю что раст в первую очередь создан мозилами для своих проектов. Все остальное пилится силами сообщества.


Мозилла не юзает эти технологии. Коммюнити пилит либы. Где ты тут увидел "мозилла лучше знает"? Дерьмо с глаз убери, мудила.

> Попу хоть после проигрываний вытираешь?


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

> Очевидно, ты не писал десктопные приложения, сложнее, чем решалка системы диффуров.


Очевидно, ты не писал %everything else%. Хотя какая разница, сразу видно твои познания, если ты ноешь тут про недостаток ORM и LINQ в системном языке, и гонишь на мозиллу, которые этим языком решают свои проблемы.
>>745939>>759191
#273 #745939
>>745931

> системном языке


Ты так и будешь продолжать повторять эту мантру? У тебя кроме раста и ассемблера системные языки вообще есть? Или отсутствие библиотек это у нас теперь новый признак элитарной системности?
>>745950>>746020
#274 #745950
>>745939
Ты какой-то дурашка, серьёзно. Тебе 21 раз сказали что это системный язык (читай для хуйлоад сервисов, риалтайма и прочего) с крутой системой типов, который решает проблемы в своей области, и в крудошлёпстве, где чтобы напороться на решаемые языком проблемы нужно очень постараться он нахуй не нужен. Это не того уровня язык, чтобы шлёпнуть кнопочку, и в контролере прописать запрос к бд одной строчкой. В чём суть твоего истегания говном здеся?
другой анон
>>745952
#275 #745952
>>745950

> читай для хуйлоад сервисов, риалтайма и прочего


Давай на чистоту. Даже в этих областях он не используется (можешь привести один контр-пример из дропбокса, но ведь больше у тебя ничего и нет) из-за своей сырости. Он не системный в твоём понимании. Никто не запрещает писать на нём всё что захочешь. Он просто сырой.
>>745959>>746020
#276 #745959
>>745952
Его нигде не использую потому что нет библиотек, писать свою велосипеды вместо использования существующих никому не всралось представь себе, чего стоит перенести хотя бы один рендер любого ААА движка на него, который писался десятками лет на плюсах, в этом направлении - да, он очень сырой, у него даже IDE с базовой навигацией по коду нету. В отличии от Goвна порог вхождения выше => библиотеки появляются очень и очень неспешно.
280 Кб, 1012x755
#277 #745967
Stop right there, you bigots.
This place is supposed to be free of hate speech.
#278 #746020
>>745939

> системный язык


> мантра


Очень смешно. А вообще да, буду повторять. Могу даже ссылку на сайт раста https://www.rust-lang.org/ прикреплять и цитировать

> Rust is a systems programming language



> Или отсутствие библиотек это у нас теперь новый признак элитарной системности?


А вот тут я непонял. Где ты элитарность увидел? В языке нет сахара по твоему вкусу и готовых либ, и он уже для тебя элитарен?

>>745952
Давай на чистоту. Где ты видел использование С\С++ для крудов? Либ-то дохуя там.

> Никто не запрещает писать на нём всё что захочешь.


Но они ПРОСТО не подходят для этих задач. Ты просто обосрешься, пока реализуешь нормальный прототип, а потом придется перепиливать из-за изменяющихся требований, чтобы в итоге получить несопровождаемое дырявое говно с уязвимостями типа Heartbleed.
>>746025
#279 #746025
>>746020

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


Т.е. раст лучше вообще не использовать чтобы не получить уязвимости? Значит уже и сам раст нинужен? Вот это поворот.
#280 #746038
>>746025
Если у тебя мир заканчивается на крудах с гуем – да, нинужен.
>>746043
24 Кб, 512x512
sage #281 #746039
>>746025

>и сам раст нинужен

#282 #746043
>>746038
Но ведь в системных приложениях тоже изменяются требования и там тоже очень важна безопасность. Зачем там использовать такой небезопасный язык как раст?
>>746045>>746057
#283 #746045
>>746043
Чтобы ты мог смишно жиреть в итт трете)))
>>746052
#284 #746052
>>746045
Ну ладно. Странно конечно, даже сами фанаты раста говорят, что он не нужен. Первый раз такой вижу.
#285 #746057
>>746025
Ты контекст проебал, зеленый.

> С\С++ для крудов



>>746043

> небезопасный язык как раст


Ну это вообще пушка.
>>746061
#286 #746061
>>746057
Но ведь ты сам сказал, что раст небезопасен и лучше его не использовать. Причём тут контекст? Если вместо крудов я начну его использовать для системного программирования он волшебными образом станет безопасней и больше никаких уязвимостей написать на нём будет невозможно, я так понимаю? Это у нас определения "языка системного программирования" - язык, у которого магическим образом понижается безопасность если его не использовать для системного программирования. Интересно, а серво - это системное программирование? Мозилловцы знают, что рас у них слишком небезопасен и им лучше вместо браузера делать сразу операционную систему для её, безопасности, повышения?
>>746226
#287 #746226
>>746061
поехавший, уходи. у тебя паттерн "я не согласен, значит нужно найти до чего доебаться, ок, я буду брутфорсом перекручивать слова, а когда мне покажется что это достаточно ебанутая трактовка в отрыве от контекста - запощу в тред разбавляя знаками вопросов"

если начать пилить велосипеды на каждую хуйню - то будет овер 9000 дырявых велосипедов. а комьюнити ещё не запилило "каноничные" либы, которые дохуя людей смогут ревьюить и контрибьютить. поэтому да, язык молод, но причина что твой васянский код будет хуёвый не означает что язык хуёвый
>>746246
#288 #746246
>>746226
Умничка. Теперь ты сам видишь, что "системное программирование" тут совсем не причём. А если подумать ещё чуть-чуть, то можно прийти к выводу, что и для системного программирования его почти не используют из-за отсутствия тех самых библиотек.

А ещё, кстати, в расте нет наследования для структур, только для аналога нетовских интерфейсов под названием трейты, да и то в трейтах нет поддержки проперти. Видимо растокодеры (игнорируя кукарекания НИНУЖНО со стороны мозиллы) будут как в жавке писать методы getXXX() setXXX(... value). Из-за этого, кстати, в лоб биндинги для Qt и не напишешь. Хотя макросы, да, шикарны. Это вам не сишные дефайны, тут все серьёзно.
>>746278
#289 #746278
>>746246
я не тот анон с которым ты спорил, лол
из того что он "для системного программирования" выходит только то что у него нет жирного рантайма с GC и прочим оверхедом. т.е. на нём МОЖНО писать низкоуровневые штуки, которые обычно пишут на С/С++. больше ничего это не значит, на нём так же можно писать серверы с крудами и десктопы с гуями
#290 #749296
Ну что же вы, растаны. Какие рода проекты колотите на расте?
>>749303
#291 #749303
>>749296
я вот пилю ebaltvoymamku-rs
>>749379
84 Кб, 800x831
#292 #749379
>>749303
Attaboy
#293 #751121
Как в Расте заюзать СИшную либу?
#294 #751147
>>751121
https://doc.rust-lang.org/book/ffi.html
Но лучше найти готовые биндинги.
#295 #751335
>>751121
https://github.com/crabtw/rust-bindgen такая вот хрень еще имеется
#296 #751336
>>751121
https://crates.io/
Здесь поищи привязки, для большинства известных библиотек должно быть. Обычно у них к названию приписывается sys.
#297 #754902
1.9

> Controlled unwinding


> Compile time improvements


> Rolling out use of specialization


> Cargo can now be run concurrently.

>>755028
#298 #755028
>>754902
https://github.com/rust-lang/rust/blob/master/RELEASES.md

> Cool! :skull: to the ".to_string()" is slow memes!

31 Кб, 771x1004
#299 #755085
>>755086
#300 #755086
>>755085
Выглядит, как с++ моча.
консультант мимо проходил
>>755095
#301 #755095
>>755086
Я просто нуб, но расстроился когда дошел до этой главы. Для меня выглядит как обфускация простейшей функции. Пишут что это хороший стиль. Значит придется учиться такое читать
>>755097
#302 #755097
>>755095
Вроде ж сахарок с try/catch'ами в последних версиях уже добавили. Или ещё нет?
>>755099
#303 #755099
>>755097
Только RFC приняли.
>>755106
31 Кб, 686x744
#304 #755106
>>755099
Ну знак вопроса уже добавили в раст (с версии 1.9 вроде), а значит тот пример можно переписать гораздо няшнее.
>>755197
#305 #755197
>>755106

> I can guarantee you it will not. ? is still unstable, and since the release of 1.9 means that 1.10 is in beta, it will not be in 1.10.


> Well for one, there's a huuuuuge unresolved question: should it work for Option as well as Result? If we stabilized just the Result version, would we lock out the possibility of extending it in the future?


> Just in general, it is a huge, and widely debated new feature that only landed recently. It needs more time before we can consider stabilizing it. One of the longest-running and most-commented RFCs in Rust history deserves to not just be made stable as quickly as possible, but to take it slow and make sure we get it right.

>>755200>>755669
#306 #755200
>>755197
Ну это понятно. А пока пусть растовцы страдают.
#307 #755669
>>755197
Алсо, есть ещё макрос `try!`. Выглядит конечно не так красиво, но работает даже в релизной версии:
[CODE]
fn file_double<P: AsRef<Path>>(file_path: P) -> Result<i32, MyError> {
let mut contents = String::new();
try!(try!(File::open(file_path)).read_to_string(&mut contents));
let n: i32 = try!(contents.trim().parse());
Ok(n * 2)
}
[/CODE]
#308 #758066
Ебусь с нечеткими нейросетями. Нужно распараллелить один метод.

В чем суть - каждый `Мейкер` принимает на вход сырые данные и отдает обработанные. Причем имеется метод для объединения этих данных.
`Завод` дает каждому `Мейкер` одни и те же сырые данные и потом объединяет их и возвращает.

Вопрос знатокам - как можно распараллелить это дело? Язык вроде как нацелен на решение таких проблем?
>>758067>>758183
#310 #758183
>>758066
>>758067

> Язык вроде как нацелен на решение таких проблем?


Нуу, не совсем. В стандартной библиотеке есть только дубовые одноразовые треды, которые работают только со статическими переменными. Есть пара крейтов, но они вроде как не совсем стабильно. В общем как-то так: http://pastebin.com/gBcQsg9K
>>758233>>758949
#311 #758233
>>758183
Алсо, можно сделать так: http://pastebin.com/WgKY51bZ
Тут уже нет лишних мьютексов и Item::compose выполняется в главном треде. Да и выглядит красивее.
Да и выполняется чутка быстрее, только тут уже если Item::compose выполняется медленно, то потоки будут забивать память новыми make_result'ами если это важно.

test tests::bench_concurrent ... bench: 926,797 ns/iter (+/- 86,735)
test tests::bench_concurrent_new ... bench: 831,805 ns/iter (+/- 16,123)
>>758235>>758949
#312 #758235
>>758233

> http://pastebin.com/WgKY51bZ


Ой. Не ту ссылку дал. Вот правильная: http://pastebin.com/jThDrPDp
>>758949
113 Кб, 459x465
#313 #758949
>>758235
>>758233
>>758183
Спасибо анон. Ты охуеннен. Пойду дальше дрочить Rust.

Алсо, правильно ли я понял, что к выходу из замыкания в`pool.scoped` будет ожидание завершения дочерних тредов?

Где ты научился этой черной магии?
>>759029>>759030
#314 #759029
>>758949
Угу. Это особенность библиотеки такая. Потому второй вариант и неверен.

> Где ты научился этой черной магии?


Честно говоря, я просто сам заинтересовался и начал гуглить.
#315 #759030
>>758949
Алсо, во всех случаях если в дочернем процессе произойдёт ошибка (или в растовом понятии паника), то в обоих случаях произойдёт deadlock. Возможность глобально ловить panick'и добавили только в версии языка 1.9, но пока ещё ни одна библиотека её не использует. Так что избегай unwrap'ов если 100% не уверен в их корректности.
#316 #759191
>>745931

>Мозилла не юзает эти технологии.


Ебать ты конченый. В firefox'e уже переписали несколько компонентов на rust. Dropbox на него переписал тоже несколько компонентов своей инфраструктуры.
>>759276
#317 #759276
>>759191
Мозида спонсирует серво с растом напрямую, у дропбокса на расте облачное хранилище – скелет их инфраструктуры.
>>759352
67 Кб, 317x372
#318 #759352
>>759276

>https://news.ycombinator.com/item?id=11283685


>Actually, full disclosure, we really just rewrote a couple of components in Rust. Most of Magic Pocket (the distributed storage system) is still written in golang.



Что еще спизданешь?
#319 #767394
Не врубаюсь

> error: #[feature] may not be used on the stable release channel


Но я использую nightly. Что нужно добавить, чтобы нормально воспринимало как nightly?
>>767484
#320 #767484
>>767394
Разобрался. В какой-то либе была кастомная сборка и она собиралась не той версией раста.
#321 #767888
можно ли уже считать, что rust не выстрелил?
>>767969
392 Кб, 1400x1980
#322 #767969
>>767888
А ты много знаешь языков, которые "выстрелили" за короткий период времени?
inb4: swift; там анальный господин всё порешал.
Субъективно, по опросам stackoverflow, у раста есть как минимум большой потенциал в плане желающих им начать пользоваться. Но язык ещё дорабатывается. Доделают MIR, доделают оракл, rustup.
Больше всего вызывает опасение отсутствия привязки к C++. Если эту проблему не решат - это огромный минус будет. Отмазки типа "нинужно" звучат убого.
Года через 2 приходи - если к тому времени не выстрелит - тогда да.
>>768067>>768141
#323 #768067
>>767969
раст бы смог, если бы углубился в веб, понимая мейнстрим.
А переманить матерых сишников, которые пишут на сяшках по 20 лет, это верх идиотизма
>>768208
#324 #768141
>>767969
То есть сейчас нет смысла учить раст, вместо C\C++?
>>768208>>768337
#325 #768208
>>768067
Наверно в начале веб подразумевался, но из-за Go отказались.
Вот сишников пытаться перетянуть - маразм, да. Но они ориентируется на С++ разработчиков и умеренных функциональщиков, наверно.
>>768141
Одно другому не мешает. Если ты делаешь какие-то свои поделки, то почему бы его не сделать на каком-нибудь хипстерском языке?
А для работы - никому не нужно (это норма, рынок очень медленно реагирует на новые технологии). И тупо работать не с чем в данный момент. Есть либы какие-то на разные темы, есть попытка сделать веб-фреймворки, но пока ничего интересного. Iron явно умер, например.
>>768337>>768377
#326 #768337
>>768141
если для себя, то хоть ассемблер, если с охватом для работы, смотри вакансии, они решают.

>>768208

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

Я не сильно слежу за растом, но по-моему количество сторонников, которые смотрели в его сторону, ранее было больше? Чем они еще отпугнули сообщество? (меня, как уже понятно, вебом).
#327 #768377
>>768208
>>768337
Спасибо что пояснил, анон.
#328 #768594
Хуй знает чем Rust кому-то не угодил. Синтаксис-хуинтаксис, а такую охуенную весщь как cargo чет все упускают из виду.
1) Прописал зависимости в cargo.toml
2) $ cargo build
3) ??? (сборка проекта и зависимостей)
4) ЗКЩАШЕ
Сам перекатился с плюсов и не хочется уходить
>>768598
#329 #768598
>>768594

>Сам перекатился с плюсов


В этом и суть. Я тоже кончил когда первый раз увидел тот же dub в D (с абсолютно тем же функционалом), но менеджер зависимостей есть в любом современном яп.
#330 #768603
>>768337
Ничего не изменилось, хайпить стали меньше (и хейтеров бампающих этот тред тоже).

>просрали веб


Не, вась, ну ты совсем ебанутый? Какой веб? Нахуя в вебе язык с борровчекингом, лайфтаймами и прочей низкоуровенной няшностью, когда можно написать то же на пхп/раби/питоне думая только о продукте и не думая мозгами?
>>768639
#331 #768639
>>768603
что ты, что ты, я же не про бложики домохозяек говорю, а про отрасль высоконагруженных (да хоть средненагруженных) микросервисов, которые там в кучу зеленых потоках (корутинах) шустро шуршат в вычислениях и не отжирают тонну памяти и проца просто так.
>>768642
#332 #768642
>>768639
Тонны памяти стоят заметно меньше, чем команда разработчиков на расте (чем сложнее инструмент – тем выше требуется квалификация и время дл выпуска продукта).

Короче – докупить пару серверов всегда легче, если ты не гугл/фейсбук.
>>768663>>768664
#333 #768663
>>768642

>Тонны памяти стоят заметно меньше


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

В общем есть ниша эта, не хочу спорить, удачи расту на системном уровне
>>768683>>768991
#334 #768664
>>768642
Проблема в том, что этот подход ведет скорее не к тормознутому ПО, а к тому что ПО в принципе не работает или падает с непонятной частотой, и никто нихуя ничего поняить не может как все это пофиксить, ребутнули и живем молимся.
>>768683
#335 #768683
>>768664
Это ж золотой стандарт легаси! Даже паттерн такой есть: если дёшево падать и подниматься – занимайся этим сколько влезет.

>>768663

>В общем есть ниша эта


В общем, ты вообще не понимаешь о чем говоришь. Почему по твоему даже гугл свои сервисы пишет на яве (кроме поиска с почтой, разумеется)? Прост))) наверн))))
>>768686>>768714
#336 #768686
>>768683
Ну ты просто сокращаешь расходы на дев и поднимаешь на операторов. Из пустого в порожнее. В итоге у тебя пятьдесят дешевых ртов, кто умеет зайти в консоль и пару комманд вбить из гайда. А чем чаще падает система, тем чило этих ртов шириться.
#337 #768714
>>768683

>Почему по твоему даже гугл свои сервисы пишет на яве (кроме поиска с почтой, разумеется)?



ну и почему же?
>>768718>>768731
#338 #768718
>>768714
он наверно имеет ввиду вся джава индус аутсорс.
>>768738
37 Кб, 604x545
#339 #768731
>>768714
Потому что тогда не было раста.
#340 #768738
>>768718
В гугле - код пишут индусы в аутсорсе?

>он наверно имеет ввиду


вот мне и интересно, что он имел ввиду
>>768747
#341 #768746
Вот есть такой инструменты как Dependency Walker и dumpbin /dependents
Как можно автоматически собирать зависимости в одну директорию (ну, кроме системных), если нужно сделать сборку для распространения?
>>768949
#342 #768747
>>768738
То что ты, животное, читать не умеешь, очевидно.

Я пытаюсь сказать, что если у девелоперов зарплаты не 30 т.р. – железо в большинстве случаев будет банально дешевле команды ртов.
>>768754
#343 #768751
Помогите, почему peek тут все равно жрет мой токен?
https://gist.github.com/anonymous/bdb8e4b640efe1704bf118a058e02df9
>>768757>>768769
#344 #768754
>>768747
Зарелизили проект, который писали 20 человек, оставили для поддержки только двоих на фиксы и вуаля есть мега-класстер который дороже даже двух этих программистов (даже по расходам на электричество).

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

А джава это компромисс между с++ и чем-то высокоуровневым (да вообще там тысячи причин, это же де-факто стандарт ынтерпрайза, но я хотел услышать это от тебя чтобы удостовериться понимаешь ли ты о чем вообще говоришь или просто генерируешь пену у рта).
>>768798
#345 #768757
>>768751
Переформулируй свой вопрос, пожалуйста.
#346 #768769
>>768751
https://doc.rust-lang.org/src/core/up/src/libcore/iter.rs.html#3648
Уходит внутрь. При нормальном использовании это норм, но если всё время дропать Peekable, то данные съедаются.
>>768945
126 Кб, 1600x1200
#347 #768798
>>768754
Ты все правильно говоришь, и очень странно что в современном мире стало уже хорошим тоном забивать на стоимость железа и все эти мантры про "программисты же дороже".

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

У эрланга, например, очень немало областей, где его применение очень даже целесообразно. Но аккуратно, потому что такого тормоза еще поискать. Часто люди, которые не сталкивались с масштабированием более, чем на десяток-другой машин, приводят аргументы навроде "зато мы быстро сделали, всё работает и похрену, что машинок надо до 5-7 раз больше — наша работа стоит дороже". Для этого надо ну хоть раз рассчитать хоть какой-то нетривиальный проект вплоть до стоимости электричества и аренды места (или хоть стоек) в датацентре. Даже на одной стойке вот только про электричество эти моменты уже становится существенными
#348 #768799
>>768337

>Я не сильно слежу за растом, но по-моему количество сторонников, которые смотрели в его сторону, ранее было больше? Чем они еще отпугнули сообщество?



В первую очередь тем что заебали все перепридумывать и переделывать.
При думали какую-то штуку, обсуждали хуй знает сколько времени - окей, до чего-то договорились, стали делать.
Доделали до половины, тут вкатывается новая пиздатая идея эту штуку делать вообще не такой, обсуждение еще на хуй знает сколько времени - окей, начинают ее, еще недопиленную, перепиливать. И так постоянно.
>>768822
#349 #768822
>>768799
ну как и с D было, мозгов сделать продукт не хватало, а вот поиграться с кодом - наше все.
>>768828>>768841
#350 #768828
>>768822
С одной стороны да. С другой стороны, есть вот пример Clojure, где Рич и еще несколько его ближайших соратников пилят язык по ночам под одеялом как им нравится, и всех посылают нахуй. И в результате наиболее активные члены сообщества забивают на Clojure хуй, потому что ни их патчи никому не нужны, ни их предложения, ни даже баг-репорты. "Без вас разберемся". И пока Рич красиво придумывает Трансдюсеры, куча core-функциональности нихуя не работает.

Совсем недавно было много обсуждений по этому поводу
http://ashtonkemerling.com/blog/2016/06/11/my-increasing-frustration-with-clojure/
https://news.ycombinator.com/item?id=11883579
https://www.reddit.com/r/programming/comments/4nlhih/my_increasing_frustration_with_clojure/

Это не вчера началось https://www.reddit.com/r/Clojure/comments/3jjit5/what_does_steve_yegge_mean_by_clojure_being/
>>768841>>768875
#351 #768841
>>768822
Ебануктий, у D изначально другая проблема - нехватка людей. Когда его начинали пилить ни у gcc не было отдельного бэкэнда, ни llvm-а не было (он был где-то на диске какого-то студента, ок), авторы были заняты компилятором, при этом хотели более-менее вменяемую стандартную библиотеку с рантаймом - обосрались и у них стало 2 стандартных библиотеки, рантайм до сих пор довольно слабенький (пилит это всё дело 6-8 человек, в свободное время, не считая Александерску, который недавно начал на фултайме над этим работать.

>>768828
Ну, в кложуре всё тоже не так как в расте. В расте есть сообщество как в плюсах комитет - пока все не придут к консенсусу - будут страдать вообще все, только в отличие от плюсового коммитета любят забивать на проделанную работу. Благо что у них есть спонсора и над языком работают на фултайме.
>>768843>>768862
#352 #768843
>>768841

>над этим работать.


Скобочка ) конешно.

>и над языком работают на фултайме.


Благодаря чему видно хоть какую-то доделанность.
#353 #768862
>>768841
Над кложурой тоже работают на фуллтайме, Рич с друзьями в компании https://web.archive.org/web/20140704050611/http://clojure.org/funding

> в кложуре всё тоже не так как в расте


Я и говорил что в кложуре ситуация обратная растовой, что имеет уже свои недостатки.

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


Вот в этом главная растопроблема.
#354 #768875
>>768828

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

В этом и проблемы этих языков, программисты ими тупо играются.
>>768888
#355 #768888
>>768875
Чтобы пользовались тысячи и миллионы нужно сделать много чего и вложить дохуя денег.
От языка вообще ничего в этом смысле не зависит.
Решили бы большие дяди вместо Java подарить миру INTERCAL, хуярили бы все сейчас на INTERCAL как миленькие.
#356 #768891

> Rust thread


> срач про D и Closure


Че за хуйня происходит?
Подскажите лучше как распространять бинарники. Запилил я например YOBA-AAA-INDIE-игрулю с дохуищей зависимостей которая компилируется час. Как мне теперь распространить этот продукт конечному юзеру? Подойдет ли для этого 'cargo package'?
>>768892>>768949
#357 #768892
>>768891

> Подскажите лучше как распространять бинарники.


Казалось бы, а причём тут раст?
>>768896
#358 #768896
>>768892
Вопрос не про сам раст, а про cargo или про инструмент, который решит данную проблему.
>>768898
#359 #768898
>>768896
Карго это ж только для исходников вроде. С бинарями каждый ебётся как хочет, разве нет?
#360 #768945
>>768769
Всё равно непонятно что ты хочешь спросить, честно говоря. Какие данные? Итератор? Структура, по которой идёт итерация? Можешь привести полноценный пример при которых это происходит?
>>769072
#361 #768949
>>768891
Тоже интересует. Вот выше нечто подобное спрашивал: >>768746
#362 #768991
>>768663
Потому что час работы навороченного сервера стоит 20$, а час работы программиста - 60$. Вот когда сервера становятся дороже, тогда и начинают переписывать, но происходит это нечасто и не у всех.
>>769024
#363 #769024
>>768991
Тебе говорили уже - возьми и посчитай, и сразу в голове прояснится.
Программист твой 8 часов работает, а сервер 24 - привет, уже сравнялись. Даже пока сервер всего один, а программист все еще пилит эту глюкалу.
>>769025
#364 #769025
>>769024
Программист работает 8 часов и дальше не работает нихуя, а сервер собирает мусор все время. Плюс веб-макака тоже денег стоит, и не всегда дешевле программиста.
>>769026
#365 #769026
>>769025
А ещё веб макака гарантированно быстрее сделает продукт – с его инструментом мозги можно не включать.

А ещё веб макаку можно обучить Goвну за недельку от силы, и она с похожец скоростью будет говнокодить, а не думать хули там компилятор ноет про проёбанный борровинг.
>>769028
#366 #769028
>>769026

>А ещё веб макака гарантированно быстрее сделает продукт – с его инструментом мозги можно не включать.


Макака - это 30% экономии на зарплате, и 300% переплаты на железе.

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


С этим согласен, раст не нужен, когда есть Go и C++.
>>769035
#367 #769035
>>769028
Go не нужен потому есть LuaJIT.
C++ не нужен потому что те кто умеет на нем писать, стоят как три мейнфрейма.
>>769036>>769039
#368 #769036
>>769035

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



не благодари, поправил тебя
#369 #769039
>>769035
Lua динамически типизирован, а стоимость знающих C++ и Rust примерно равна. Кстати, не такая уж она и высокая, на С++-сеньер стоит столько же, сколько и Java-сеньер, например.
>>769044
#370 #769044
>>769039
Да, Lua динамически типизирован. При чем здесь это его положительное свойство?

Я про сеньёров ничего не говорил. Я говорил про тех кто умеет С++. Их, конечно, больше чем растеров, но только потому что количество растеров равно нулю.
>>769051
#371 #769050
>>639238 (OP)
Напомните, в Петухане Куриханыче можно формошлепить, или все печально, как и в Go?
>>769053
#372 #769051
>>769044

>При чем здесь это его положительное свойство?


Это отрицательное свойство - вместо написания программ приходится писать тривиальные тесты. Впрочем, если тебе это не очевидно, иди нахуй.
>>774985
#373 #769053
>>769050
Всё печально. Вроде есть биндинги для гтк, но формошлёпить не получится. Делай как все нормальные посоны: формошлёпай в html и в свою программу встраивай вебкит, который и будет отображать гуй.
>>769057>>769161
#374 #769057
>>769053
А как с Qt? Там можно рисовать формочки в Qt Designer независимо от языка программирования.
>>769058>>769067
#375 #769058
>>769057
Нет нормальных биндингов. Есть что-то полурабочее, но последнее обновление крейта с биндингами было 4 апреля, а нового ничего нет.
#376 #769067
>>769057
был биндинг к qt-qml. может живо еще
>>769072
#377 #769072
>>768945
Это не вопрос, это ответ.

>>769067
Не юзабельно, увы: https://github.com/cyndis/qmlrs/issues/22
#378 #769161
>>769053
Есть альтернатива, тоже html, но с помощью какой-то другой либы (C-шная). но найти не могу.
#379 #769438
https://github.com/habitat-sh
Те кто пишет описание продукции, они, случайно, не у юристов учатся формулировать предложения?
Что эта хрень делает? Это типа докера?
>>774893
#380 #769597
Кто-нибудь пояснит, как пользоваться xml-rs?
Смотрю доки, а они там предлагают мне проходиться по всем элементам в документе ЛИНЕЙНО, блядь. Что за обосраное говно? В примере показано, что берется xml документ, и, блядь, ЛИНЕЙНО проходит по всем элементам по порядку, всрав нахуй всю вложенность. Что за пиздец? Почему по-человечески нельзя? Я чего-то не понимаю? Мне что, блядь, парсер xml писать, чтобы распарсить сраную колладу? Как же мне бомбит с этого обосраного говна.
>>769627
#381 #769627
>>769597
Ну ты и лолка. StAX это для бааальших хмлок нужно. А тебе нужен парсер с DOM-деревом и возможно поддержкой XPath.

Вот что нашёл:
https://github.com/shepmaster/sxd-document/
https://github.com/shepmaster/sxd-xpath
#382 #769855
Вообще, по поводу библиотек лучше заходить на https://github.com/kud1ing/awesome-rust/ и смотреть что есть.
#383 #769927
https://www.rust-lang.org/friends.html
Вот такой список всплыл
#384 #770482
Подскажите пожалуйста, как определить сколько стоит скопировать объект. По занимаемой памяти и/или времени.

Хочу узнать, дорого ли будет делать .copy() на итератор. Но интересно, может есть какой универсальный способ и для других объектов.
>>770489>>770492
#385 #770489
>>770482
Кажется, я нашел в книге - https://doc.rust-lang.org/book/benchmark-tests.html
#386 #770492
13 Кб, 577x527
#387 #772048
Какой есть способ не таскать за собой это перечисление.

Тут https://doc.rust-lang.org/std/any/trait.Any.html
сказано "Unstable (get_type_id #27745): this method will likely be replaced by an associated static"

Но что это за ассоциированный статик я не нашел.
>>772209
102 Кб, 558x759
#388 #772209
>>772048
Два часа не мог раздуплиться. Оказалось у Any есть еще метод
fn is<T: Any>(&self) -> bool
Returns true if the boxed type is the same as T
24 Кб, 560x744
#389 #773671
Я все. Может лучше кирпичи таскать
>>774048
#390 #774048
>>773671
Зачем тебе вообще Any?
>>775402
#392 #774985
>>769051
В языках со статической типизацией тестов, очевидно, можно не писать?
>>774992
#393 #774992
>>774985
В статических языках (тем более с адекватной системой типов, а не сишечным стёбом над типизацией) их требуется раз в 8 так меньше чем в динамике.
>>774995>>775046
#394 #774995
>>774992
Какое смелое заявление. Из него можно сделать вывод что семь ошибок из каждых восьми в программах - это ошибки "перепутал литры с килограммами" (ни от каких других статическая типизация не помогает), что реальности не соответствует.

Также интересно узнать, не изменилось ли что-нибудь с момента появления умных тестогенераторов типа QuickCheck (имплементации которого существуют как для Rust - кстати, зачем? в нем ведь тесты можно не писать - так и для динамических языков)?
#395 #775015
Банальную опечатку "сложили вместо того чтоб вычесть" и компилятором не выявишь, а ведь именно такие опечатки и важны, задрачивать все типами чтобы ловить prink вместо print - это очень странное времяпрепровождение.

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


Используем компилятор в качестве grep - ну что ж, отлично, развиите Computer Science наконец-то увенчалось полным успехом.
#396 #775037
>>775031

>смена интерфейса не превращается в боль (и grep тебе тут не поможет)


Обоснуй.
#397 #775046
>>774992
Тайпчекер может верифицировать программу и доказать ее соответствие спецификациям, но спецификации всегда не полны. Если же спецификации хотя бы близки к полноте, то сложность спецификаций приближается к сложности программного кода - как следствие, в спецификациях будет не меньше ошибок, чем в программном коде. И встает вопрос о том, чтобы верифицировать спецификации - то есть писать спецификации спецификаций. Здесь я вижу один путь - доказывать о программе какие-то отдельные интересные факты. То есть - динамическая типизация с опциональной управляемой статикой, или еще лучше - с системой поддержки контрактов, которые есть как для Lua, так и для большинства динамических языков. Полная же статика - это как колоть орехи микроскопом. Причем тогда, когда микроскопа нет - то есть мы должны для начала этот микроскоп придумать, спроектировать, произвести - и только потом расколоть наш орех. Примитивные системы типов, вроде системы типов хаскеля, и уж тем более раста, не позволяют отловить никаких "интересных" ошибок ("интересными" назовем те ошибки, которые не будут обнаружены на первом же тесте). То есть они, по сути, лишь не дают складывать слонов с телегами - чего явно недостаточно. Когда же мы хотим находить "интересные" ошибки, то приходим к проблемам со спецификациями на спецификации. На практике же мы имеем вполне определенную ситуацию - практически все ошибки подобного характера обнаруживаются при первой же проверке работоспособности кода. 99% незамеченных ошибок - логические, система типов их не ловит. Вот на отладку таких ошибок и следует потратить время, сэкономленное на борьбе с системой типов.
>>775050
30 Кб, 408x306
sage #398 #775050
>>775046

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

#399 #775145
>>775143
Будет использовать умные IDE уровня VisualStudio+ReSharper. Такие, кстати, для Lua есть?
>>775167
#400 #775164
>>775151

> Что будет делать IDE?


Хуй её знает. Они ж там все файлы анализируют составляют AST-дерево и уже по нему ищут где что используется и переименовывают только нужное. Ну и у тебя на всякий случай спросят, выдав список всех найденных совпадений.
#402 #775189
>>775188
Ну ладно. Я тебе верю. Невозможно, так невозможно.
14 Кб, 490x441
15 Кб, 485x395
#403 #775402
>>774048
Потому, что я совсем не разбираюсь ни в ООП, ни в функциональщине, особенно трудно даются времена, заимствования и трейты с имплементациями (эти подстановки типов с кучей времен рядом сними). А начал изучать все это с раста.

Ну не получается у меня переопределить метод insert для BTreeMap, новый сделать получается, а когда называю его insert, он обращается к оригинальному. Вот пидор
>>775509
#404 #775494
>>641808

> pijul


Интересная вещь. Никак не могу прочитать какое-нибудь интро в теоркат, чтобы прочитать их статью.

Но раст они зря взяли. Я бы на их месте попытался бы собрать на OCaml-е под винду, либо перекатился на питухон.
>>775737
13 Кб, 498x293
5 Кб, 427x140
6 Кб, 439x173
#405 #775509
>>775402
https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.md
https://github.com/rust-lang/rust/blob/ea6b3ddee9663e27221f366671261b21618394a0/src/libcollections/btree/map.rs
Я так понимаю, проблема у тебя в следующем:
1. insert - не trait в оригинале, а просто метод, но ладно
2. Для того, чтобы функцию/трейт можно специализировать, он(а) (оригинал) должен(на) быть помечен(а) default
meine respektierung to all roosters sage #407 #775629
Посмотрел на реализацию хешинга в русте. А там запилили по уму, не как сейчас в C++. Отделили алгоритм хеширования от хешируемого типа.

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3980.html вроде не берут в C++17 :(
#408 #775734
Почему не работает? Хотел контрибьютить в RUSL, но чет не получается. Тока учусь.

https://play.rust-lang.org/?code=#![feature(libc)]extern crate core;extern crate libc;use libc::{c_schar,size_t};use core::usize;#[no_mangle]pub unsafe extern "C" fn stpcpy(dest:mut%20c_schar,%20source:%20const%20c_schar)%20-%3E%20mut%20c_schar%20{%0A%20%20%20%20//%20TODO(adam)%20compare%20and%20copy%20as%20word-size%20chunks%0A%0A%20%20%20%20for%20i%20in%200..%20{%0A%20%20%20%20%20%20%20%20dest.offset(i)%20%3D%20source.offset(i);%0A%20%20%20%20%20%20%20%20if%20dest.offset(i)%20%3D%3D%200%20{%0A%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20}%0A%0A%20%20%20%20dest%0A}%0A%0A%23[no_mangle]%0Apub%20unsafe%20extern%20%22C%22%20fn%20strlen(s:%20const%20c_schar)%20-%3E%20size_t%20{%0A%20%20%20%20//%20TODO(adam)%20convert%20to%20checking%20word-size%20chunks%0A%20%20%20%20for%20i%20in%200..%20{%0A%20%20%20%20%20%20%20%20if%20s.offset(i)%20%3D%3D%200%20{%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20i%20as%20usize;%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20}%0A%20%20%20%20usize::MAX%0A}%0A%23[no_mangle]%0Apub%20unsafe%20extern%20%22C%22%20fn%20strcat(dest:%20mut%20c_schar,%20source:%20const%20c_schar)%20-%3E%20mut%20c_schar%20{%0A%20%20%20%20let%20len%20%3D%20strlen(dest)%20as%20isize;%0A%20%20%20%20for%20i%20in%20len..%20{%0A%20%20%20%20%20%20%20%20dest.offset(i)%20%3D%20source.offset(i);%0A%20%20%20%20%20%20%20%20if%20dest.offset(i)%20%3D%3D%200%20{%0A%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20}%0A%0A%20%20%20%20dest%0A}%0A%0Afn%20main()%20{%0A%0A%20%20%20%20unsafe%20{%0A%20%20%20%20print!(%22{:%3F}%22,%20strcat(b%22a\0%22.as_ptr()%20as%20_,%20b%22_b\0%22.as_ptr()%20as%20_));%0A%20%20%20%20%20%20%20//%20assert_eq!(strcat(b%22a\0%22.as_ptr()%20as%20_,%20b%22_b\0%22.as_ptr()%20as%20_),%20b%22a_b%22%20as%20_);%0A%0A%20%20%20%20}%20%20%20%20%0A}%0A&version=nightly&backtrace=0
#408 #775734
Почему не работает? Хотел контрибьютить в RUSL, но чет не получается. Тока учусь.

https://play.rust-lang.org/?code=#![feature(libc)]extern crate core;extern crate libc;use libc::{c_schar,size_t};use core::usize;#[no_mangle]pub unsafe extern "C" fn stpcpy(dest:mut%20c_schar,%20source:%20const%20c_schar)%20-%3E%20mut%20c_schar%20{%0A%20%20%20%20//%20TODO(adam)%20compare%20and%20copy%20as%20word-size%20chunks%0A%0A%20%20%20%20for%20i%20in%200..%20{%0A%20%20%20%20%20%20%20%20dest.offset(i)%20%3D%20source.offset(i);%0A%20%20%20%20%20%20%20%20if%20dest.offset(i)%20%3D%3D%200%20{%0A%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20}%0A%0A%20%20%20%20dest%0A}%0A%0A%23[no_mangle]%0Apub%20unsafe%20extern%20%22C%22%20fn%20strlen(s:%20const%20c_schar)%20-%3E%20size_t%20{%0A%20%20%20%20//%20TODO(adam)%20convert%20to%20checking%20word-size%20chunks%0A%20%20%20%20for%20i%20in%200..%20{%0A%20%20%20%20%20%20%20%20if%20s.offset(i)%20%3D%3D%200%20{%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20i%20as%20usize;%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20}%0A%20%20%20%20usize::MAX%0A}%0A%23[no_mangle]%0Apub%20unsafe%20extern%20%22C%22%20fn%20strcat(dest:%20mut%20c_schar,%20source:%20const%20c_schar)%20-%3E%20mut%20c_schar%20{%0A%20%20%20%20let%20len%20%3D%20strlen(dest)%20as%20isize;%0A%20%20%20%20for%20i%20in%20len..%20{%0A%20%20%20%20%20%20%20%20dest.offset(i)%20%3D%20source.offset(i);%0A%20%20%20%20%20%20%20%20if%20dest.offset(i)%20%3D%3D%200%20{%0A%20%20%20%20%20%20%20%20%20%20%20%20break;%0A%20%20%20%20%20%20%20%20}%0A%20%20%20%20}%0A%0A%20%20%20%20dest%0A}%0A%0Afn%20main()%20{%0A%0A%20%20%20%20unsafe%20{%0A%20%20%20%20print!(%22{:%3F}%22,%20strcat(b%22a\0%22.as_ptr()%20as%20_,%20b%22_b\0%22.as_ptr()%20as%20_));%0A%20%20%20%20%20%20%20//%20assert_eq!(strcat(b%22a\0%22.as_ptr()%20as%20_,%20b%22_b\0%22.as_ptr()%20as%20_),%20b%22a_b%22%20as%20_);%0A%0A%20%20%20%20}%20%20%20%20%0A}%0A&version=nightly&backtrace=0
>>775841
#409 #775737
>>775494
Раст они взяли чтобы исправить тормоза хаскеля, которые на окамле без анала не покрыть.
>>775763
#410 #775763
>>775737
Асимптотики алгоритма darcs они же исправили своей теорией патчей. Смысл в микрооптимизациях вроде выбора языка?
>>776146
#411 #775841
>>775734
Макаба съела все звёздочки. Дай нормальную ссылку (нажми кнопку Gist).
>>775845
#413 #775871
>>775845
Ты пытаешься писать в константную статическую строку. Не удивительно, что у тебя application terminated abnormally with signal 11. Кроме того, у тебя strcat сломан.
Вот, попробовал слегка починить: https://play.rust-lang.org/?gist=7fa075ea95a8248dac19d6772bed7db0&version=nightly Работает даже с включёнными оптимизациями.
>>775879>>775889
#414 #775879
>>775871

> if ★dest.offset(len + i)


ffix.
#415 #775889
>>775871
Спасибо! А как ассерты делать?
пишу: assert_eq!(strcat(bytes.as_mut_ptr() as _, b"_b\0".as_ptr() as _), b"a_b\0".as_ptr() as _);

а он мне:
thread 'main' panicked at 'assertion failed: `(left == right)` (left: `0x7fff672b3bbe`, right: `0x7f8f1610daeb`)'
>>775893
#416 #775893
>>775889
Ты сравниваешь указатели, а они, само собой, разные.
>>775897
#417 #775897
>>775893
а, вот почему они каждый раз разные.

>(left: `0x7fff672b3bbe`, right: `0x7f8f1610daeb`)'

>>777821
#418 #776146
>>775763
Как только проект у тебя разрастается во что-то побльшее пары-тройки KLOC и это всё безостановочно редактируется это уже далеко не микроопиимизация.
#419 #777589
https://github.com/rust-lang/rfcs/pull/1657
Это ОНИ. Да, это действительно ОНИ.
Зависимые типы.
>>777596
#420 #777596
>>777589
Вот это уже интересно.
Расскажите что сейчас у Rust плохо? (рассказами что в нем хорошо и так весь гугл забит)
>>777605
#421 #777605
>>777596
Нет HKT, ! (нижний тип) пока ещё не тип, шумный синтаксис, множество фич делает язык не самым лёгким для изучения, автокомплит работает через racer а не через компилятор, инкрементальную компиляцию ещё нет, плагины к компилятору (aka процедурные макросы) в unstable, да и у обычных макросов много чего ещё нет. Ну и так далее.
>>777620
#422 #777620
>>777605
Спасибо.
Но это все о языке, а что с экосистемой?
Есть ли библиотеки, насколько они в среднем сырые?
Что с community, побороли ли порочную практику долго обсуждать, доделывать до середины, начинать обсуждать как это можно было бы сделать лучше,бросать недоделанное и начинать заново?
>>777627
#423 #777627
>>777620

> Есть ли библиотеки, насколько они в среднем сырые?


Зависит от того, какие библиотеки тебе нужны. Можешь на https://rust.libhunt.com/ глянуть.

> Что с community, побороли ли порочную практику долго обсуждать, доделывать до середины, начинать обсуждать как это можно было бы сделать лучше,бросать недоделанное и начинать заново?


Не совсем понял, о чём ты.
12 Кб, 487x496
7 Кб, 376x284
14 Кб, 476x552
#424 #777821
>>775897
Может это из-за https://ru.wikipedia.org/wiki/ASLR

>>639238 (OP)
Люди, как можно передать массив (без использования as_ref), чтоб он таки удовлетворил этот трейт?

На втором скрине трейт удовлетворяется, но там принимает переменная, которая может привести Vec<T> в Vec<u8>

На третьем - еще один неудовлетворительный способ
>>778019
77 Кб, 450x539
#425 #777860

> Results of Rust Survey 2016


> The first diagram shows that 35.5% of respondents don't use, or stopped using, rust


> https://docs.google.com/document/d/1F6oELZcO_ejX2oVk20hmiBWd4lQugfFahn7OOOOyKsw



/thread
#426 #777979
>>777860
уносите этого.
#427 #778001
>>777860
И что? Может они просто учатся или следят за развитием? Как я например.
#428 #778019
>>777821
У тебя `&[T; n]` вместо `&[T]`. Поэтому тебе нужно или реализовывать типаж для всевозможных n, либо ждать ИХ, либо реализовать для &[T] и использовать метод borrow().
Кстати, есть же `std::convert::From`, зачем велосипеды писать?

>>777860

> 1 in 4 people mentioned Rust's learning curve. People commented on the borrow-checker and how lifetimes were tricky to effectively master. Echoing the complexity concern from non-Rust users, here people also mentioned the sense of a feeling of complexity.


> 1 in 7 people mentioned the lack of libraries. The kinds of libraries people mentioned ran the gamut in terms of topic, covering areas like GUIs, scientific/numeric computing, serialization support, web/networking, async I/O, parallel/concurrent patterns, and richer data structures (including more containers and broader coverage of general algorithms).


> 1 in 8 people mentioned the continued presence and growth of C++ as a challenge. C++ continues to be a vital part of application development, especially systems programming. Its recent interest in static analysis is causing some to wait and see if C++ can close some of the gap.

>>778106
6 Кб, 597x154
13 Кб, 547x424
#429 #778106
>>778019

>std::convert::From


С ним у меня не получалось перевести все унифицированно. Кажись проблема со String была. Там нужен был дополнительный шаг или что-то в этом роде.

>либо реализовать для &[T]


Тогда проблемы уже на самом первом этапе.

У меня получалось с AsRef, а не Borrow. Но только напечатать, а не insert'нуть в BTreeMap, к сожалению
>>778115
#430 #778110
>>777860
Не читается. email ввести просит
>>778215
#431 #778115
>>778106
Просто делай `b"bytes".borrow().cv()` вместо `b"bytes".cv()`. Незачем придумывать хитрый способ скормить &[T, n].
#432 #778215
>>778110
Зайди в приватном режиме.
11 Кб, 445x556
#433 #778306
Я нашел как запретить пользователю в Any какашки запихивать. Теперь не будет во время исполнения вылетать!
>>778333>>778410
38 Кб, 604x452
#434 #778333
>>778306
А нельзя просто использовать Box<AllowedTypes>?
>>778378
1864 Кб, 346x194
#435 #778378
>>778333
Я хочу чтоб пользователю функции push не пришлось самому в бокс запихивать.

Еще хотел, чтоб можно было и массивы( &[u8; _] ), и одновременно слайсы( &[u8] ) в аргументе функции передавать, но это оказалось невозможно сделать во время компиляции. (Динамически не проверял вроде, но думаю там можно через коробку опять же.) По крайней мере я почти неделю мучился, так и не нашел способ.
#436 #778410
>>778306
Если у тебя ограниченный набор типов, то почему бы просто не ввести enum и использовать From?
>>778413>>778467
#437 #778413
>>778410

> From/Into


ffix
#438 #778430
Попробовал набросать что-нибудь: https://ideone.com/GMLFj0
>>778463>>778467
61 Кб, 650x482
#439 #778463
>>778430
Посмотришь на такие решения, и сразу руки что-либо изучать опускаются. Сидишь неделю, ломаешь мозг над одной простой истиной
13 Кб, 489x684
#440 #778467
>>778430
После подсказки >>778410 начал вот Такое писать.

Не знал что через перечисление можно передавать значения. Я хоть и читал книгу почти до конца, но в цельную картину она у меня не складывается.
>>778471>>778501
#441 #778471
>>778467
Для цельной картины тебе надо что-нибудь про функциональщину прочитать. С С++ на раст довольно тяжело переходить, потому что большей части фич ООП тут просто нет, либо они реализуются совсем по-другому.
#442 #778501
>>778467
Rust by example читай. Ну и https://llogiq.github.io/2015/07/30/traits.html
Да, и в BTreeMap ты скорее всего хочешь хранить Vec<u8>, а не &[u8].
#444 #779324
>>779207
Сложна, сложнааа, нихуя нипанятна. Как обычно короч.
103 Кб, 604x603
#445 #779363
>>779207

> I am a beginner both with Rust and Nim


> I am looking forward to their 1.0 release (rust v0.12)


Нахуй ты сюда это притащил?

Ну ладно, покормлю:

>the whole language is verbose: compare these 10 lines with this single line


>> Rust - 10 строк - деструктуризация и пустые строки


>> Nim - 1 строка (на деле 2) - обращение к полям

#446 #779377
>>779207
Ему надо в раст компиляцию запилить, лол – получится отличный язык и без GC.
#447 #785255
У серво теперь ночные сборки есть:
https://servo-builds.s3.amazonaws.com/index.html
>>785724
#448 #785542
Rust опять отсосал у Сишечки
http://lexborisov.github.io/benchmark-html-persers/
#449 #785724
>>785255
Нормальную ссылку дай, йобаный https://download.servo.org/index.html

На сосаче по прежнему баги с рендерингом и теперь ещё и со скроллингом :)
#450 #786579
Чет про веб не понял, поясните. Зачем вообще кто-то так сильно упирается и хочет использовать раст в вебе? Какие бенефиты по сравнению с традиционными решениями? Подозреваю что в скорости исполнения и пожирания памяти, но хотелось бы увидеть цифиры.
>>786602
#451 #786602
>>786579

>Зачем вообще кто-то так сильно упирается и хочет использовать раст в вебе?


Либо риалтайм проект, либо скудоумие.

>Подозреваю что в скорости исполнения и пожирания памяти


Грубо говоря, чуть больше кушает чем плюсы/няшная по процессору/памяти, но это не всегда эквивалентно времени выполнения – что и как напишешь, конкретных примеров с адекватным сравнением я не видел.

Разница по памяти/процессору в бенчмарках по сравнению с той же явой до 10-20 раз, со скриптотой умножай ещё на 3.
>>786612>>788389
#452 #786612
>>786602
Как думаешь, для веб-сервиса аля гугл-поиск подойдет раст? У гугла-поиска по сути одна простая страница, и все самое интересное творится на бэкэнде.
>>786645
#453 #786645
>>786612
А есть причины по которым может не подойти?
Единственная - нахуя тебе тратить в 5 раз больше времени на проект, которым пользоваться будет 1.5 человек включая тебя?

У того же яндекса по заверениям их разработчиков, большая часть поиска до сих пор на перле.
>>786679>>792401
#454 #786679
>>786645
В моем случае время не так важно, важна дешевизна арендуемого железа, на котором будет крутиться это дело. То есть нужно чтоб софт был минимально жрущий ресурсы. Присматриваюсь еще в сторону Erlang/Elixir решений, но на Rust я уже имею определенный опыт, написал несколько тысяч строк, а вот Erlang хоть и трогал, но всё-таки это что-то довольно новое.
>>786682
#455 #786682
>>786679
Если так – тот тут только раст (ну ещё может Go подойти, но он тоже достаточно прожорлив).

Эрланг – редкостный тормоз, который специализирован в первую очередь для железного масштабирования, что мягко говоря противоречит твоим целям.
>>786684
#456 #786684
>>786682
Видел что ерланговские бэкэнды держат очень много коннектов одновременных и вообще быстрый респонд имеют. Но подозреваю что если будет что-то более сложное чем отдать страницу клиенту, типа вычисления какие, то тут начинается сосалово.
>>786688>>788387
#457 #786688
>>786684
Я выше уже писал на эту тему, повторюсь: прожорливость до ресурсов != скорость выполнения.
>>786690
#458 #786690
>>786688
Имею в виду "много жрёт – не обязательно медленно".
#459 #788259
Можно ли констатировать что Rust не взлетел.
>>788348>>788384
#460 #788348
>>788259
Нельзя.
#461 #788384
>>788259
Летит низенько и точно уж дальше Cyclone (спасибо Samsung & Mozilla). Как убийца плюсов, наверное можно делать выводы - не реализовался.
#462 #788387
>>786684
Любая дура с IO на select и асинхронной обработкой (например за счет кооперативной многозадачности на основе библиотеки) держит столько же коннектов. Ессно, сосалово придет вместе с вычислениями.
#463 #788389
>>786602
Про десятичный порядок проеба по памяти в сравнении с жабой - верю. Про cpu - не верю. Скорее бинарный порядок, т/е жаба сливает в x2-3.
#464 #788441
>>641808
Мне кажется мир еще не осознал всего величия данной штуки.
#465 #792401
>>786645
Поиск на крестах, но перл у некоторых подразделений для байнда поиска используется.
#466 #796612
Расскажите почему Rust лучше чем Swift?
>>796619
#467 #796619
>>796612
Тем, что работа с памятью явная. И да, swift уже можно запустить на микроконтроллере?
>>796628>>796767
#468 #796628
>>796619
Раст ты тоже на МК не запустишь, а бинарь, им собранный, возможно на некоторых камнях.
#469 #796767
>>796619
На микроконтроллеры похуй. Во всяком случае пока.
У Rust эта явная работа с памятью может превратиться в такие конструкции, что уже вся эффективность явной работы может похериться. Тут надо быть очень большим спецом по расту чтоб что-то делать. В прочем справкедливости ради надо отменить что надо быть спецом в любом языке чтоб нормально писать.
>>796787
#470 #796787
>>796767
На них вообще всегда похуй, это аргумент из серии "смотри, а я зато на голове стоять умею!". Софту для микроволновки меморисейфети и прочее точно не нужно.

В расте относительно тех же плюсов эта самая работа с памятью вообще скрыта.

Со свифтом его мягко говоря нихуя не корректно сравнивать: сравнение хаскеля с плюсами. Один низкоуровенный даёт рассмотреть все проржавевшие кишки, второй на уровне птичьего полёта даёт глядеть на программу.
72 Кб, 604x368
#471 #796798
>>796787

>Софту для микроволновки меморисейфети и прочее точно не нужно.


Анон, ты бесподобен
#472 #796836
>>796787
Можешь более развернуто высказать свое мнение на счет Rust? Ну и немного про Swift, всё-таки тред про раст.
>>796875
#473 #796848
>>796787

>Софту для микроволновки меморисейфети и прочее точно не нужно.


Если микроволновка подключена к интернету, то нужна.
>>796875
#474 #796875
>>796848
А нахуя ей это? Во всяких кококумных домах есть одна центральная пека – там не нужен не перформанс, нихуя, можно хоть жаву накатить.
>>796836
Что именно-то? В свифте нихуя низкоуровенного банально нету, даже ссылок – всё скрыто, в расте – наоборот, вот и всё сравнение.
>>796893
#475 #796893
>>796875
Ты наверное не слышал о находках уязвимости во всяких умных телевизорах, микроволновках, холодильниках.
>>796898
#476 #796898
>>796893
А раст уже успел стать серебряной пулей?
155 Кб, 1280x840
#477 #799897
Скажите, если я буду писать максимально в функциональном стиле на расте, на сколько сильно это повлияет на производительность?
Я имею ввиду, использовать максимум иммутабельности и чистых функций.
>>799908>>800315
#478 #799908
>>799897
Зависит от кода же. Просто так в иммутабельности и в чистых функциях нет ничего плохого, даже наоборот.
>>799916
#479 #799916
>>799908
Ну да, ты прав.
Хотя бы может примерная какая-то оценка есть типовых задач, когда мутабельная версия сильно превосходит иммутбельную. Деревья поиска может какие или сортировка, че там еще бывает?
Заметил что в Расте, если идти таким путем - функциональным, то код заметно чище становится и понятнее, и меньше борьбы с борроу-чекером и параметрами времени жизни.
>>799944
#480 #799944
>>799916
Очевидно, копирование больших данных не полезно для производительности, как и слишком частое выделение и освобождение памяти в куче. Ну и ещё плохо, когда данные разбиты на мельчайшие осколки, хаотично расположенные в памяти, с косвенной адресацией на каждом шагу (привет, связные списки).
А вообще, просто пиши чистый и понятный код, и профилируй его периодически. Тем более, что профилировать крайне легко:
http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.html
https://doc.rust-lang.org/book/benchmark-tests.html
>>800029
283 Кб, 1280x960
#481 #800029
>>799944
А вот move сементика как реализована внутри? Надеюсь не происходит никакого копирования данных?
И еще коль уж начал спрашивать, есть ли где-то наконец-то нормальное пояснение по лайфтайм параметрам? Борроуинг понятен. В принципе даже можно привыкнуть. Немного бесит, что в Rust Book подробно расписывается какая-то херня типа точки с запятой, cargo run, всякие идиоматичности кода (этов ажно, согалсен), всякие циклы, ифы, а блядь самая мутная тема быстро галопом по верхам, я имею ввижу лайфтаймы. Какого хуя?
В своем коде еще сталкивался с такой штукой, что компилятор мне говорил " у тебя вот тут не указан параметр" - ну я взял да указал, и норм стало. Компилятор мог и без меня это сделать. В общем я пока не сталкивался с ситуациями где бы компилятор не могс ам догадаться куда ставить эти параметры. Может есть примеры какие-то?
>>800047>>800052
#482 #800047
>>800029

> Надеюсь не происходит никакого копирования данных?


Только данных на стеке, это совсем-совсем дёшево.

> Компилятор мог и без меня это сделать


Мог. Но раст предпочитает явное вместо магии.
http://stackoverflow.com/questions/31609137/why-are-explicit-lifetimes-needed-in-rust/
#483 #800052
>>800029

>А вот move сементика как реализована внутри?


Как и в плюсах – просто обнуляется старая ссылка с присвоением значения новой. Учитывая что у раста несколько промежуточных представлений – в банальных случаях в скомпилированном коде этого перемещения не будет вообще.
#484 #800315
>>799897
При использовании иммутабельных данных и чистых функций нет семантической разницы между вызовом по ссылке и вызовом по значению (поскольку структуры данных в них являются неизменяемыми, и функция так или иначе не имеет возможности изменить значение своих аргументов), поэтому их обычно описывают как вызывающие по значению, несмотря на то, что многие реализации в действительности используют вызов по ссылке для повышения эффективности.
#485 #803315
Я вам верификации принёс: https://github.com/Kha/electrolysis
>>806670
4 Кб, 928x208
#486 #806651
Оказывается в Книге был еще один способ проверить палиндром. На всякий случай тут его оставлю.
>>808626>>814701
#487 #806670
>>803315
Что это за хуёвина? Влом смотреть презентацию.
#488 #808626
>>806651
я что-то пропустил, что за ref? это же по идее & ?
>>808692
#489 #808692
>>808626
http://rustbyexample.com/flow_control/match/destructuring/destructure_pointers.html
По идее, должно быть ∗, но этот RFC не приняли.
#490 #808712
https://github.com/tailhook/vagga убийца докера
#491 #814082
Стоит ли вкатываться в раст, если до этого писал только хеловорлды на шарпе?
>>814087>>814493
#492 #814087
>>814082
Цель-то какая? Если её нету – забей, нахуй не стоит.
#493 #814493
>>814082
перекатывайся сразу в хаскель/эрланг и пиши хелоуворды там, делов то
#494 #814540
>>718838
А почему в твоей модели возможна разная длительность жизни для hui и pizda? Типа возможен момент времени, когда hui уже будет уничтожен, а pizda нет? Как тогда может существовать в этот момент Customer, он же будет в неконсистентном состоянии?
>>816105
#495 #814701
>>806651
Красота, чо. Прям как в хачкеле.
#496 #816105
>>814540

> Option

>>816477
#497 #816477
>>816105
Это всё равно неправильно. Немножечко окамеля:
type xyupizda = Hui | Pizda
and car = ...
and customer = {
car: car option;
sex: xyupizda
}
#498 #817265
let v:Vec<Vec<i32>> = vec![];
v.push(vec![1,2,3,4]);
v.push(vec![5,6]);
v.push(vec![7,8,9,10,11,12,13,14]);
...

Как подобное сделать const?
Например, массив можно сделать
const a: [[4];5] = [[1,2,3,4], [5,6,7,8]...];
но тут каждый подмассив одинаоковой длины должен быть.
Ну или не обязательно const, главное чтоб не динамически выделялась память.
>>817292
#499 #817292
>>817265
што я за хуйню сейчас прочитал /0
1) Раст – хуёвый выбор для новичка;
2) Именно с векторов – никак. Это, сука, динамический массив. И твою задачу без аллокаций памяти не решить – не страдает фигнёй.
>>817313
#500 #817313
>>817292

>Как подобное сделать


Я имею ввиду может какая другая есть структура данных. Никаких измененией данных не планиурется, ни добавление, ни удаление, ни редактирование элементов.
>>817317>>817501
#501 #817317
>>817313
Тогда unsafe и c-like указатель на указатель (он же двухместный массив).
#502 #817501
>>817313
Непонятно, такое что ли?
let a = [&[1,2,3,4][..], &[5,6][..], &[7,8,9,10,11,12,13,14][..]];
println!("{:?}", a); // [[1, 2, 3, 4], [5, 6], [7, 8, 9, 10, 11, 12, 13, 14]]

Объясни для чего это, чтоб понятней стало что тебе надо.
Посмотри на сорсы макроса vec! или какого там. Сделай себе похожий, если ты хочешь в коде какие-то необычные финтифлюшки удобно вытворять.
>>817706
#503 #817706
>>817501
Ты - молодец.
Сделал так:
const a:[&'static [usize];2] = [&[1,2,3],&[4,5]];
#504 #822304
Добавьте в шапку и вообще помогите ребятам сделать tiling wm

https://github.com/Immington-Industries/way-cooler
>>827105
#505 #827105
102 Кб, 944x645
#506 #827267
Судя по комментам, тут более менее вменяемая аудитория, поэтому решился на вопрос.

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

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

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

Все этим маня-архитекторы идут нахуй, у меня именно такая задача, но на плюсах писать не охота

PS Го не предлагать, это без меня :)
#507 #827328
Меня чет порвала эта мелкая нелепость

~~~~
Конкатенация
Но если у вас есть две String, то необходимо использовать &:

let hello = "Hello ".to_string();
let world = "world!".to_string();

let hello_world = hello + &world;
Это потому, что &String может быть автоматически приведен к &str. Эта возможность называется «Приведение при разыменовании».
~~~~

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

Изъебывали язык годами, ожидаешь грамотного академического подхода... а нет, очередная хипстота (но безопасная).

PS может я ппц тупой, но какой смысл делать такую откровенную неюзабильную магию, особенно порадовало что text[3] - так нельзя, мол мы не хотим показать что тут так просто все и быстро, а вот через жопу на text.nth(3) норм же теперь блять, если ты через анус достучался, значит и компилятор страдал с тобой, блять.

И что блять за nth, что блять за экономия символов в 2016 году. Давайте снова писать как WinAPI "LPCSTR" или GJEK!JEJJHKJJKQW, сука...
>>827608
16 Кб, 384x288
#508 #827608
>>827328
да ты же ролидовый!

это не дизайн, это ЯВНОЕ ЛУЧШЕ НЕЯВНОГО, а ты просто неосилятор. покури маны почему нельзя две строки вот так просто взять и конкатенировать, нахуя срезы и тд
нелепость его порвала, вообще ахуеть
>>827718
#509 #827718
>>827608
>>827608
хуячишь на тысячах языках, конкатинируешь как все вменяемые str1 + str2 (а тут же норм компиляторы собирают через всякие StringBuilder) а тут хуяк в ржавой хуйне надо приписать str1 + &str2, ведь это же блять так явно к неявному, строка каким-то волшебным хером преобразуется к литералу (по сути к константной строке из исходника).

Кококо - я не могу в дискас, назову всех неосилятором.
Какой нахер неосилятор если я пример то понял и его еще привел? Я не говорю что сложно, я говорю ЧТО ГОВНО.

Я уверен если на таком обослались, там дальше будет веселей.
>>827763
#510 #827763
>>827718
пиши макросы, прячь всё за абстракции, хули ты хотел?
не оправдало твои ожидания, сразу говном бросать. обосрались? нет, это как раз та НИЗКОУРОВНЕВОСТЬ

String - это, блядь, вектор в хипе, а срез строки &str, это ссылка на память, которая может быть где угодно. это легко спрятать в макрос и питушки вроде тебя пришедшие с питонов будут и дальше писать строка + строка не задумываясь что там происходит под капотом. отсюда же твоё непонимание про text[3] и text.nth(3). в памяти строки хранятся в utf-8, а там 1 байт не всегда равен 1 символу. text[3] - вернёт четвёртый байт, а .nth сисмвол. что, сука, в своих высокоуровневых комбайнах никогда с байтами не работал? пиздуй в го хомячь, там даже жопу за тебя вытирать будут
>>827836
#511 #827836
>>827763

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



Нас ждут тогда полные чудеса.

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



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

Блять, SQL запрос тяжеловесный, давайте сделаем вызов через оператор "-=]}<SELECT...>" - а то блять будут пользоваться такими тяжелыми операциями (ты ощущаешь всю нелепость ситуации и долбоебизма??).

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

Про то как utf8 устроенно будешь на собеседованиях рассказывать и в документации разжевали, но все равно насрали, потому что ты ванька, мы тебя тут оберегаем. Предлагаю получать строку так text[(}3{)] - я бы тут сразу догадался что это трудная операция и подумол много раз (а то прям эти клоуны не будут юзать text.nth(3) автоматом)!!!

PS раньше языки делали для людей, конечно обсерались, конечно на легалиси синтаксисе строили чудовишь, но там никто не пытался показать как кому, что надо делать и когда. Опытные программисты понимают как устроенны хешмапы, массивы, а неопытным со своим бложиком потери в 1мс из-за text.непонятнаяХуйня(3) - ничем ужасным не покажется.

Феномен 21 века, хипстер-архитекторы языков, лол, аж смузи на лептоп пролил
>>827906
#512 #827906
>>827836
ебать у тебя в голове каша

>Какого хуя за меня авторы решают как мне поступать?


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

>по какой-то магии строка бля в литерал превращалась


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

>хипстер-архитекторы языков


всё с тобой понятно. ты поехавший. хипстеры - это как раз маньки, вроде тебя, которые не хотят ни в чём разбиратся, пусть сычи пишут код, а я не хочу ничего решать, я хочу просто скачать крейт и что бы всё привычно было как пистоне!
>>827996
#513 #827996
>>827906
нахера ты мне про устройство раста каждый раз рассказываешь, я тебя в конкретное говно тыкаю же.

>нихуя не понятно, пиши яснее. какая нахуй "строка в литерал превращаетя"?



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

ПОЭТОМУ

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

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

3. Нахера на операторе конкатенации "строки-из-кучи" и результатом которой будет "строка-из-кучи", делать преобразование в строку-литерал.
Логичнее даже литералы привести к динамичной строке, но не наоборот же.
Ну вот просто - нахрена??
#514 #828031

>устройство раста каждый раз рассказываешь



потому что ты не въежаешь в устройство раста.

если ты под литералом имеешь в виду "строку как поледовательность символов", то это данные которые хранятся в String, а $str - это не литерал, а ссылка на данные, срез.
а вот если ты про "константную строку из исходного кода", она представляется тем самым $str.

вот поэтому мне и не понятно о чём ты говоришь, когда пишешь "строка из кучи преобразуется в строку-литерал"

1. потому что это вообще разные сущности, работать с которыми приходится из-за того их не скрыть за zero-cost абстракцией

2. она никуда не преобразовывается, & возвращает ссылку, йтть

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

вообще странно что из всех вычурностей этого ЯП ты приебался к строкам. ведь после понимания owning and borrowing подобные вопросы сами отпадают
>>828060
#515 #828040

>в принцепи


>пи


>с тобой все ясно


лол
>>828065
#516 #828060
>>828031

>а вот если ты про "константную строку из исходного кода", она представляется тем самым $str.



Нехуя ты какой сообразительный, ну наконец-то. Серьезно.
В этом и проблема, я тебе пытаюсь нативные решения объяснить, которые применяются при трансляции языка, а ты мне про документацию из раста.

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

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

То что им пришлось делать две строки и одна из них псевдо-литерал - это обосрамс.
Вот найдешь реально решение почему они
1. Ввели два вида строк (и не надо говорить zero-cost, это оверхед вообще-то)
2. Перезагрузили оператор "+" так что он преобразует (или извлекает ссылку, не важно) &str из вектора, но возвращает вектор (это как если бы складывать int'ы но сначала преобразовывать в long'и).

Вот тогда мы поговорим, а так все пусто. Я аргументирую ты мне документацию рассказываешь (где мотивация эта не расписана)
>>828099
#517 #828065
>>828040
"мне этот собеседник не нравится, но сказать что-то по теме мозгов нет, поэтому я докопаюсь до орфографии"
>>828071
#518 #828071
>>828065
не, если бы мне не нравился собеседник, я бы ен писал. а к орфографии как раз не доебался в ответе, а заметил уже когда перечитывал, оттого и проиграл. а ты чё обиделся?

олсо

ПЕРЕКАТ

https://2ch.hk/pr/res/828070.html (М)
https://2ch.hk/pr/res/828070.html (М)
https://2ch.hk/pr/res/828070.html (М)
#519 #828099
Тред утонул или удален.
Это копия, сохраненная 4 сентября 2016 года.

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

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