https://www.rust-lang.org/downloads.htmlТекущая версия: 1.6Планы на 2016 год: http://blog.rust-lang.org/2015/08/14/Next-year.htmlКниги:= The Rust Programming Language https://doc.rust-lang.org/book/= The Rustonomicon https://doc.rust-lang.org/nightly/nomicon/Известные пректы:= https://github.com/PistonDevelopers/piston= https://github.com/servo/servo= https://github.com/redox-os/redoxПрошлый тред тонет тут: https://2ch.hk/pr/res/572681.html
— Одну минуту, — громко произнес ОП, — прежде чем продемонстрировать вам способ распития портвешка, о котором все вы, как будто, позабыли, я должен опорожнить свой кишечник.Вот каким образом развратник приступил к омерзительной операции. Его окружили четверо ржавопетухов: один держал наготове большой ночной горшок, второй взял зажженную свечу и подставил ее поближе к анусу, чтобы было лучше видно происходящее, третий сосал ему член, четвертый, перекинув через руку белоснежное полотенце, целовал главпетуха в губы. Тот, опершись еще на двоих педерастов, поднатужился, и как только появилось невероятное количество дерьма, которое обыкновенно и регулярно выдавал хозяин параши, учитывая страшное количество поглощаемого им борща, тот петух, что держал горшок, принялся восхвалять экскременты. «Какое прекрасное ржаводерьмо! — восклицал он. — Ах, господин мой, какое превосходное говно! Как красиво вы испражняетесь». Когда дифирамбы закончились, педераст, вооруженный салфеткой, языком очистил преддверие ануса, а горшечник подставил содержимое горшка под нос главпетуху и опять громогласно восхвалял его. После этого мощная струя мочи ударила в рот сосателю, который тут же проглотил всю жидкость, полотенце завершило то, что не мог сделать язык, и четверо педерастов, оставшись без дела, долго сосали поочередно язык, фаллос и задний проход распутника.
>>639475Какая мерзость эта вебмка
>>639475Что за фильм?
>>640546Скорее всего САЛО но хуй знает. Хуита для эстетствующих педрил.
Смотрите, какую штуку на расте запилили: https://pijul.org/Все преимущества darcs без его чудовищных тормозов.
Очень плохая шапка, никуда не годится.Объявляю тред досрочно утонувшим.
такая няшаhttps://www.youtube.com/watch?v=dIageYT0Vgg
>>641808Зачем ЭТО вообще существует?
>>646447Не милфа и не молодая, не смазливая и не страшная. Хз чот. Леночка ламповее, кек
>>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.
>>639238 (OP)Что там с серво? Далеко ещё до юзабельного состояния?
>>652288Очень далеко, ничего интересней простеньких демок не завезли.
>>652293У них какие-то непредвиденные трудности? ЕМНИП у них были наполеоновские планы на первую половину этого года.
>>652303У их трудности название "нельзя просто взять и написать браузерный движок с принципиально новой архитектуры с нуля".
>>652303А ещё "нельзя просто взять и разработать язык и бровсер одновременно".
>>652364>>652361Ну, так это вроде не непредвиденные.
>>652392Проблемы у того, кто эти даты назначал.
>>652288Что-то работает, что-то ещё нет. Макабу он до сих пор не осилил.
Тред жив/мёртв?Допустим у нас есть некий тип struct SomeType. Можем ли мы используя return вернуть указатель на свежесозданный внутри функции экземпляр SomeType таким образом чтобы компилятор не наезжал по поводу того, что указатель сдох в том месте, где кончилась функция из которой мы делаем return? Например есть функция, которая принимает путь(path) внутри себя вычисляет slice, который содержит скажем кусок пути. При попытке вернуть этот результат компилятор говорит мне что я дурак и дегенерат, бобик мёртв, вернуть его нельзя. Окай обвинения компилятора скорее всего уместны, но куда мне тогда поместить результат, чтобы он не помер при выходе из функции?
>>653587Что мешает просто вернуть значение, а не указатель?
>>654367Может просто структура жырная?
>>654376Если структура слишком жирная, чтобы класть её на стек (что странно), оберни её в Box<T>.В любом случае, что-то должно сохранять владение.
>>653587unsafensafe
>>653587Вот как ты делают только мудаки. Нормальные поцы дают код который надо исправить. Тупо потому что ты сам не знаешь что хочешь, а так тебе хоть укажут в чем конкретно ты не прав.
https://github.com/ebkalderon/amethystHello world c 324 строками кода. 2 месяца разработки. 150 звезд. Продал товар даже не начиная создавать.
>>657490Там дохуя кода
>>657578Там учебник больше чем весь код с комментариями
Servo Webrenderhttp://www.youtube.com/watch?v=erfnCaeLxSIhttps://air.mozilla.org/bay-area-rust-meetup-february-2016/
Растаны,имеется структура(Foo), в ней хочу замутить HashMap типа ключ-строка, значение-лямбда вида Fn(Hui) -> Govno.Теперь:1) Fn насколько я понял - это trait. А значит сущность безразмерная, и при попытке передать лямбду по значению, я сосну.Получается тип значения у HashMap будет Box<Fn(Hui) -> Govno>?2) Какой строковый тип подойдет для роли ключа? Если использовать &str, то ключ будет существовать, пока я нахожусь в области видимости этого &str. Верно ли, что в таком случае, если в дальнейшем я буду ебашить Foo-фабрику, а в ней задавать начальные значения HashMap'у, то life-checker меня обоссыт? Т.е. опять нужно выделять память в куче(использовать String)?C#-вебмакака
>>666748https://play.rust-lang.org/?gist=d4bcb2e6902dea5a63df&version=stable1) Получается что так. Причем сможешь хранить как лямбды, так и обычные функции. См. ссылку.2) Не заебывайся и юзай String. Или &'static str если все ключи известны во время компиляции. Ты же не будешь хранить все ключи в одной длинной строке на стеке, так что в любом случае оно будет на куче. К чему эти преждевременные оптимизации. Будто в том же шарпе хэш мап не полностью в куче. Тем более если заполнять хэшмап последовательно большим количеством записей, то все равно все строки в куче будут последовательно лежать с минимальной фрагментацией.
>>666835Охуенно. Спасибо за разъяснение.
Rust такой охуенный, что я не могу на нем писать. Только заглядываю в документацию, как обканчиваю монитор, иду курить, а затем без сил падаю спать.
Как работать с матрицами в этом вашем расте? Возможно вопрос звучит глупо, но я правда не понимаю.Более конкретно, как по-простому задать часть одной матрицы с помощью другой, что-то вроде A[a:b, c:d] = B?Мне для этого нужно самому сделать обертку над вектором и при вставке этой матрицы проходить по строкам (или столбцам в зависимости от способа хранения), вычисляя индексы? Или такое уже кто-то запилил?
>>667966https://crates.io/search?q=matrixЕсли нет того, что тебя удовлетворит - то да, пилить самому.
Посоны.Посоветуйте годных ящиков.1) Числа. BigInteger, BigRational, decimal2) Вывод графиков (2d, линии уровня, поля). Есть обертки matplotlib или gnuplot годные?3) GUI (нужно чтонибудь типа picturebox WinForm чтобы самому рисовать)А, посоветуйте еще годных плагинов для Sublime Text 3.
>>668111В гугле забанили что ли?1) https://github.com/rust-num/num2) https://github.com/SiegeLord/RustGnuplot3) https://github.com/PistonDevelopers/conrod
>>668220Да я дурак просто, навигацию по cargo.io осилить немогу.
>>654367Так и сделал. Сперва не мог её вернуть так как получал указатель, не догадался его разименовать в переменную-результат. >>655459Понимаю неудобство, но с телефона не мог достать код.В целом эксперименты пока показывют что если код компилируется то почти наверняка приложение работает как надо сразу же. Но приходится проводить множество рефакторингов для увеличения читабельности кода.Также есть сложности с компиляцией на windows некоторых библиотек, которые без проблем собираются под бубунтой.
Потратил я час времени, значится, чтобы собрать ебучий серво. И у меня вопрос - что с восприятием реальности у челика, который ставил дату его релиза? Сука, он даже двощик не осилил, причём лагает как кусок дерьма даже на своих примерчиках. Подрубать гпу как вот этот челик >>663859 для рендеринга страниц - это, блядь, гениально, особенно на мобильных платформах.Учитывая что проекту уже 3-й год - ещё ближайшие 3 года релиз чего-то более менее вменяемого сомнителен.
>>669855И да, Карл - 300мб на 1 вкладочку с двощиком. И это билд в релиз моде, без поеботы с дебагом.
>>669855>>669903Весь смак в том, что никто толком и не знает, что они подразумевали под "альфа-версией" в прошлом году. У Мозиллы даже в планах не было использовать этот проект по назначению. Это исследовательский проект как бы. Всё что у них запланировано на текущий момент - добавить одну микропиську в FF. Сейчас они вообще толком ничего не говорят, хоть и расширяют количество сотрудников.Also, вот сами эти их тестики из презентации:https://github.com/pcwalton/webrender-demos/На лисе реально 1-2 кадра в секунду, но под хромом хоть и не 60fps, но прилично идет, так что врал Патрик.> причём лагает как кусок дерьма даже на своих примерчикахНу так оптимизацией они и не занимались. Их задача на текущий момент чтобы эта хуйня хоть как-то работала. В команде где-то 10 человек. Gecko разрабатывают 50 человек штатных сотрудников. Сколько разрабатывает Webkit/Blink?> он даже двощик не осилилМожешь сделать скриншот, кстати?
>>669919>Сколько разрабатывает Webkit/Blink?Аргумент уровня главы сбербанка, про то что гугл вносит nnnnnn изм. в свою ситему в год, а они - n. Дохуя разработчиков - не всегда ускорение разработки, из-за банальной толкучки.>>669919>Можешь сделать скриншот, кстати? Пикрил.
>>669948Ну да, хуйня полная.
>>669855Зато какои пиар
>>669855>Подрубать гпу на мобильных платформахЛол, как раз там это лучшее решение. У всех современных смартов и планшетов есть поддержка opengl es 2, зачем грузить cpu если можно загрузить gpu, который справится с рендером более энергоэффективно.
>>669855> он даже двощик не осилилИменно двощик он и не осилил. Макака немного намудрила с веб-магией.>>669948> Аргумент уровня главы сбербанка, про то что гугл вносит nnnnnn изм. в свою ситему в год, а они - n. Дохуя разработчиков - не всегда ускорение разработки, из-за банальной толкучки.Десять человек на такой проект это действительно немного. Тем более, что им скорее интереснее сейчас прикручивать browser.html/mozbrowser api, чем фиксить рандомные баги с вёрсткой.
>>670825>Именно двощик он и не осилил. Макака немного намудрила с веб-магией.Суть в том, что двощик ещё выглядит в нём относительно нормально, как и фочан распидорашен совсем немножко. Посмотри на более менее круто свёрстанные сайты, например как theverge пидорасит. Тот же медиум вообще не открывается, на вроде бы простом реддите вообще падает. Хабр не скроллится и падает через минуту, сомневаюсь что везде тут прям магия и хаки кругом используются.>Десять человек на такой проект это действительно немного. Тем более, что им скорее интереснее сейчас прикручивать browser.html/mozbrowser api, чем фиксить рандомные баги с вёрсткой.Ну, 10 человек - это видимо толлько команда в штате, на том же гитхабе числится 400+ контрибьютеров.
>>671101> на вроде бы простом реддите вообще падаетУ меня вроде норм работает. Медиум начинает грузиться, но затем падает.В случае двачика есть регрессия: раньше он рендерился намного лучше, лишь только постинг не работал.> Ну, 10 человек - это видимо толлько команда в штате, на том же гитхабе числится 400+ контрибьютеров.Большинство из них сделало примерно один маленький вклад за всё время.
>>671185>раньше он рендерился намного лучше, лишь только постинг не работал.У меня в серво он и сейчас не работает вообще ни в какой форме.
На каком железе оно работает и как добавляют поддержку? На ARM работает?
>>671576> На ARM работает?Да, работает.
>>671576На любом, по идее. Там же LLVM бекенд.
Чейнжлог к 1.7 опубликовали, посаны: https://github.com/rust-lang/rust/blob/stable/RELEASES.md#version-170-2016-03-03Если я правильно понял, можно в хэшмэп свой хэшер использовать, глядишь перестанет так на интах тормозить.
А вот и анонсмент: http://blog.rust-lang.org/2016/03/02/Rust-1.7.html
>>674875Что-то жиденько как-то
>>674951Зато по расписанию.
>>674959Ну надож видимость для спонсоров создавать.
>>674875Уже обсуждаем:)Точки над бенчмарками уже расставили...
>>675973https://www.linux.org.ru/news/mozilla/12406508/page1#comments
>>675973>Точки над бенчмарками уже расставили... Ну, если ты это так называешь, то да. Хотя я бы сказал что один колобок обосрался выставив напоказ свою глупость.
Rust заменит C++?
>>676698Его уже ничто не заменит.
>>676698Тебе в /sn/ или /mg/, тут гадалок нет.Прямо сейчас есть множество областей, где замены нет даже близко. Например, gui.
>>676897Так там же Tcl/Tk, не?
>>676698JavaScript заменит всё.
Как отметили очередной релиз котаны?
>>677538А что, предполагается по случаю очередного релиза употреблять алкоголь/вещества/баб? Если да, то люди точно потянутся к расту.
https://www.youtube.com/watch?v=u0hYIRQRiwsНу хуй знает. Они что, каким-то серво из параллельной вселенной пользуются?
>>677538Хули там отмечать, если релиз каждые 6 недель, вне зависимости от изменений.Кстати, куда делся GC из дорелизных версий?
>>681241Не обязательно, просто в нём рендеринг на GPU доступен.
>>681241В линуксе вебрендер работает не так хорошо, как в макосе, но он все ещё намного быстрее Firefox'а.
Через вебрендер, кстати, /pr/ норм рендерится.
>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()
>>681371А как его потыкать-то? Скомпилировал, куда засунуть либу, чо настроить?
>>681275Убрали к хуям подальше, чтобы ещё и эту плашечку хейтеры не повесили. Вообще, вроде бы с нуля пишут.
Windows 80.6%Mac OS X 2.8%Linux 16.6%Nope?
>>681510./mach build --release./mach run --release -- https://2ch.hk/pr/ -wКак-то так. Можно ещё browser.html поверх него навернуть.
>>681541> Windows 80.6%> Rust's support for the GNU ABI is more mature, and is recommended for typical uses.Ребята там еще не убились о подводные камни?
А этот Servo уже собирали под ведроид?
>>685093На гитхабе заголовок в описании:>Building for Android targetпиздуй собирай и тестируй, коли интересно.
Привет, аноним.Есть `x: Vec<f32>` со значениями от -10 до 10 с шагом 0.5.Есть функция `f(x:f32) -> f32`Нужно сохранить `x` и соответствующий ему `f(x)`.Попытался юзнуть `HashMap`, но rust говорит что у `f32` не реализован трейт `Ord` и `Eq`. Может есть какие-нибудь еще варианты структур?Нужно чтобы структура была отсортирована по значениям `x` и значения `x` были уникальными.
>>686456Пройдись по всем элементам вектора, преврати каждый элемент в пару значения и функции от этого значения:let v: Vec<(f32, f32)> = v0.iter().map(|x| (x, f(x)) );У тебя и так в векторе значения уникальны и отсортированы, HashMap тебе (пока) не нужен. Если все-таки понадобится, используй метод collect.Возможно, ты не понял что в векторе можно хранить пары значений?
>>686717Я немного неправильно выразился.Есть функция f(x). Она очень затратна по вычислениям.Я хотел бы реализовать обертку вокруг этой функции с кэшем. Есть заранее заданный интервал значений x, где я могу в порядке инициализации посчитать этот f(x). Если юзер запрашивает уже посчитанное значение, то я возвращаю его из кэша, а если новое значение, то я считаю значение функции и помещаю в кэш (ну и конечно возвращаю). Требование сортированности я чет с неба взял, а уникальность мне очень даже нужна.Гугл подсказывает мне, что проблема в NaN, и похоже мне придется писать обертку вокруг f32 и реализовывать для нее нужные трейты.
>>686749Бля, вот очередной мудак, который не показывает что у него там за секретный правительственный код который никто не может видеть, а все должны работать экстрасенсами.Если юзер может запрашивать только определенные значения с заданным шагом - то просто принимай от него целочисленные значения или преобразуй принимаемые значения в дроби типа 1/2, 2/2, 3/2 где делитель константа. И по делимому пили хэшмап.Если принимаемые значения произвольные, то хэшмап тут никаким вообще боков не пойдет. Тупо по тому что операция равенства для значений с плавающей точкой вообще точно не определена. Просто почитай как float работает в современных процессорах.Можно конечно сделать обертку с имплементацией трейта и таки сделать хэшмап, но я не понимаю что это тебе даст.В случае с произвольными значениями надо делать сортированный вектор из пар значений (x, f(x)), с бинарным поиском по первому значению с определенной погрешностью (например 0,005).Но тут опять же не понятно, значения f(x) прямо пропорционально зависят от x? Если да, то например если посчитан результат для 0,4 и 0,6 то при запросе 0,5 можно взять два готовых результата и отинтерполировать.
>>687135Потише, братишка, в этой ситуации.Я просто себе задание выдумал, чтобы выполняя его я познал вкус программирования на расте. На самом деле я из DARPAМне просто нужен кэш, куда я буду складывать вычисленные значения. А теперь следи за руками - HashMap get O(1)~> В случае с произвольными значениями надо делать сортированный вектор из пар значений (x, f(x)), с бинарным поиском по первому значению с определенной погрешностьюBinary search O(log n)> но я не понимаю что это тебе дастСкорость даст, которую я хочу получить, используя HashMap.> Тупо по тому что операция равенства для значений с плавающей точкой вообще точно не определена.А пацаны то и незнают про (a-b).abs() < f32::EPSILON
Чо такое 'a 'b 'huebe?
>>687507Время жизни. В расте у всех данных есть один конкретный владелец.В общих случаях компилятор сам определяет время жизни. Но иногда он у тебя хочет уточнить что ты хочешь от него. Например, ты заимствуешь какие-то данные из какой-то структуры. И ему нужно удостоверится, что заимствование (&) не переживет владеющей ею структуры.Есть время жизни 'static. Данные с таким временем жизни данные существуют всё время работы программы. Остальные названия выбираются как тебе угодно.
http://www.wired.com/2016/03/epic-story-dropboxs-exodus-amazon-cloud-empire/Тут заявляют, что Dropbox с Go на Rust перекатился.
>>687507https://www.linux.org.ru/forum/development/12387893
Вот вам еще проект принес:https://github.com/twitter/rpc-perf
>>687982Ну у них все подряд на скале. Хипсторы такие хипсторы.
>>688026Как что-то плохое.
>>688038Чертова сажа
>>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
Когда раст будет готов к продакшену, котаны? Просматривал crates.io, там почти все либы с нулевой мажорной версией.И поясните за версионность. Мне самому нужно менять version в toml файле, или какой-нибудь cargo release сам меняет его?
>>689675Нет продакшен грейд http библиотеки на mio, нет нормального gui, из встраиваемых языков только lua. А для числодробилок и игорей вполне годен. Язык сам по себе стабильный, вроде никуда меняться не собирается настолько чтобы все переписывать пришлось. Крейты некоторые бывает меняются вплоть до переписывания половины апи, да, но об этом обычно прямо указано на страницы репы, что они в стадии разработки.
>>6896751-3 года и будет готов для продакшена.На текущий момент версию менять самому.
>>689675Про версионирование - никто, кроме тебя, не знает, какой выставить следующий номер версии, Cargo уж точно. В качестве схемы версионирования используй http://semver.org, как все нормальные люди (и почти все крейты на crates.io)
Гайз, паттернов проектирования завезите под раст.
Каталог библиотек: libs.rsВ отличии от crates.io здесь либы сгруппированы по категориям.
>cargo new hello_world --bin>cd hello_world>cargo build --release>смотришь размер бинарника hello_world.exe>более двух меговХули тут так много?Я думал этот язык специально сделали на замену дидовских крестов, а оказалось совсем не так.
>>690030Попробуй #![no_std] https://doc.rust-lang.org/book/no-stdlib.html
>>689700А mio уже годен? Сравняется по производительности с nginx?
>>690148Это библиотека ввода-вывода, ущербное.
>>690155Я понял.
>>690030Всё повязано на libc со статической линковый. На линуксе пилят какие-то васяны отдельную привязку к musl, там в несколько кб можно обойтись. Но там вообще отдельная библиотека.
>>690148Я его больше года назад последний раз тыкал, так то работало все, это просто обертка над epoll.Но api было по стандартам раста довольно ущербное. Сейчас есть поверх него всякие обертки, посмотри, повыбирай. На crates.io просто в поиск mio вбей, там всякие mioco, rotor и т.д.
>>690030Попробуй C скомпиль статически с libc.
>>690559>C скомпиль статически с libcЭто опасно же. Подключишь длл, а там, допустим, маллок по другому реализован.
>>690564Я просто оставлю я здесь.
>>690570А можно скомпилить статически только то что используется в проге, без всего лишнего?
>>690633С glibc, вероятно, нельзя.
>>690633Тебе это зачем? Ты прогу дискетами распространять собрался? Для микроконтроллеров все равно std не подходит, для них и исполняемый файл получается копеечный.
А в будущем планируется автовывод типа, а то как-то печально без этого. Или четкие чуваки сразу правильно пишут все эти обвесы из Box<<T>>>>?
>>691688Ну а сам-то ты как себе это представляешь? Напиши хоть псевдокодом что именно ты хочешь.Если я тебя правильно понял – чтобы всё боксилось и тд автоматически – нет, слишком крутая абстракция для низкоуровенного языка, лишняя магия. Разве что как плагин для компилятора что вообще, как мне кажется, очень хуёвая фича – если язык выстрелит все начнут писать на своих диалектах раста, как в мире хачкеля.
>>691695Ну я просто в контрраст статьях натыкался на такие истории: "Писал писал, потом не скомпилировалось потому что нужно боксануть, а потом туда, а потом еще это, в итоге нужно в десяти местах поменять тип". А так везде бы писался var и было бы нормально. Почему сильно крутая абстракция, в це++ есть аuто.
>>691723Блядь, ты дурак, мозга мне выебал. В расте есть вывод типов все переменные, внезапон, имеют синтаксис вида let hui = Box(Hui::new());, только он не спасает от такой хуйни никак.
>>691728Знаичт я читал очень старые посты. А чего мозг сломался то? ты же словил эксепшн?
>>691730Дело не в постах, а в том что люди которые их писали не осилили шаблоны. Без них не в плюсах, ни в расте нормально редактировать обобщённые функции/прототипировать что-то то ещё удовольствие.Эксепшенов в руст низавизли((
>>691737>Эксепшенов в руст низавизли((Ну как в go, только без мерзких кортежей, а со вполне ясным Result
>>691737> Эксепшенов в руст низавизли(( Как будто что-то плохое. Пердолится с отловом эксепшенов в мультипоточном коде не очень приятное занятие.Пагни вообще охуенно сделали. Если дерьмо случилось, но не критично и вполне планово - return Err("Не получилось"). А если критичная ошибка, то panic!("НАЧАЛЬНИК ТУТ ПОТОК РАСПИДОРАСИЛО")
>>691835> ПердолитЬся (что делать?)Самопочин
Тут растономикон перевели, вдруг кому пригодиться.https://github.com/ruRust/rustonomicon
>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 teamhttps://internals.rust-lang.org/t/announcement-jonathan-turner-joins-mozillas-rust-team/3278
>>697271Насколько я понял, проблемы с памятью у Rust из-за того, что mem::forget не помечен как unsafe? Ну допустим похуй на unsafe. Почему деструктор то не вызвать?Чтобы была возможность стрелять в ногу, очевидно же!
>>697484> Почему деструктор то не вызвать?Потому, что он нужен именно для того, чтобы не вызывать деструктор.
>>697484Он не помечен, потому что, а хуй его знает почему. На самом дело много дискуссий на эту тему, но в итоге пришло к тому что вызов деструктора в расте не гарантирован, а утечки памяти не нарушают memory safety. И что можно воспроизвести поведение mem:forget и без него, не использую при этом unsafe.
Вот, даже нашел https://github.com/rust-lang/rust/issues/24456Как раз из за этого говна scoped треды из std вырезали.
Ну, собственно, это цикличная ссылка в Rс.Создаешь Rc, счетчик внутри равен 1. Делаешь клон Rc, счетчик становится равным 2. Кладешь клон Rc в себя же.При выходе из скопа в первоначальном Rc уменьшается счетчик и становится равным 1. Проверяется, что счетчик не 0 и деструктор не вызывается. В итоге содержимое навсегда зависает в памяти.
>>697565НЕ ОСИЛИЛ@ВЫПИЛИВАЙ ФИЧУ
>>697566Мне кажется это уже особенность самих указателей с счетчиком. В C++ вместе с shared_ptr завезли weak_ptr, чтобы циклы разбивать.Хватит терпеть циклы! Даешь УМНЫЕ умные указатели!
>>697629>>697566Ну так тут тоже weak и strong есть. Или они чем-то различаются от c++'ных?
>>697636Weak есть в Rust. У них поведение с плючами идентичное. Rc +1 при клонировании делает, а Weak не учитывается в счетчике.Я к тому, что > 2016> AI подебил в го> утечка памяти из-за циклических ссылокНичего круче счетчиков пока не придумали?
>>697615>>697629Ну так все как в С++, проблема в том что утечка памяти не так страшно, но если forget'нуть scoped тред, то это приведет к дедлоку в главном треде. Поэтому выпилили не Rc, а scoped треды, а forget сделали safe.Но никто не мешает эти же scoped треды с crates.io забрать и пользоваться аккуратно.
>>697704Имхо, помечать forget как safe это идиотское решение. Как минимум из-за RAII. Память, файлы, сокеты, все завязано на этот механизм. И тут на тебе возможность наебать систему.
>>698165Ну сборщик мусора это уже что-то тяжелое. Я имел ввиду додумались ли бородатые дядки до какого нибудь другого умного указателя.Да и сборщик мусора тоже подвержен циклическим ссылкам. Питон до сих пор вроде (http://stackoverflow.com/questions/8025888/does-python-gc-deal-with-reference-cycles-like-this) не может разрубить цикл.
>>698176Он будет медленнее когда у тебя много долгоживущих объектов. Когда куча маложивущих - подсчёт ссылок разорвёт память как полотно и целостность памяти пойдёт по пизде, тут gc выиграет и неоднократно.
>>698185>Когда куча маложивущихПроисходит куча stop-the-world'ов, не? По крайней мере в джаве используют приватную ансейф фичу что бы избавлятся от кучи побочных объектов.
>>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| ]Дефрагментация ?Вроде и память есть, но структуру А уже не добавить.Как такую хуйню обрабатывать? Когда заморачиваться о такой хуйне?
>>698188А теперь представь что из одного источника stop the world у тебя их столько, сколько элементов в массиве.
>>698235Тогда почему языки без сборки такие быстрее языков со сборкой? Тем более наверняка удаление того же массива не по одному элементу, а раз по блоку памяти.
>>698400Потому что перечитай ветку сообщений, вася. Есть конкретная ситуация где гц быстрее подсчёта ссылок – и всё, я не писал что это манна небесная.
> https://doc.rust-lang.org/std/rc/> Destruction is deterministic, and will occur as soon as the last owner is gone.>>697564> На самом дело много дискуссий на эту тему, но в итоге пришло к тому что вызов деструктора в расте не гарантирован>> вызов деструктора в расте не гарантированРазрабы раста ловко себя обоссали.
>>698530> as soon as the last owner is goneНу так всё верно. Просто the last owner не может быть gone, если Rc владеет сам собой.
Есть Iron юзающие тут?Есть вопрос по составлению View. Я сам избалованный MVC-ребенок, и мне интересно как вы решили проблему генерации View. Суть такова, что есть SPA, который возвращается при заходе юзера на домашнюю страницу, и API, который дергается из SPA/другого клиента. Нужен какой-то темплейт движок, который это добро рендерить будет. Какие middleware лучше подключить? У меня ощущение, что либы еще достаточно сыроваты для сириуз бизнеса. Постоянно что-то недоделано, кривовато
>>7016341) Да, как и сам раст находящийся в разработке до сих пор.2) Для сириус бизнеса в принципе-то юзать можно, только явно не для веб девелопмента. Какой гибудь плагин для nginx написать подойдёт идеально, делать на нём весь бэкэнд – пустодроч.
>>701866Я думаю, переписать уже готовый бэкэнд на раст довольно тривиально. А вот с нуля писать это пока что такое себе. Тем более при нахождении всех вэб либ в глубокой преальфе.
>>703271Если сравнивать со скриптовыми и управляемыми языками доминирующими в этой области - нихуя не тривиально переписать это всё, а потом ещё искать того кто всё это говно поддерживать будет.Чо сразу на C++ то не переписать сайт-то? Там с поддержкой и преальфой библиотек проблем нет, лол.
Обновил Racer и он прямо раз в 10 быстрее стал (прошлый раз собирал в Январе). Но размер всё ещё огорчает. Он стал меньше на 400 кб но 30.9 мб это всё равно как-то не очень. Хотя я не обновлял сам раст, может так-то меньше.
>>708262Ещё бы он хотя бы начал нормально видеть импотры с макросами - цены бы ему не было.
>>708262>30.9 мб это всё равно как-то не оченьТерабайты на харде копейки же стоят, не?
Там у них так не бомбит, что регулярно пишут мантры на эту тему.http://huonw.github.io/blog/2016/04/memory-leaks-are-memory-safe/
Есть какой-нибудь достаточно простой способ получить рандомное значение из enum?
>>711409https://crates.io/crates/enum_primitive
>>711467Спасибо. Хотя хотелось бы чего-нибудь покрасивее, такую хунту я могу и в крестах делать, хотя даже там enum class ввели ради безопасности.
>>639238 (OP)Недавно начал упарываться по расту. Пока всё нравится. Но интересует один вопрос. Можно ли в расте создавать треды (процессы) подобные эрланговским? Чтоб можно было несколько тысяч запустить и обмениваться сообщениями с ними. Я так понимаю что если обычные треды создавать в таком количестве, то операционка может вмешаться и прикрыть это дело, или я ошибаюсь?
>>711546Приветствую.http://devdocs.io/rust/Рекомендую в закладки добавить, если ещё не сделал. Там можно закачать всё и хранить автономно в браузере.По твоему вопросу. Обмен между потоками можно осуществлять через вот это:http://devdocs.io/rust/std/sync/mpsc/indexПомимо этого, в crates можно найти и иные решения по каналам и потокам.Стандартно на данный момент нормальных легковесных не предусмотрено.Изначально назначение языка как раз и было
>>711943Ой, не дописал.Изначально назначение языка как раз и было на эту тему, само название Rust идёт откуда-то там из биологии и связано с данной темой.Но пока приходится ограничиваться системными потоками.
>>711945Говоришь так будто сожалеешь, если бы грин треды оставили как часть языка, то у нас был бы совсем другой ненужный rust. А так мы получили такую-то няшку, к тому же почти ничто не мешает запилить рантайм для грин тредов, просто никто еще этого не сделал.https://github.com/rust-lang/rfcs/blob/0806be4f282144cfcd55b1d20284b43f87cbe1c6/text/0230-remove-runtime.md
>>711945> само название Rust идёт откуда-то там из биологииОт ржавчинных грибов же.
>>712241А что в этих грибах связанного с тредами?
>>712251Они нативные.
>>712256Но в расте были не нативные треды.
>>712251Надёжность и распределённость.
>>712256>>713453Сук, трллте мня?
>>713555Сасай))
Где можно почитать release notes новой версии раста?
>>716753https://github.com/steveklabnik/blog.rust-lang.org/blob/1.8-announcement/_posts/2016-04-14-Rust-1.8.mdВ блоге почему-то не вывесили еще.
>>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.Вот это заебись.
>>716834Уже вывесили.http://blog.rust-lang.org/2016/04/14/Rust-1.8.html
Мне вот интересно, когда они через 4 месяца дойдут до 2.0, то точно так же выпустят обещанный апдейт без нихуя, кроме пары замороженных апи?
>>7182071.10 же, не?
>>718209А сразу использовать нормальную версионировку, а не издеваться над системой счисления.
>>718211Ну так они и используют. В каждой версии ведь что-то добавлено кроме багфиксов.Всё по semantic versioning.
>>718307Хз что за семантическое версионирование, но для моего парсера в мозгу цифры 1.1 и 1.10 идентичны (как и 1.10000 и тд).Кроме багфиксов ещё баг/фича-фиксы в языке.
>>639238 (OP)Наверное очень популярные вопрос среди тех кто знакомится с растом. Поясните за параметры времени жизни.Вот пример:struct Customer<'a> { car: Option<&'a Car>}>Теперь компилятор будет знать, что у экземпляра структуры Customer время жизни должно быть таким же как и у экземпляра структуры Car или меньше.Почему компилятор не может сам автоматом подставить эти параметры? Все примеры, что я видел - какие-то слишком очевидные, более того, я когда писал свой небольшой код - нигде не ставил параметры, и компилятор ругался "ставь их", и я просто наставил везде и прога скомпилилась и работала верно. Почему компилятор не может за меня это делать? Я подозреваю что есть какие-то более неочевидные случаи использования параметров времени жизни. Может приведет кто пример?
Ньюфаг вкатывается в тред,Есть С-функция которая возвращает "%звездочка%const c_char" который нужно преобразовать в строку, как проверить возвращаемое значения на null pointer?Вот что намудрил: https://ideone.com/FnH1jnПример 1: Крашится если c_function возвращает указатеть на null или возвращает корректное значение.Пример 2: При null указателе возващает дефолтное значение "is_null_value" иначе всегда пустая стока.
>>718627Растономикон читал?
>>718727Только rust book осилять начал.
>>718739Тогда пока не лезь в unsafe и ffi. Как прочитаешь rustbook и разберешься с основами, можно начинать читать rustonomikon, там как раз то что тебе нужно, более глубокое погружение в язык и небезопасные возможности, без которого нормальную связь с библиотеками на других языках не осилишь.https://doc.rust-lang.org/nightly/nomicon/https://github.com/ruRust/rustonomicon
>>718314Наркоман? Током ебнуть?Версия это не вещественное число.1.10 != 1.1И как твой мозг представит 0.21.3 ?
>>718374https://doc.rust-lang.org/book/lifetimes.html#lifetime-elision
>>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>}
В чем ваши хваленые zero-cost заключаются, если для того чтоб что-то в куче создать, надо Box::new(x) делать, причем x - вначале появится на стеке, а потом будет в кучу перемещен? Придется свой какой-то велосипед с использованием unsafe использовать, как это сделано в реализации Vec, иначе бы мы охуели создавать в стеке вектора по миллиону элементов и потом копировать в кучу их часами. Но если всё заканчивается unsafe, то нахуя нужен раст?
>>718981или наслаждаться переполнением стека
>>718981zero-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
>>719021И вот еще ссылочка.https://doc.rust-lang.org/book/box-syntax-and-patterns.html
>>719021То есть box однажды появится в стейбл версии. А в чем конкретно проблема? Что не поделили они там? Такое ощущение что проблемы на стороне LLVM.
>>719223Там довольно много чего не устоялось.Вот tracking issue: https://github.com/rust-lang/rust/issues/22181
Какая альтернатива синглтону в расте? Как я понял реализовать то его можно, но это не идеамотично. Таскать контекст по функциям?
>>721551Та же что и в других языках, например, dependency injection, service locator.
Аноны, есть что-нибудь по Rust на великом и могучем? Ангельский знаю не очень хорошо, поэтому хотелось бы для начала почитать на русском, чтобы понять основные концепции так сказать, а потом и за приведённые в шапке книги взяться можно будет
>>722502Есть перевод rust book https://github.com/ruRust/rust_book_ru и rustonomikon https://github.com/ruRust/rustonomicon
Изучаю rust уже пару недель, но так и не могу понять почему внутри скопа матча, х = с, документацию читал, но въехать не могу, объясните на пальцах, почему так получается?код:let x = 1; let c = 'c'; match c { x => println!("x: {} c: {}", x, c), } println!("x: {}", x);вывод:x: c c: cx: 1
>>722620Текущий скоуп перекрывает имена родительских скоупов. в данном слуае в матче у тебя x => .. этот икс перекрывает тот икс что let x = 1;
>>722636это понятно, но откуда у x значение с, где оно присваивается? Ведь если через оператор => присваивается вывод println то в x будет совсем не c
>>722643Потому что паттерн матчинг так работает. У тебя в паттерне переменная, что говорит компилятору "возьми то, что я там пытаюсь заматчить и сделай так, чтобы оно называлось именем этой переменной".
>>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 хоть и не совсем то.Короче, перечитай еще раз главу про паттерн матчинг.
>>722755> Короче, перечитай еще раз главу про паттерн матчинг.Спасибо, походу и правда надо еще читать дальше растбук, всеровно еще есть не до конца понимание
>>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
Когда книга уже выйдет где более подробно будет всё рассказано чем в the book?
>>724009Rustonomicon где-то переводили, там все узкие места и всё про ансейф облизано 10 раз.
>>724017Думаю он не это имел ввиду.
>>709630Перевелиhttps://habrahabr.ru/post/281370/
CoLaboratory: Rust - конференция о Rust в Москвеhttps://rustycrate.ru/новости/2016/04/25/colaboratory-rust.html
http://blog.rust-lang.org/2016/04/19/MIR.htmlМир, короче, всем.
>>729519Тоже видел это. Прямо семимильными шагами к светлому будущему движемся.
>>729519А я уж думал каноникал решили мир на расте переписать, ну вот.
>>676017http://benchmarksgame.alioth.debian.org/u64q/performance.php?test=fastaВсем привет от колобка, ЛАЛки!
Почему вот так работает:https://play.rust-lang.org/?gist=ea7718d84b14fa6c76fb013afa9ff358&version=stable&backtrace=0А так не работает?https://play.rust-lang.org/?gist=d73bd8ced4a8b434d36c75a25151d608&version=stable&backtrace=0
>>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.
>>734923Да уже потом понял, что тупанул.
>>734923Тут даже вопрос не в функции, а по механизму заимствования.Потому что drop пустая и я от неё ничего не ожидал больше, чем от какой-либо другой функции.pub fn drop<T>(_x: T) { }А вот то что заимствования не освобождаются при передаче в функцию - в этом я ступил. Обычно же его передаешь как-нибудь так:https://play.rust-lang.org/?gist=335ae238f07ac3d8c94c5d8399eba014&version=stable&backtrace=0И не задумываешься об этом.Спасибо за наводку.
>>652293>Очень далеко, ничего интересней простеньких демок не завезли.нихуя себе простенькая демка, 500fps при анимации сотни дивов с тенью https://youtu.be/erfnCaeLxSI?t=125
>>738694Когда двачик нормально рендерить сможет?
>>739246У них текущая цель - чтобы 5 сайтов конкретных более-менее отображалось.
>>738694Наверно потому, что он на гпу всё рендерит?Я посмотрю как его на телефоны/ноутбуки будут проталкивать, это ведь дикий ++ по энергопотреблению.
>>739579Еще кто-то рендерит не на гпу?
>>739579Все на гпу рендерят. Просто гекко и вебкит не настолько "глубоко" это делают.
Котаны, быдло-эмбеддер в треде.Появился интерес к изучению сабжа, вот только есть небольшой анальный зуд на многие термины типа "лямбда-функции", "hashmap" и прочее.Где лучше всего читнуть про это, чтобы вкатываться в язык уже подготовленным?
>>740113Нигде не читай заранее, в любом учебнике всё описывается подробно, там ничего сложного нет.Ну или можешь гуглить аналоги на няшной (или какой у тебя там основной язык), я так часто делаю когда не понимаю сати какого нибудь паттерна.
228 пост ИТТ.
>>740115>сатиСути.
>>740115Так может паттерны и читнуть разом? В планах тоже было.
>>740133Если планируешь явамакакой работать – читай. Я ирл вне явы сталкивался только с визитором и синглтоном, сомнительная польза от их знания.
>>740146Чтобы знать, какое говно мне пригодится, а какое - нет, надо хотя бы минимально в них разбираться.А то как начал читать тред или смотреть описания языка, так натыкаюсь на всякое абстрактное говно, которое не знаю.Меня просто интересует альтернатива С, да и в целом развиваться надо. Всякие ООП и прочее в моей области редко нужны.
>>739246=> >>681371
>>740113http://rustbyexample.com/ же.
>>740113Наверное книги по сипп читать лучше. Там полно инфы на русском. А в доках Раста все на английском. Алсо вот про эмбедед https://zinc.rs
>>740519Ангельский для меня - не ограничение, иначе хуевый бы из меня был эмбеддер, в смысле ещё хуевее, чем сейчас.Читну, спасибо.
Может кто в курсе, как собрать приложение без привязки к терминалу под виндой? Создаю окошко с помощью glutin, но при запуске кроме него открывается и терминал.
>>740762Гуглимо: http://stackoverflow.com/questions/29763647/how-to-make-a-program-that-does-not-display-the-console-window
>>740762Просто пропатч бинарник после компиляции. Там один байт всего поменять, по-моему.
поясните про биндиги к си коду. я вот хотел embed базу данных использовать, типа sqlite, но нихуя не понял, мне что нужно отдельно си код ктмпилить? или ставить в окружение что-то?
>>744537Бляяять. Ты из скриптопараши/явадотнетов вкатываешься чтоле?Если у тебя нет бинарника – да, тебе в любом случае придётся его собирать отдельно. А потом нужно просто импортировать экспортируемые бинарником функции, как в экземпле, всё.
>>744545лол, канешн самые компилируемые языки были у меня это typescript и coffeescript. я прост не понял почему у меня flate2 скомпилилось само, хотя там тоже код на си. как различать биндинги на внешний код от биндингов на си код который идёт в комплекте?
>>744589>я прост не понялВ таких случаях нужно ковырятся в проекте.https://github.com/alexcrichton/flate2-rs/blob/master/miniz-sys/build.rs#L6Вот так хитро он сам компилирует свои сишные зависимости.> как различать биндинги на внешний код от биндингов на си код который идёт в комплекте?Биндинги - просто объявления функций обрамлённые в extern. Раст не си/плюсы, и тут неимпортируемый код всегда пишется там же где объявляется.
А что-нибудь известно про box синтаксис? Я его сейчас много использую, но он нестабилен, Вдруг закроют?
>>744977усмысле? Box::new(hueta) - обёртка которая сразу кладёт в кучу?
А что там с гуем, посоны? Что-нибудь новенькое появилось? Или всё так же старый-добрый пердолинг с Сишними апями через unsafe и самописные костыли? QML-биндинги расто-сообщество так и ниасилило портировать (а ведь они есть и с сишными апи)?А как там интеграция с C++? Шаблоны с енумами вызвать из раста без ручного unsafe байтоёбства (который сломается после первого обновления шланга) хоть как-то можно?А то сейчас пишу на F#+WPF, а хочется попробовать что-нибудь функциональненькое и одновременно скоростное (и с няшным гуем). Но видимо расту ещё до этого срать и срать.
>>745355https://crates.io/search?q=gtkhttps://crates.io/crates/qmlrs
>>745355>Шаблоны с енумами Ааа блять, не пиши хуйни. Шаблоны с енумами остаются в компайлтайме, разница в манглинге у разных компиляторов и тд – это говнище не стандартизировано, и его никогда не получится импортировать никуда нормально. Даже в D их интерфейсить не получилось (это такие рефакторнутые плюсы, если чо).>Но видимоНо видимо ты плохо понимаешь зачем нужен раст. Пишешь гуй – используй высокоуровенный язык. Не еби мозги себе и окружающим.
>>745380> https://crates.io/crates/qmlrsНеполноценное альфа-дерьмецо. https://github.com/cyndis/qmlrs/issues/43> https://crates.io/search?q=gtkА вот это уже лучше. Надо будет глянуть.>>745398> Ааа блять, не пиши хуйни.Что не пиши? Раст без дикий костылей вообще половину шаблонов С++ не осиливает (хотя учитывая, что эти сами шаблоны и есть костыли, то всё нормально). Или C++ библиотеки нинужны?> Но видимо ты плохо понимаешь зачем нужен раст.Для чего же? Хоть ORM или аналог LINQ завезли? Или базы данных тоже нинужны, а нормальные посоны ебашат чистым SQL?
>>745398Нахуя это ваше говно нужно?Поясни уж.
>>745408> Хоть ORM или аналог LINQ завезли?https://www.rust-lang.org/> Rust is a systems programming language > ORM> LINQ
>>745408>Раст без дикий костылей вообще половину шаблонов С++ не осиливаетПовторюсь: ты не понимаешь как эти шаблоны в крестах работают и, видимо, не умеешь читать.>Или C++ библиотеки нинужны?Ну сразу видно ни разу не писавшего на плюсах. Абсолютное большинство библиотек (та же Qt) их вообще не используют низачем, кроме как ради своих контейнеров.>Или базы данных тоже нинужныБери высокоуровенный язык и ебашь гуи с крудами на нём. На расте ни ORM, ни LINQ адекватных аналогов нету и не будет. А ещё memory-safety модель языка будет тебе только мешать писать подобные вещи.
Ахуеваю конешн от туповатости хипсторов. Боженьки из мса им дали язык, с неебической платформой для гуя из коробки, ради него же добавили в язык асинхронность и даже специальную версию сборщика мусора. Им дали линк для быстрого шлёпанья крудов. Им дали мл на дотнете, назвав фшарпом – они всё равно ползут в мир низкоуровенного программирования и спрашивают чо там по гую.
http://diesel.rs/
>>745540> Бери высокоуровенный язык и ебашь гуи с крудами на нём.Т.е. раст вообще ни для чего нинужен? Зачем тогда эти дибилы с мозилы делают на нём браузер?> А ещё memory-safety модель языка будет тебе только мешать писать подобные вещи. Что-то уровня: А ещё type-safety будет тебе только мешать писать подобные вещи. от любителей javascripta и прочего подобного дерьмеца.
>>745542> неебической платформой для гуя из коробкиВ .NET Core, кстати, весь гуй уже выкинули (для кроссплатформенности). А что там будет с .NET Framework не совсем понятно. Может от него вообще откажутся (а может наоборот откажутся от кора). WPF (а уж тем более формочки) уже сейчас считается устаревшим, да и работает только на винде. Предлагаешь гуй на html+css лепить и таскать с собой вебкит для рендеринга?
>>745525> ORMORM даже на плюсах есть. Хотя с кем я разговариваю. Тебе же ничего нинужно кроме байтоёбства.
>>745798> нет гуи с крудами> раст вообще ни для чего нинуженТы тредом ошибся, маня.> Зачем тогда эти дибилы с мозилы делают на нём браузерИ конечно, мозилы будут писать нотариально заверенные письма о своих намерениях дауненку с двощей, который1) не может погуглить 2) не может скачать IRC клиент, зайти на канал разрабов раста и спросить.Но давай ты сейчас попробуешь включить мыслительный нерв и порассуждать:У мозилы возникли некоторые проблемы с C++ в фуррифоксе -> нет нормальной замены C++ с решением существующих проблем -> решили создать новый язык для решения существующих проблем.> Что-то уровня: А ещё type-safety будет тебе только мешать писать подобные вещи. от любителей javascripta и прочего подобного дерьмеца. Теперь точно можешь пиздовать отседова, так как сразу видно что с borrow-checker ты не сталкивался.
>>745812> impying ORM на C++ такая уж важная вещьХотя крудошлепу вроде тебя это очень важно.Если бы не был таким долбоебом, то мог бы уже найти http://www.arewewebyet.org/topics/database/ где ясно что ORM так то разрабатываются, но еще сырые.Так что соглашусь с аноном выше.> Но видимо ты плохо понимаешь зачем нужен раст.
>>745820Ой-ёй, кокой ты злобный. С твоих слов раст это вообще какой-то волшебный язык, всё чего нет - абсолютно нинужно. Во как. Фанбойство? Или магия языка программирования?> Теперь точно можешь пиздовать отседова, так как сразу видно что с borrow-checker ты не сталкивался. Ой всё. Видимо ты сам туповат, если borrow-checker для тебя вызвало хоть какие-то проблемы, хотя в интернете всё это по 200 раз разжёвывается для самых тупых (вроде тебя). А на расте я писал ещё с бета-версии. И вижу, что пока кроме улучшенного высокопроизводительного байтоёбства в нём ничего и нет. Хотя нет, вот хоть асинхронный HTTP-сервер завезли[1] (13 часов назад, гы-гы-гы), прогресс на лицо. Хотя ты даже что такое асинхронный HTTP-север не знаешь. И день назад бы утверждал, что он абсолютно не нужен в таком языка программирования как раст.[1]: https://github.com/hyperium/hyper/pull/778
>>745836> С твоих слов раст это вообще какой-то волшебный язык, всё чего нет - абсолютно нинужно. Наркоман?Я говорю что раст в первую очередь создан мозилами для своих проектов. Все остальное пилится силами сообщества.> Видимо ты сам туповат, если borrow-checker для тебя вызвало хоть какие-то проблемы,А теперь ты кидаешь ссылку со своей реализацией LINQ или хотябы ORM.> А на расте я писал ещё с бета-версии...> мам мам сматри я олдфак тралю нюфагов
>>745820>У мозилы возникли некоторые проблемы с C++ в фуррифоксе Заебись оправдание неосиляторству.
>>745844> А теперь ты кидаешь ссылку со своей реализацией LINQ или хотябы ORM.Но зачем? Это мне для домашних проектиков нужно. А то у очень больно смотреть как даже после обработки ngen'ом .net-приложение порой тормозит. Но видно не судьба. Самому писать лень, очевидно же.Хотя вот уже делаю биндинги поверх [1]. Правда вряд ли я этим поделюсь с сообществом, потому что вангую, что полученный код будет невероятно уродлив (а может и не будет).> > мам мам сматри я олдфак тралю нюфаговНикто тебя не траллит. Просто я действительно не понимаю, что там может быть сложного.[1]: https://github.com/filcuc/DOtherSide
>>745848Ну куда ж мозилле до анона с двощей. Вот он бы им все правильно сделол.
>>745848> Мозилла - единственная более-менее крупная компания, у которой хватило яиц навести порядок.
>>745851А теперь смотри:> Хоть ORM или аналог LINQ завезли? > memory-safety модель языка будет тебе только мешать писать подобные вещи. > Что-то уровня: А ещё type-safety будет тебе только мешать писать подобные вещи> сразу видно что с borrow-checker ты не сталкивался. > ты говно - я Д`Артаньян> покажи свой LINQ \ ORM> Это мне для домашних проектиков нужно> pic relatedОк. Ты победил.
>>745856Тащем-та тот же гугл гораздо больше языков программирования создал, чем мозилла. Даже пытался няшный дарт протолкнуть, но веб-макаки отказались от ЯП, который имел слишком слабый запах говня, и остались верны старому доброму яваскрипту. Да и вообще сейчас любая более менее крупная ит-корпорация обязательно создаёт свою OS (на базе андроид), свой ЯП (самый-самый быстрый, обычно поверх JVM), свою бд (для верибиг-дата) и свой бев-фреймворк (который почти не тормозит). Просто раст выделяется из этого всего тем, что это системный язык.
>>745858А что на домашних проектах нужно обязательно страдать и байтоёбить? Даже немножко абстракций и сахарку низзя?
>>745861> страдать и байтоёбитьЕще раз блять повторяю. >>745525Почитай определение системного программирования.Хочешь сахарку - ищи другой язык\платформу. Раст для тебя еще сырой.
>>745868Системное программирование и сырой это разные вещи. Раст попросту сырой. Отсутствие некоторых фич к какому-то там волшебному системному программированию, которое видимо летает над языком и уничтожает все абстракции ещё до того как они появятся, не имеет никакого отношения.
>>745870Раст не попросту сырой.В стандартной поставке нет средств ORM и LINQ потому что rust - системный язык.Дизайнерам было похуй на крудоблядков, потому что язык предназначен для другой аудитории.Сырой он в плане того, что либы сырые, что очевидно.Вот здесь и переплетаются две разные вещи, понять которые ты не способен.> волшебному системному программированию... бла бла бла...У тебя батхерт какой-то. Иди обмажься C#. Ах да > А то у очень больно смотреть как даже после обработки ngen'ом .net-приложение порой тормозитУ мсье просто руки из жопы, что круды тормозят, вот он и изливает тут душу, что в другом языке нет нужных ему фич.
>>745349имеется ввиду box zalupa, допустим деалем матч и паттерн Huita(box zalupa) => {...}, говорит о том что zalupa обернута в бокс. Очень удобно.
>>745878> В стандартной поставке нетИ не должно быть. Только это не из-за того что он системный.> У тебя батхертУ всех баттхёрт кроме тебя.> У мсье просто руки из жопыПрост ты никогда не работал с нетом. И да мне просто интересно было узнать как там у раста с гуем и базами данных, а в ответ только "кудах, нинужно, мозилла лучше знает, системный язык, а чего добился ты".
>>745888> Прост ты никогда не работал с нетом.Обосрался, маня. 4 года на asp.net крудошлеплю. Был в стартапе со спагетти-кодом - ничего не тормозило. В студенчестве писал диплом решал систему дифуров - числодробилка слишком громкое название - ничего не тормозило.> И не должно быть. Только это не из-за того что он системный.Тогда вопрос > Для чего же [нужен раст]? Хоть ORM или аналог LINQ завезли?решен.> У всех баттхёрт кроме тебя.Нет ты.> "кудах, нинужно, мозилла лучше знает, системный язык, а чего добился ты"Пиздоглаз или жопочтец?> Я говорю что раст в первую очередь создан мозилами для своих проектов. Все остальное пилится силами сообщества.Хитрые маняврирования:> И да мне просто интересно было узнать как там у раста с гуем и базами данных> Зачем тогда эти дибилы с мозилы делают на нём браузер> pic related[1]
>>745905> 4 года на asp.net крудошлеплю.> мам мам сматри я олдфак тралю нюфагов> Был в стартапе со спагетти-кодом - ничего не тормозило.Очевидно, ты не писал десктопные приложения, сложнее, чем решалка системы диффуров.> Тогда вопрос решен.Действительно, мозилла и сообщество сказали нинужно, значит нинужно.> Пиздоглаз или жопочтец?> Приводит аргумент >мозилла лучше знает< из списка.Да ты у нас сам тот ещё жопочтец. Попу хоть после проигрываний вытираешь?
>>745916> Приводит аргумент >мозилла лучше знает< из списка.> Я говорю что раст в первую очередь создан мозилами для своих проектов. Все остальное пилится силами сообщества.Мозилла не юзает эти технологии. Коммюнити пилит либы. Где ты тут увидел "мозилла лучше знает"? Дерьмо с глаз убери, мудила.> Попу хоть после проигрываний вытираешь? Твоими руками подтираю, благо их кривизна идеально охватывает межягодичное пространство.> Очевидно, ты не писал десктопные приложения, сложнее, чем решалка системы диффуров.Очевидно, ты не писал %everything else%. Хотя какая разница, сразу видно твои познания, если ты ноешь тут про недостаток ORM и LINQ в системном языке, и гонишь на мозиллу, которые этим языком решают свои проблемы.
>>745931> системном языкеТы так и будешь продолжать повторять эту мантру? У тебя кроме раста и ассемблера системные языки вообще есть? Или отсутствие библиотек это у нас теперь новый признак элитарной системности?
>>745939Ты какой-то дурашка, серьёзно. Тебе 21 раз сказали что это системный язык (читай для хуйлоад сервисов, риалтайма и прочего) с крутой системой типов, который решает проблемы в своей области, и в крудошлёпстве, где чтобы напороться на решаемые языком проблемы нужно очень постараться он нахуй не нужен. Это не того уровня язык, чтобы шлёпнуть кнопочку, и в контролере прописать запрос к бд одной строчкой. В чём суть твоего истегания говном здеся?другой анон
>>745950> читай для хуйлоад сервисов, риалтайма и прочегоДавай на чистоту. Даже в этих областях он не используется (можешь привести один контр-пример из дропбокса, но ведь больше у тебя ничего и нет) из-за своей сырости. Он не системный в твоём понимании. Никто не запрещает писать на нём всё что захочешь. Он просто сырой.
>>745952Его нигде не использую потому что нет библиотек, писать свою велосипеды вместо использования существующих никому не всралось представь себе, чего стоит перенести хотя бы один рендер любого ААА движка на него, который писался десятками лет на плюсах, в этом направлении - да, он очень сырой, у него даже IDE с базовой навигацией по коду нету. В отличии от Goвна порог вхождения выше => библиотеки появляются очень и очень неспешно.
Stop right there, you bigots.This place is supposed to be free of hate speech.
>>745939> системный язык> мантраОчень смешно. А вообще да, буду повторять. Могу даже ссылку на сайт раста https://www.rust-lang.org/ прикреплять и цитировать > Rust is a systems programming language> Или отсутствие библиотек это у нас теперь новый признак элитарной системности? А вот тут я непонял. Где ты элитарность увидел? В языке нет сахара по твоему вкусу и готовых либ, и он уже для тебя элитарен?>>745952Давай на чистоту. Где ты видел использование С\С++ для крудов? Либ-то дохуя там.> Никто не запрещает писать на нём всё что захочешь.Но они ПРОСТО не подходят для этих задач. Ты просто обосрешься, пока реализуешь нормальный прототип, а потом придется перепиливать из-за изменяющихся требований, чтобы в итоге получить несопровождаемое дырявое говно с уязвимостями типа Heartbleed.
>>746020> Ты просто обосрешься, пока реализуешь нормальный прототип, а потом придется перепиливать из-за изменяющихся требований, чтобы в итоге получить несопровождаемое дырявое говно с уязвимостями типа Heartbleed. Т.е. раст лучше вообще не использовать чтобы не получить уязвимости? Значит уже и сам раст нинужен? Вот это поворот.
>>746025Если у тебя мир заканчивается на крудах с гуем – да, нинужен.
>>746025>и сам раст нинужен
>>746038Но ведь в системных приложениях тоже изменяются требования и там тоже очень важна безопасность. Зачем там использовать такой небезопасный язык как раст?
>>746043Чтобы ты мог смишно жиреть в итт трете)))
>>746045Ну ладно. Странно конечно, даже сами фанаты раста говорят, что он не нужен. Первый раз такой вижу.
>>746025Ты контекст проебал, зеленый.> С\С++ для крудов>>746043> небезопасный язык как растНу это вообще пушка.
>>746057Но ведь ты сам сказал, что раст небезопасен и лучше его не использовать. Причём тут контекст? Если вместо крудов я начну его использовать для системного программирования он волшебными образом станет безопасней и больше никаких уязвимостей написать на нём будет невозможно, я так понимаю? Это у нас определения "языка системного программирования" - язык, у которого магическим образом понижается безопасность если его не использовать для системного программирования. Интересно, а серво - это системное программирование? Мозилловцы знают, что рас у них слишком небезопасен и им лучше вместо браузера делать сразу операционную систему для её, безопасности, повышения?
>>746061поехавший, уходи. у тебя паттерн "я не согласен, значит нужно найти до чего доебаться, ок, я буду брутфорсом перекручивать слова, а когда мне покажется что это достаточно ебанутая трактовка в отрыве от контекста - запощу в тред разбавляя знаками вопросов"если начать пилить велосипеды на каждую хуйню - то будет овер 9000 дырявых велосипедов. а комьюнити ещё не запилило "каноничные" либы, которые дохуя людей смогут ревьюить и контрибьютить. поэтому да, язык молод, но причина что твой васянский код будет хуёвый не означает что язык хуёвый
>>746226Умничка. Теперь ты сам видишь, что "системное программирование" тут совсем не причём. А если подумать ещё чуть-чуть, то можно прийти к выводу, что и для системного программирования его почти не используют из-за отсутствия тех самых библиотек.А ещё, кстати, в расте нет наследования для структур, только для аналога нетовских интерфейсов под названием трейты, да и то в трейтах нет поддержки проперти. Видимо растокодеры (игнорируя кукарекания НИНУЖНО со стороны мозиллы) будут как в жавке писать методы getXXX() setXXX(... value). Из-за этого, кстати, в лоб биндинги для Qt и не напишешь. Хотя макросы, да, шикарны. Это вам не сишные дефайны, тут все серьёзно.
>>746246я не тот анон с которым ты спорил, лолиз того что он "для системного программирования" выходит только то что у него нет жирного рантайма с GC и прочим оверхедом. т.е. на нём МОЖНО писать низкоуровневые штуки, которые обычно пишут на С/С++. больше ничего это не значит, на нём так же можно писать серверы с крудами и десктопы с гуями
Ну что же вы, растаны. Какие рода проекты колотите на расте?
>>749296я вот пилю ebaltvoymamku-rs
>>749303Attaboy
Как в Расте заюзать СИшную либу?
>>751121https://doc.rust-lang.org/book/ffi.htmlНо лучше найти готовые биндинги.
>>751121https://github.com/crabtw/rust-bindgen такая вот хрень еще имеется
>>751121https://crates.io/Здесь поищи привязки, для большинства известных библиотек должно быть. Обычно у них к названию приписывается sys.
1.9> Controlled unwinding> Compile time improvements> Rolling out use of specialization> Cargo can now be run concurrently.
>>754902https://github.com/rust-lang/rust/blob/master/RELEASES.md> Cool! :skull: to the ".to_string()" is slow memes!
>>755085Выглядит, как с++ моча. консультант мимо проходил
>>755086Я просто нуб, но расстроился когда дошел до этой главы. Для меня выглядит как обфускация простейшей функции. Пишут что это хороший стиль. Значит придется учиться такое читать
>>755095Вроде ж сахарок с try/catch'ами в последних версиях уже добавили. Или ещё нет?
>>755097Только RFC приняли.
>>755099Ну знак вопроса уже добавили в раст (с версии 1.9 вроде), а значит тот пример можно переписать гораздо няшнее.
>>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.
>>755197Ну это понятно. А пока пусть растовцы страдают.
>>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]
Ебусь с нечеткими нейросетями. Нужно распараллелить один метод.В чем суть - каждый `Мейкер` принимает на вход сырые данные и отдает обработанные. Причем имеется метод для объединения этих данных.`Завод` дает каждому `Мейкер` одни и те же сырые данные и потом объединяет их и возвращает.Вопрос знатокам - как можно распараллелить это дело? Язык вроде как нацелен на решение таких проблем?
>>758066Ссылку проебал.https://play.rust-lang.org/?gist=d7a9afd0ae73d5107d40c12e28d18b1f&version=stable&backtrace=0
>>758066>>758067> Язык вроде как нацелен на решение таких проблем? Нуу, не совсем. В стандартной библиотеке есть только дубовые одноразовые треды, которые работают только со статическими переменными. Есть пара крейтов, но они вроде как не совсем стабильно. В общем как-то так: http://pastebin.com/gBcQsg9K
>>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)
>>758233> http://pastebin.com/WgKY51bZОй. Не ту ссылку дал. Вот правильная: http://pastebin.com/jThDrPDp
>>758235>>758233>>758183Спасибо анон. Ты охуеннен. Пойду дальше дрочить Rust.Алсо, правильно ли я понял, что к выходу из замыкания в`pool.scoped` будет ожидание завершения дочерних тредов?Где ты научился этой черной магии?
>>758949Угу. Это особенность библиотеки такая. Потому второй вариант и неверен.> Где ты научился этой черной магии?Честно говоря, я просто сам заинтересовался и начал гуглить.
>>758949Алсо, во всех случаях если в дочернем процессе произойдёт ошибка (или в растовом понятии паника), то в обоих случаях произойдёт deadlock. Возможность глобально ловить panick'и добавили только в версии языка 1.9, но пока ещё ни одна библиотека её не использует. Так что избегай unwrap'ов если 100% не уверен в их корректности.
>>745931>Мозилла не юзает эти технологии.Ебать ты конченый. В firefox'e уже переписали несколько компонентов на rust. Dropbox на него переписал тоже несколько компонентов своей инфраструктуры.
>>759191Мозида спонсирует серво с растом напрямую, у дропбокса на расте облачное хранилище – скелет их инфраструктуры.
>>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.Что еще спизданешь?
Не врубаюсь> error: #[feature] may not be used on the stable release channelНо я использую nightly. Что нужно добавить, чтобы нормально воспринимало как nightly?
>>767394Разобрался. В какой-то либе была кастомная сборка и она собиралась не той версией раста.
можно ли уже считать, что rust не выстрелил?
>>767888А ты много знаешь языков, которые "выстрелили" за короткий период времени?inb4: swift; там анальный господин всё порешал.Субъективно, по опросам stackoverflow, у раста есть как минимум большой потенциал в плане желающих им начать пользоваться. Но язык ещё дорабатывается. Доделают MIR, доделают оракл, rustup.Больше всего вызывает опасение отсутствия привязки к C++. Если эту проблему не решат - это огромный минус будет. Отмазки типа "нинужно" звучат убого.Года через 2 приходи - если к тому времени не выстрелит - тогда да.
>>767969раст бы смог, если бы углубился в веб, понимая мейнстрим.А переманить матерых сишников, которые пишут на сяшках по 20 лет, это верх идиотизма
>>767969То есть сейчас нет смысла учить раст, вместо C\C++?
>>768067Наверно в начале веб подразумевался, но из-за Go отказались.Вот сишников пытаться перетянуть - маразм, да. Но они ориентируется на С++ разработчиков и умеренных функциональщиков, наверно.>>768141Одно другому не мешает. Если ты делаешь какие-то свои поделки, то почему бы его не сделать на каком-нибудь хипстерском языке?А для работы - никому не нужно (это норма, рынок очень медленно реагирует на новые технологии). И тупо работать не с чем в данный момент. Есть либы какие-то на разные темы, есть попытка сделать веб-фреймворки, но пока ничего интересного. Iron явно умер, например.
>>768141если для себя, то хоть ассемблер, если с охватом для работы, смотри вакансии, они решают.>>768208Чем их Го то напугал? С вебом они обосрались точно, сейчас такой спрос на шустрые и маленькие микросервисы, что просто просрать это все, надо было еще суметь.Даже на джаве и то пилять всякие standalone приложения, ибо тренд. И можно было вкатится в это все громко.Я не сильно слежу за растом, но по-моему количество сторонников, которые смотрели в его сторону, ранее было больше? Чем они еще отпугнули сообщество? (меня, как уже понятно, вебом).
>>768208>>768337Спасибо что пояснил, анон.
Хуй знает чем Rust кому-то не угодил. Синтаксис-хуинтаксис, а такую охуенную весщь как cargo чет все упускают из виду.1) Прописал зависимости в cargo.toml2) $ cargo build3) ??? (сборка проекта и зависимостей)4) ЗКЩАШЕСам перекатился с плюсов и не хочется уходить
>>768594>Сам перекатился с плюсовВ этом и суть. Я тоже кончил когда первый раз увидел тот же dub в D (с абсолютно тем же функционалом), но менеджер зависимостей есть в любом современном яп.
>>768337Ничего не изменилось, хайпить стали меньше (и хейтеров бампающих этот тред тоже).>просрали вебНе, вась, ну ты совсем ебанутый? Какой веб? Нахуя в вебе язык с борровчекингом, лайфтаймами и прочей низкоуровенной няшностью, когда можно написать то же на пхп/раби/питоне думая только о продукте и не думая мозгами?
>>768603что ты, что ты, я же не про бложики домохозяек говорю, а про отрасль высоконагруженных (да хоть средненагруженных) микросервисов, которые там в кучу зеленых потоках (корутинах) шустро шуршат в вычислениях и не отжирают тонну памяти и проца просто так.
>>768639Тонны памяти стоят заметно меньше, чем команда разработчиков на расте (чем сложнее инструмент – тем выше требуется квалификация и время дл выпуска продукта).Короче – докупить пару серверов всегда легче, если ты не гугл/фейсбук.
>>768642>Тонны памяти стоят заметно меньшеэту фразу до дыр уже затерли те, кто как бы к бизнесу отношения не имеет.А потом из-за них со всяких пхп, питонов нод.жс переписывают на что-то вменяемое.В общем есть ниша эта, не хочу спорить, удачи расту на системном уровне
>>768642Проблема в том, что этот подход ведет скорее не к тормознутому ПО, а к тому что ПО в принципе не работает или падает с непонятной частотой, и никто нихуя ничего поняить не может как все это пофиксить, ребутнули и живем молимся.
>>768664Это ж золотой стандарт легаси! Даже паттерн такой есть: если дёшево падать и подниматься – занимайся этим сколько влезет.>>768663>В общем есть ниша этаВ общем, ты вообще не понимаешь о чем говоришь. Почему по твоему даже гугл свои сервисы пишет на яве (кроме поиска с почтой, разумеется)? Прост))) наверн))))
>>768683Ну ты просто сокращаешь расходы на дев и поднимаешь на операторов. Из пустого в порожнее. В итоге у тебя пятьдесят дешевых ртов, кто умеет зайти в консоль и пару комманд вбить из гайда. А чем чаще падает система, тем чило этих ртов шириться.
>>768683>Почему по твоему даже гугл свои сервисы пишет на яве (кроме поиска с почтой, разумеется)? ну и почему же?
>>768714он наверно имеет ввиду вся джава индус аутсорс.
>>768714Потому что тогда не было раста.
>>768718В гугле - код пишут индусы в аутсорсе?>он наверно имеет ввидувот мне и интересно, что он имел ввиду
Вот есть такой инструменты как Dependency Walker и dumpbin /dependentsКак можно автоматически собирать зависимости в одну директорию (ну, кроме системных), если нужно сделать сборку для распространения?
>>768738То что ты, животное, читать не умеешь, очевидно.Я пытаюсь сказать, что если у девелоперов зарплаты не 30 т.р. – железо в большинстве случаев будет банально дешевле команды ртов.
Помогите, почему peek тут все равно жрет мой токен?https://gist.github.com/anonymous/bdb8e4b640efe1704bf118a058e02df9
>>768747Зарелизили проект, который писали 20 человек, оставили для поддержки только двоих на фиксы и вуаля есть мега-класстер который дороже даже двух этих программистов (даже по расходам на электричество).Я понимаю там аутсорс, вы конвеером код пишите без остановки, но в реале конечный продукт не требует уже мега-кодинга как перед релизом, и не требует маркейтинговой пляски с версиями.А джава это компромисс между с++ и чем-то высокоуровневым (да вообще там тысячи причин, это же де-факто стандарт ынтерпрайза, но я хотел услышать это от тебя чтобы удостовериться понимаешь ли ты о чем вообще говоришь или просто генерируешь пену у рта).
>>768751Переформулируй свой вопрос, пожалуйста.
>>768751https://doc.rust-lang.org/src/core/up/src/libcore/iter.rs.html#3648Уходит внутрь. При нормальном использовании это норм, но если всё время дропать Peekable, то данные съедаются.
>>768754Ты все правильно говоришь, и очень странно что в современном мире стало уже хорошим тоном забивать на стоимость железа и все эти мантры про "программисты же дороже".Для больших проектов важно снижать количество серверов потому что основные расходы - это вовсе не человеко-часы, и даже не стоимость одного сервера, а стоимость электричества, охлаждения, инфраструктуры и машино-места.У эрланга, например, очень немало областей, где его применение очень даже целесообразно. Но аккуратно, потому что такого тормоза еще поискать. Часто люди, которые не сталкивались с масштабированием более, чем на десяток-другой машин, приводят аргументы навроде "зато мы быстро сделали, всё работает и похрену, что машинок надо до 5-7 раз больше — наша работа стоит дороже". Для этого надо ну хоть раз рассчитать хоть какой-то нетривиальный проект вплоть до стоимости электричества и аренды места (или хоть стоек) в датацентре. Даже на одной стойке вот только про электричество эти моменты уже становится существенными
>>768337>Я не сильно слежу за растом, но по-моему количество сторонников, которые смотрели в его сторону, ранее было больше? Чем они еще отпугнули сообщество? В первую очередь тем что заебали все перепридумывать и переделывать.При думали какую-то штуку, обсуждали хуй знает сколько времени - окей, до чего-то договорились, стали делать.Доделали до половины, тут вкатывается новая пиздатая идея эту штуку делать вообще не такой, обсуждение еще на хуй знает сколько времени - окей, начинают ее, еще недопиленную, перепиливать. И так постоянно.
>>768799ну как и с D было, мозгов сделать продукт не хватало, а вот поиграться с кодом - наше все.
>>768822С одной стороны да. С другой стороны, есть вот пример Clojure, где Рич и еще несколько его ближайших соратников пилят язык по ночам под одеялом как им нравится, и всех посылают нахуй. И в результате наиболее активные члены сообщества забивают на Clojure хуй, потому что ни их патчи никому не нужны, ни их предложения, ни даже баг-репорты. "Без вас разберемся". И пока Рич красиво придумывает Трансдюсеры, куча core-функциональности нихуя не работает.Совсем недавно было много обсуждений по этому поводуhttp://ashtonkemerling.com/blog/2016/06/11/my-increasing-frustration-with-clojure/https://news.ycombinator.com/item?id=11883579https://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/
>>768822Ебануктий, у D изначально другая проблема - нехватка людей. Когда его начинали пилить ни у gcc не было отдельного бэкэнда, ни llvm-а не было (он был где-то на диске какого-то студента, ок), авторы были заняты компилятором, при этом хотели более-менее вменяемую стандартную библиотеку с рантаймом - обосрались и у них стало 2 стандартных библиотеки, рантайм до сих пор довольно слабенький (пилит это всё дело 6-8 человек, в свободное время, не считая Александерску, который недавно начал на фултайме над этим работать.>>768828Ну, в кложуре всё тоже не так как в расте. В расте есть сообщество как в плюсах комитет - пока все не придут к консенсусу - будут страдать вообще все, только в отличие от плюсового коммитета любят забивать на проделанную работу. Благо что у них есть спонсора и над языком работают на фултайме.
>>768841>над этим работать.Скобочка ) конешно.>и над языком работают на фултайме.Благодаря чему видно хоть какую-то доделанность.
>>768841Над кложурой тоже работают на фуллтайме, Рич с друзьями в компании https://web.archive.org/web/20140704050611/http://clojure.org/funding> в кложуре всё тоже не так как в растеЯ и говорил что в кложуре ситуация обратная растовой, что имеет уже свои недостатки.>в отличие от плюсового коммитета любят забивать на проделанную работуВот в этом главная растопроблема.
>>768828Одно, под одеялком пилить свой мягкий и плюшевый язык, ласково с ним засыпая по ночам в кроватке, а другое дело сделать продукт, детищем которым будут пользоваться тысячи, а может даже миллионы.В этом и проблемы этих языков, программисты ими тупо играются.
>>768875Чтобы пользовались тысячи и миллионы нужно сделать много чего и вложить дохуя денег.От языка вообще ничего в этом смысле не зависит.Решили бы большие дяди вместо Java подарить миру INTERCAL, хуярили бы все сейчас на INTERCAL как миленькие.
> Rust thread> срач про D и ClosureЧе за хуйня происходит?Подскажите лучше как распространять бинарники. Запилил я например YOBA-AAA-INDIE-игрулю с дохуищей зависимостей которая компилируется час. Как мне теперь распространить этот продукт конечному юзеру? Подойдет ли для этого 'cargo package'?
>>768891> Подскажите лучше как распространять бинарники.Казалось бы, а причём тут раст?
>>768892Вопрос не про сам раст, а про cargo или про инструмент, который решит данную проблему.
>>768896Карго это ж только для исходников вроде. С бинарями каждый ебётся как хочет, разве нет?
>>768769Всё равно непонятно что ты хочешь спросить, честно говоря. Какие данные? Итератор? Структура, по которой идёт итерация? Можешь привести полноценный пример при которых это происходит?
>>768891Тоже интересует. Вот выше нечто подобное спрашивал: >>768746
>>768663Потому что час работы навороченного сервера стоит 20$, а час работы программиста - 60$. Вот когда сервера становятся дороже, тогда и начинают переписывать, но происходит это нечасто и не у всех.
>>768991Тебе говорили уже - возьми и посчитай, и сразу в голове прояснится.Программист твой 8 часов работает, а сервер 24 - привет, уже сравнялись. Даже пока сервер всего один, а программист все еще пилит эту глюкалу.
>>769024Программист работает 8 часов и дальше не работает нихуя, а сервер собирает мусор все время. Плюс веб-макака тоже денег стоит, и не всегда дешевле программиста.
>>769025А ещё веб макака гарантированно быстрее сделает продукт – с его инструментом мозги можно не включать.А ещё веб макаку можно обучить Goвну за недельку от силы, и она с похожец скоростью будет говнокодить, а не думать хули там компилятор ноет про проёбанный борровинг.
>>769026>А ещё веб макака гарантированно быстрее сделает продукт – с его инструментом мозги можно не включать.Макака - это 30% экономии на зарплате, и 300% переплаты на железе.>А ещё веб макаку можно обучить Goвну за недельку от силы, и она с похожец скоростью будет говнокодить, а не думать хули там компилятор ноет про проёбанный борровинг.С этим согласен, раст не нужен, когда есть Go и C++.
>>769028Go не нужен потому есть LuaJIT.C++ не нужен потому что те кто умеет на нем писать, стоят как три мейнфрейма.
>>769035>веб макака гарантированно быстрее сделает нерабочее говно, и можно будет нанять программиста это выкинуть и переписать за втрое большие деньгине благодари, поправил тебя
>>769035Lua динамически типизирован, а стоимость знающих C++ и Rust примерно равна. Кстати, не такая уж она и высокая, на С++-сеньер стоит столько же, сколько и Java-сеньер, например.
>>769039Да, Lua динамически типизирован. При чем здесь это его положительное свойство?Я про сеньёров ничего не говорил. Я говорил про тех кто умеет С++. Их, конечно, больше чем растеров, но только потому что количество растеров равно нулю.
>>639238 (OP)Напомните, в Петухане Куриханыче можно формошлепить, или все печально, как и в Go?
>>769044>При чем здесь это его положительное свойство?Это отрицательное свойство - вместо написания программ приходится писать тривиальные тесты. Впрочем, если тебе это не очевидно, иди нахуй.
>>769050Всё печально. Вроде есть биндинги для гтк, но формошлёпить не получится. Делай как все нормальные посоны: формошлёпай в html и в свою программу встраивай вебкит, который и будет отображать гуй.
>>769053А как с Qt? Там можно рисовать формочки в Qt Designer независимо от языка программирования.
>>769057Нет нормальных биндингов. Есть что-то полурабочее, но последнее обновление крейта с биндингами было 4 апреля, а нового ничего нет.
>>769057был биндинг к qt-qml. может живо еще
>>768945Это не вопрос, это ответ.>>769067Не юзабельно, увы: https://github.com/cyndis/qmlrs/issues/22
>>769053Есть альтернатива, тоже html, но с помощью какой-то другой либы (C-шная). но найти не могу.
https://github.com/habitat-shТе кто пишет описание продукции, они, случайно, не у юристов учатся формулировать предложения?Что эта хрень делает? Это типа докера?
Кто-нибудь пояснит, как пользоваться xml-rs?Смотрю доки, а они там предлагают мне проходиться по всем элементам в документе ЛИНЕЙНО, блядь. Что за обосраное говно? В примере показано, что берется xml документ, и, блядь, ЛИНЕЙНО проходит по всем элементам по порядку, всрав нахуй всю вложенность. Что за пиздец? Почему по-человечески нельзя? Я чего-то не понимаю? Мне что, блядь, парсер xml писать, чтобы распарсить сраную колладу? Как же мне бомбит с этого обосраного говна.
>>769597Ну ты и лолка. StAX это для бааальших хмлок нужно. А тебе нужен парсер с DOM-деревом и возможно поддержкой XPath.Вот что нашёл:https://github.com/shepmaster/sxd-document/https://github.com/shepmaster/sxd-xpath
Вообще, по поводу библиотек лучше заходить на https://github.com/kud1ing/awesome-rust/ и смотреть что есть.
https://www.rust-lang.org/friends.htmlВот такой список всплыл
Подскажите пожалуйста, как определить сколько стоит скопировать объект. По занимаемой памяти и/или времени.Хочу узнать, дорого ли будет делать .copy() на итератор. Но интересно, может есть какой универсальный способ и для других объектов.
>>770482Кажется, я нашел в книге - https://doc.rust-lang.org/book/benchmark-tests.html
>>770482А размер вроде так https://doc.rust-lang.org/std/mem/fn.size_of.html
Какой есть способ не таскать за собой это перечисление.Тут 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"Но что это за ассоциированный статик я не нашел.
>>772048Два часа не мог раздуплиться. Оказалось у Any есть еще методfn is<T: Any>(&self) -> boolReturns true if the boxed type is the same as T
Я все. Может лучше кирпичи таскать
>>773671Зачем тебе вообще Any?
>>769438https://www.opennet.ru/opennews/art.shtml?num=44619
>>769051В языках со статической типизацией тестов, очевидно, можно не писать?
>>774985В статических языках (тем более с адекватной системой типов, а не сишечным стёбом над типизацией) их требуется раз в 8 так меньше чем в динамике.
>>774992Какое смелое заявление. Из него можно сделать вывод что семь ошибок из каждых восьми в программах - это ошибки "перепутал литры с килограммами" (ни от каких других статическая типизация не помогает), что реальности не соответствует.Также интересно узнать, не изменилось ли что-нибудь с момента появления умных тестогенераторов типа QuickCheck (имплементации которого существуют как для Rust - кстати, зачем? в нем ведь тесты можно не писать - так и для динамических языков)?
Банальную опечатку "сложили вместо того чтоб вычесть" и компилятором не выявишь, а ведь именно такие опечатки и важны, задрачивать все типами чтобы ловить prink вместо print - это очень странное времяпрепровождение.> пропатчил сигнатуру у функции, в статике ты компилируешь и фиксишь места, где тебе указал компиляторИспользуем компилятор в качестве grep - ну что ж, отлично, развиите Computer Science наконец-то увенчалось полным успехом.
>>775031>смена интерфейса не превращается в боль (и grep тебе тут не поможет)Обоснуй.
>>774992Тайпчекер может верифицировать программу и доказать ее соответствие спецификациям, но спецификации всегда не полны. Если же спецификации хотя бы близки к полноте, то сложность спецификаций приближается к сложности программного кода - как следствие, в спецификациях будет не меньше ошибок, чем в программном коде. И встает вопрос о том, чтобы верифицировать спецификации - то есть писать спецификации спецификаций. Здесь я вижу один путь - доказывать о программе какие-то отдельные интересные факты. То есть - динамическая типизация с опциональной управляемой статикой, или еще лучше - с системой поддержки контрактов, которые есть как для Lua, так и для большинства динамических языков. Полная же статика - это как колоть орехи микроскопом. Причем тогда, когда микроскопа нет - то есть мы должны для начала этот микроскоп придумать, спроектировать, произвести - и только потом расколоть наш орех. Примитивные системы типов, вроде системы типов хаскеля, и уж тем более раста, не позволяют отловить никаких "интересных" ошибок ("интересными" назовем те ошибки, которые не будут обнаружены на первом же тесте). То есть они, по сути, лишь не дают складывать слонов с телегами - чего явно недостаточно. Когда же мы хотим находить "интересные" ошибки, то приходим к проблемам со спецификациями на спецификации. На практике же мы имеем вполне определенную ситуацию - практически все ошибки подобного характера обнаруживаются при первой же проверке работоспособности кода. 99% незамеченных ошибок - логические, система типов их не ловит. Вот на отладку таких ошибок и следует потратить время, сэкономленное на борьбе с системой типов.
>>775046> Тайпчекер может верифицировать программу и доказать ее соответствие спецификациям, но спецификации всегда не полны
>>775143Будет использовать умные IDE уровня VisualStudio+ReSharper. Такие, кстати, для Lua есть?
>>775151> Что будет делать IDE?Хуй её знает. Они ж там все файлы анализируют составляют AST-дерево и уже по нему ищут где что используется и переименовывают только нужное. Ну и у тебя на всякий случай спросят, выдав список всех найденных совпадений.
>>775145https://studio.zerobrane.com/features
>>775188Ну ладно. Я тебе верю. Невозможно, так невозможно.
>>774048Потому, что я совсем не разбираюсь ни в ООП, ни в функциональщине, особенно трудно даются времена, заимствования и трейты с имплементациями (эти подстановки типов с кучей времен рядом сними). А начал изучать все это с раста.Ну не получается у меня переопределить метод insert для BTreeMap, новый сделать получается, а когда называю его insert, он обращается к оригинальному. Вот пидор
>>641808> pijulИнтересная вещь. Никак не могу прочитать какое-нибудь интро в теоркат, чтобы прочитать их статью.Но раст они зря взяли. Я бы на их месте попытался бы собрать на OCaml-е под винду, либо перекатился на питухон.
>>775402https://github.com/rust-lang/rfcs/blob/master/text/1210-impl-specialization.mdhttps://github.com/rust-lang/rust/blob/ea6b3ddee9663e27221f366671261b21618394a0/src/libcollections/btree/map.rsЯ так понимаю, проблема у тебя в следующем:1. insert - не trait в оригинале, а просто метод, но ладно2. Для того, чтобы функцию/трейт можно специализировать, он(а) (оригинал) должен(на) быть помечен(а) default
>>639238 (OP)>https://github.com/PistonDevelopers/piston
Посмотрел на реализацию хешинга в русте. А там запилили по уму, не как сейчас в C++. Отделили алгоритм хеширования от хешируемого типа.http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3980.html вроде не берут в C++17 :(
Почему не работает? Хотел контрибьютить в RUSL, но чет не получается. Тока учусь.https://play.rust-lang.org/?code=%23![feature(libc)]%0Aextern%20crate%20core;%0Aextern%20crate%20libc;%0A%0Ause%20libc::{c_schar,size_t};%0Ause%20core::usize;%0A%23[no_mangle]%0Apub%20unsafe%20extern%20%22C%22%20fn%20stpcpy(dest:%20mut%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
>>775494Раст они взяли чтобы исправить тормоза хаскеля, которые на окамле без анала не покрыть.
>>775737Асимптотики алгоритма darcs они же исправили своей теорией патчей. Смысл в микрооптимизациях вроде выбора языка?
>>775734Макаба съела все звёздочки. Дай нормальную ссылку (нажми кнопку Gist).
>>775841Playground URL: https://play.rust-lang.org/?gist=ed2c4625f0f8bb8476eeaf3a0101f72f&version=nightly&backtrace=0Gist URL: https://gist.github.com/ed2c4625f0f8bb8476eeaf3a0101f72f
>>775845Ты пытаешься писать в константную статическую строку. Не удивительно, что у тебя application terminated abnormally with signal 11. Кроме того, у тебя strcat сломан.Вот, попробовал слегка починить: https://play.rust-lang.org/?gist=7fa075ea95a8248dac19d6772bed7db0&version=nightly Работает даже с включёнными оптимизациями.
>>775871> if ★dest.offset(len + i)ffix.
>>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`)'
>>775889Ты сравниваешь указатели, а они, само собой, разные.
>>775893а, вот почему они каждый раз разные.>(left: `0x7fff672b3bbe`, right: `0x7f8f1610daeb`)'
>>775763Как только проект у тебя разрастается во что-то побльшее пары-тройки KLOC и это всё безостановочно редактируется это уже далеко не микроопиимизация.
https://github.com/rust-lang/rfcs/pull/1657Это ОНИ. Да, это действительно ОНИ.Зависимые типы.
>>777589Вот это уже интересно.Расскажите что сейчас у Rust плохо? (рассказами что в нем хорошо и так весь гугл забит)
>>777596Нет HKT, ! (нижний тип) пока ещё не тип, шумный синтаксис, множество фич делает язык не самым лёгким для изучения, автокомплит работает через racer а не через компилятор, инкрементальную компиляцию ещё нет, плагины к компилятору (aka процедурные макросы) в unstable, да и у обычных макросов много чего ещё нет. Ну и так далее.
>>777605Спасибо.Но это все о языке, а что с экосистемой?Есть ли библиотеки, насколько они в среднем сырые?Что с community, побороли ли порочную практику долго обсуждать, доделывать до середины, начинать обсуждать как это можно было бы сделать лучше,бросать недоделанное и начинать заново?
>>777620> Есть ли библиотеки, насколько они в среднем сырые?Зависит от того, какие библиотеки тебе нужны. Можешь на https://rust.libhunt.com/ глянуть.> Что с community, побороли ли порочную практику долго обсуждать, доделывать до середины, начинать обсуждать как это можно было бы сделать лучше,бросать недоделанное и начинать заново?Не совсем понял, о чём ты.
>>775897Может это из-за https://ru.wikipedia.org/wiki/ASLR>>639238 (OP)Люди, как можно передать массив (без использования as_ref), чтоб он таки удовлетворил этот трейт?На втором скрине трейт удовлетворяется, но там принимает переменная, которая может привести Vec<T> в Vec<u8>На третьем - еще один неудовлетворительный способ
> 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
>>777860уносите этого.
>>777860И что? Может они просто учатся или следят за развитием? Как я например.
>>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.
>>778019>std::convert::FromС ним у меня не получалось перевести все унифицированно. Кажись проблема со String была. Там нужен был дополнительный шаг или что-то в этом роде.>либо реализовать для &[T]Тогда проблемы уже на самом первом этапе.У меня получалось с AsRef, а не Borrow. Но только напечатать, а не insert'нуть в BTreeMap, к сожалению
>>777860Не читается. email ввести просит
>>778106Просто делай `b"bytes".borrow().cv()` вместо `b"bytes".cv()`. Незачем придумывать хитрый способ скормить &[T, n].
>>778110Зайди в приватном режиме.
Я нашел как запретить пользователю в Any какашки запихивать. Теперь не будет во время исполнения вылетать!
>>778306А нельзя просто использовать Box<AllowedTypes>?
>>778333Я хочу чтоб пользователю функции push не пришлось самому в бокс запихивать.Еще хотел, чтоб можно было и массивы( &[u8; _] ), и одновременно слайсы( &[u8] ) в аргументе функции передавать, но это оказалось невозможно сделать во время компиляции. (Динамически не проверял вроде, но думаю там можно через коробку опять же.) По крайней мере я почти неделю мучился, так и не нашел способ.
>>778306Если у тебя ограниченный набор типов, то почему бы просто не ввести enum и использовать From?
>>778410> From/Intoffix
Попробовал набросать что-нибудь: https://ideone.com/GMLFj0
>>778430Посмотришь на такие решения, и сразу руки что-либо изучать опускаются. Сидишь неделю, ломаешь мозг над одной простой истиной
>>778430После подсказки >>778410 начал вот Такое писать.Не знал что через перечисление можно передавать значения. Я хоть и читал книгу почти до конца, но в цельную картину она у меня не складывается.
>>778467Для цельной картины тебе надо что-нибудь про функциональщину прочитать. С С++ на раст довольно тяжело переходить, потому что большей части фич ООП тут просто нет, либо они реализуются совсем по-другому.
>>778467Rust by example читай. Ну и https://llogiq.github.io/2015/07/30/traits.htmlДа, и в BTreeMap ты скорее всего хочешь хранить Vec<u8>, а не &[u8].
https://github.com/andreaferretti/on-rust-and-nim
>>779207Сложна, сложнааа, нихуя нипанятна. Как обычно короч.
>>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) - обращение к полям
>>779207Ему надо в раст компиляцию запилить, лол – получится отличный язык и без GC.
У серво теперь ночные сборки есть:https://servo-builds.s3.amazonaws.com/index.html
Rust опять отсосал у Сишечкиhttp://lexborisov.github.io/benchmark-html-persers/
>>785255Нормальную ссылку дай, йобаный https://download.servo.org/index.htmlНа сосаче по прежнему баги с рендерингом и теперь ещё и со скроллингом :)
Чет про веб не понял, поясните. Зачем вообще кто-то так сильно упирается и хочет использовать раст в вебе? Какие бенефиты по сравнению с традиционными решениями? Подозреваю что в скорости исполнения и пожирания памяти, но хотелось бы увидеть цифиры.
>>786579>Зачем вообще кто-то так сильно упирается и хочет использовать раст в вебе?Либо риалтайм проект, либо скудоумие.>Подозреваю что в скорости исполнения и пожирания памятиГрубо говоря, чуть больше кушает чем плюсы/няшная по процессору/памяти, но это не всегда эквивалентно времени выполнения – что и как напишешь, конкретных примеров с адекватным сравнением я не видел.Разница по памяти/процессору в бенчмарках по сравнению с той же явой до 10-20 раз, со скриптотой умножай ещё на 3.
>>786602Как думаешь, для веб-сервиса аля гугл-поиск подойдет раст? У гугла-поиска по сути одна простая страница, и все самое интересное творится на бэкэнде.
>>786612А есть причины по которым может не подойти?Единственная - нахуя тебе тратить в 5 раз больше времени на проект, которым пользоваться будет 1.5 человек включая тебя?У того же яндекса по заверениям их разработчиков, большая часть поиска до сих пор на перле.
>>786645В моем случае время не так важно, важна дешевизна арендуемого железа, на котором будет крутиться это дело. То есть нужно чтоб софт был минимально жрущий ресурсы. Присматриваюсь еще в сторону Erlang/Elixir решений, но на Rust я уже имею определенный опыт, написал несколько тысяч строк, а вот Erlang хоть и трогал, но всё-таки это что-то довольно новое.
>>786679Если так – тот тут только раст (ну ещё может Go подойти, но он тоже достаточно прожорлив).Эрланг – редкостный тормоз, который специализирован в первую очередь для железного масштабирования, что мягко говоря противоречит твоим целям.
>>786682Видел что ерланговские бэкэнды держат очень много коннектов одновременных и вообще быстрый респонд имеют. Но подозреваю что если будет что-то более сложное чем отдать страницу клиенту, типа вычисления какие, то тут начинается сосалово.
>>786684Я выше уже писал на эту тему, повторюсь: прожорливость до ресурсов != скорость выполнения.
>>786688Имею в виду "много жрёт – не обязательно медленно".
Можно ли констатировать что Rust не взлетел.
>>788259Нельзя.
>>788259Летит низенько и точно уж дальше Cyclone (спасибо Samsung & Mozilla). Как убийца плюсов, наверное можно делать выводы - не реализовался.
>>786684Любая дура с IO на select и асинхронной обработкой (например за счет кооперативной многозадачности на основе библиотеки) держит столько же коннектов. Ессно, сосалово придет вместе с вычислениями.
>>786602Про десятичный порядок проеба по памяти в сравнении с жабой - верю. Про cpu - не верю. Скорее бинарный порядок, т/е жаба сливает в x2-3.
>>641808Мне кажется мир еще не осознал всего величия данной штуки.
>>786645Поиск на крестах, но перл у некоторых подразделений для байнда поиска используется.
Расскажите почему Rust лучше чем Swift?
>>796612Тем, что работа с памятью явная. И да, swift уже можно запустить на микроконтроллере?
>>796619Раст ты тоже на МК не запустишь, а бинарь, им собранный, возможно на некоторых камнях.
>>796619На микроконтроллеры похуй. Во всяком случае пока.У Rust эта явная работа с памятью может превратиться в такие конструкции, что уже вся эффективность явной работы может похериться. Тут надо быть очень большим спецом по расту чтоб что-то делать. В прочем справкедливости ради надо отменить что надо быть спецом в любом языке чтоб нормально писать.
>>796767На них вообще всегда похуй, это аргумент из серии "смотри, а я зато на голове стоять умею!". Софту для микроволновки меморисейфети и прочее точно не нужно.В расте относительно тех же плюсов эта самая работа с памятью вообще скрыта.Со свифтом его мягко говоря нихуя не корректно сравнивать: сравнение хаскеля с плюсами. Один низкоуровенный даёт рассмотреть все проржавевшие кишки, второй на уровне птичьего полёта даёт глядеть на программу.
>>796787>Софту для микроволновки меморисейфети и прочее точно не нужно.Анон, ты бесподобен
>>796787Можешь более развернуто высказать свое мнение на счет Rust? Ну и немного про Swift, всё-таки тред про раст.
>>796787>Софту для микроволновки меморисейфети и прочее точно не нужно.Если микроволновка подключена к интернету, то нужна.
>>796848А нахуя ей это? Во всяких кококумных домах есть одна центральная пека – там не нужен не перформанс, нихуя, можно хоть жаву накатить.>>796836Что именно-то? В свифте нихуя низкоуровенного банально нету, даже ссылок – всё скрыто, в расте – наоборот, вот и всё сравнение.
>>796875Ты наверное не слышал о находках уязвимости во всяких умных телевизорах, микроволновках, холодильниках.
>>796893А раст уже успел стать серебряной пулей?
Скажите, если я буду писать максимально в функциональном стиле на расте, на сколько сильно это повлияет на производительность?Я имею ввиду, использовать максимум иммутабельности и чистых функций.
>>799897Зависит от кода же. Просто так в иммутабельности и в чистых функциях нет ничего плохого, даже наоборот.
>>799908Ну да, ты прав.Хотя бы может примерная какая-то оценка есть типовых задач, когда мутабельная версия сильно превосходит иммутбельную. Деревья поиска может какие или сортировка, че там еще бывает?Заметил что в Расте, если идти таким путем - функциональным, то код заметно чище становится и понятнее, и меньше борьбы с борроу-чекером и параметрами времени жизни.
>>799916Очевидно, копирование больших данных не полезно для производительности, как и слишком частое выделение и освобождение памяти в куче. Ну и ещё плохо, когда данные разбиты на мельчайшие осколки, хаотично расположенные в памяти, с косвенной адресацией на каждом шагу (привет, связные списки).А вообще, просто пиши чистый и понятный код, и профилируй его периодически. Тем более, что профилировать крайне легко:http://www.brendangregg.com/FlameGraphs/cpuflamegraphs.htmlhttps://doc.rust-lang.org/book/benchmark-tests.html
>>799944А вот move сементика как реализована внутри? Надеюсь не происходит никакого копирования данных?И еще коль уж начал спрашивать, есть ли где-то наконец-то нормальное пояснение по лайфтайм параметрам? Борроуинг понятен. В принципе даже можно привыкнуть. Немного бесит, что в Rust Book подробно расписывается какая-то херня типа точки с запятой, cargo run, всякие идиоматичности кода (этов ажно, согалсен), всякие циклы, ифы, а блядь самая мутная тема быстро галопом по верхам, я имею ввижу лайфтаймы. Какого хуя? В своем коде еще сталкивался с такой штукой, что компилятор мне говорил " у тебя вот тут не указан параметр" - ну я взял да указал, и норм стало. Компилятор мог и без меня это сделать. В общем я пока не сталкивался с ситуациями где бы компилятор не могс ам догадаться куда ставить эти параметры. Может есть примеры какие-то?
>>800029> Надеюсь не происходит никакого копирования данных?Только данных на стеке, это совсем-совсем дёшево.> Компилятор мог и без меня это сделатьМог. Но раст предпочитает явное вместо магии.http://stackoverflow.com/questions/31609137/why-are-explicit-lifetimes-needed-in-rust/
>>800029>А вот move сементика как реализована внутри?Как и в плюсах – просто обнуляется старая ссылка с присвоением значения новой. Учитывая что у раста несколько промежуточных представлений – в банальных случаях в скомпилированном коде этого перемещения не будет вообще.
>>799897При использовании иммутабельных данных и чистых функций нет семантической разницы между вызовом по ссылке и вызовом по значению (поскольку структуры данных в них являются неизменяемыми, и функция так или иначе не имеет возможности изменить значение своих аргументов), поэтому их обычно описывают как вызывающие по значению, несмотря на то, что многие реализации в действительности используют вызов по ссылке для повышения эффективности.
Я вам верификации принёс: https://github.com/Kha/electrolysis
Оказывается в Книге был еще один способ проверить палиндром. На всякий случай тут его оставлю.
>>803315Что это за хуёвина? Влом смотреть презентацию.
>>806651я что-то пропустил, что за ref? это же по идее & ?
>>808626http://rustbyexample.com/flow_control/match/destructuring/destructure_pointers.htmlПо идее, должно быть ∗, но этот RFC не приняли.
https://github.com/tailhook/vagga убийца докера
Стоит ли вкатываться в раст, если до этого писал только хеловорлды на шарпе?
>>814082Цель-то какая? Если её нету – забей, нахуй не стоит.
>>814082перекатывайся сразу в хаскель/эрланг и пиши хелоуворды там, делов то
>>718838А почему в твоей модели возможна разная длительность жизни для hui и pizda? Типа возможен момент времени, когда hui уже будет уничтожен, а pizda нет? Как тогда может существовать в этот момент Customer, он же будет в неконсистентном состоянии?
>>806651Красота, чо. Прям как в хачкеле.
>>814540> Option
>>816105Это всё равно неправильно. Немножечко окамеля:type xyupizda = Hui | Pizdaand car = ...and customer = {car: car option;sex: xyupizda}
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, главное чтоб не динамически выделялась память.
>>817265 што я за хуйню сейчас прочитал /01) Раст – хуёвый выбор для новичка;2) Именно с векторов – никак. Это, сука, динамический массив. И твою задачу без аллокаций памяти не решить – не страдает фигнёй.
>>817292>Как подобное сделатьЯ имею ввиду может какая другая есть структура данных. Никаких измененией данных не планиурется, ни добавление, ни удаление, ни редактирование элементов.
>>817313Тогда unsafe и c-like указатель на указатель (он же двухместный массив).
>>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! или какого там. Сделай себе похожий, если ты хочешь в коде какие-то необычные финтифлюшки удобно вытворять.
>>817501Ты - молодец.Сделал так:const a:[&'static [usize];2] = [&[1,2,3],&[4,5]];
Добавьте в шапку и вообще помогите ребятам сделать tiling wmhttps://github.com/Immington-Industries/way-cooler
>>822304Есть ещё https://github.com/Kintaro/wtftw
Судя по комментам, тут более менее вменяемая аудитория, поэтому решился на вопрос.Какие реальные данные по производительности есть (кроме школо-бенчмарков), так же интересно как живет он в веб сейчас? Кто пытался сравнить, какие ощущение с разработкой на прошлых языках.Какие ощущения по сопровождению кода? В общем любой сравнительный опыт интересен (в плоть до работы с плагинами в IDE и отладкой...).Ставлю целью его заюзать в вебе если получу плюшек по перформансу и памяти.Очень привлекает отсутствие оверхеда над абстракциями как в той же джаве, готов даже байты поебать если это даст мне экономию по сравнению с той же джавой.Советчики типа:-Кококо это системный язык, на нем писать только системные системки...-Кококо бери мой любиый питон и ноду.жс, программист дешевле железа, кококо...Все этим маня-архитекторы идут нахуй, у меня именно такая задача, но на плюсах писать не охотаPS Го не предлагать, это без меня :)
Меня чет порвала эта мелкая нелепость~~~~КонкатенацияНо если у вас есть две 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, сука...
>>827328да ты же ролидовый!это не дизайн, это ЯВНОЕ ЛУЧШЕ НЕЯВНОГО, а ты просто неосилятор. покури маны почему нельзя две строки вот так просто взять и конкатенировать, нахуя срезы и тднелепость его порвала, вообще ахуеть
>>827608>>827608хуячишь на тысячах языках, конкатинируешь как все вменяемые str1 + str2 (а тут же норм компиляторы собирают через всякие StringBuilder) а тут хуяк в ржавой хуйне надо приписать str1 + &str2, ведь это же блять так явно к неявному, строка каким-то волшебным хером преобразуется к литералу (по сути к константной строке из исходника).Кококо - я не могу в дискас, назову всех неосилятором.Какой нахер неосилятор если я пример то понял и его еще привел? Я не говорю что сложно, я говорю ЧТО ГОВНО.Я уверен если на таком обослались, там дальше будет веселей.
>>827718пиши макросы, прячь всё за абстракции, хули ты хотел?не оправдало твои ожидания, сразу говном бросать. обосрались? нет, это как раз та НИЗКОУРОВНЕВОСТЬString - это, блядь, вектор в хипе, а срез строки &str, это ссылка на память, которая может быть где угодно. это легко спрятать в макрос и питушки вроде тебя пришедшие с питонов будут и дальше писать строка + строка не задумываясь что там происходит под капотом. отсюда же твоё непонимание про text[3] и text.nth(3). в памяти строки хранятся в utf-8, а там 1 байт не всегда равен 1 символу. text[3] - вернёт четвёртый байт, а .nth сисмвол. что, сука, в своих высокоуровневых комбайнах никогда с байтами не работал? пиздуй в го хомячь, там даже жопу за тебя вытирать будут
>>827763>пиши макросы, прячь всё за абстракции, хули ты хотел?Нас ждут тогда полные чудеса.>питушки вроде тебя пришедшие с питонов будут и дальше писать строка + строка не задумываясь что там происходит под капотомВ том то и дело, мне поебать на петушков, для них можно там в мануале красным текстом написать. Какого хуя за меня авторы решают как мне поступать? Это верх самомнения, или же я склоняюсь, что просто обосрались?Блять, SQL запрос тяжеловесный, давайте сделаем вызов через оператор "-=]}<SELECT...>" - а то блять будут пользоваться такими тяжелыми операциями (ты ощущаешь всю нелепость ситуации и долбоебизма??).Насчет строки, да хоть она на соседнем компе пусть хранится, но блять где видано, чтобы по какой-то магии строка бля в литерал превращалась (хорошо блин не в int). Нахера, тогда оператор перезагружали? Почему у нормальных людей литералы в строки преобразуются при компиляции (в константные), а у "умных" наоборот? Про то как utf8 устроенно будешь на собеседованиях рассказывать и в документации разжевали, но все равно насрали, потому что ты ванька, мы тебя тут оберегаем. Предлагаю получать строку так text[(}3{)] - я бы тут сразу догадался что это трудная операция и подумол много раз (а то прям эти клоуны не будут юзать text.nth(3) автоматом)!!!PS раньше языки делали для людей, конечно обсерались, конечно на легалиси синтаксисе строили чудовишь, но там никто не пытался показать как кому, что надо делать и когда. Опытные программисты понимают как устроенны хешмапы, массивы, а неопытным со своим бложиком потери в 1мс из-за text.непонятнаяХуйня(3) - ничем ужасным не покажется.Феномен 21 века, хипстер-архитекторы языков, лол, аж смузи на лептоп пролил
>>827836ебать у тебя в голове каша>Какого хуя за меня авторы решают как мне поступать?поехавший, авторы как раз дали тебе возможность выбирать что именно ты хочешь сделать, что бы ты всё делал явно.>по какой-то магии строка бля в литерал превращаласьнихуя не понятно, пиши яснее. какая нахуй "строка в литерал превращаетя"? нихуя там не превращается, литары в расте - это как раз те константы, но при создании его - он возвращает ссылку на себя и дальше ты работаешь с ним как со срезом. ты совсем охуел память в которой програма лежит менять? вот для этого ты явно делаешь .to_string() что бы получить String на куче. и вот у типа String перегружен оператор "+" для конкатенации. хули тебе непонятно? почему он автоматом не делает срез, если получает строку? тем более что раст хвалён дженериками.>хипстер-архитекторы языковвсё с тобой понятно. ты поехавший. хипстеры - это как раз маньки, вроде тебя, которые не хотят ни в чём разбиратся, пусть сычи пишут код, а я не хочу ничего решать, я хочу просто скачать крейт и что бы всё привычно было как пистоне!
>>827906нахера ты мне про устройство раста каждый раз рассказываешь, я тебя в конкретное говно тыкаю же.>нихуя не понятно, пиши яснее. какая нахуй "строка в литерал превращаетя"?в принцепи с тобой все ясно, я тебе говорю, что в нормальных языках обычно одна строка, а литеры (константы текста из исходников которые ты руками пишешь) преобразуются в строки родного языка.ПОЭТОМУ1. Нефига не понятно зачем они сделали это явно, мол и литералы и строки.Но это пофиг, может надо им (больше строк богу строк, чтобы веселей епстись было, еще своих там напишут местные).2. Совершенный идиотизм, что строка из кучи преобразуется в строку-литерал (когда в норм языках обычно наоборот и обычно прозрачно)3. Нахера на операторе конкатенации "строки-из-кучи" и результатом которой будет "строка-из-кучи", делать преобразование в строку-литерал.Логичнее даже литералы привести к динамичной строке, но не наоборот же.Ну вот просто - нахрена??
>устройство раста каждый раз рассказываешьпотому что ты не въежаешь в устройство раста.если ты под литералом имеешь в виду "строку как поледовательность символов", то это данные которые хранятся в String, а $str - это не литерал, а ссылка на данные, срез. а вот если ты про "константную строку из исходного кода", она представляется тем самым $str.вот поэтому мне и не понятно о чём ты говоришь, когда пишешь "строка из кучи преобразуется в строку-литерал"1. потому что это вообще разные сущности, работать с которыми приходится из-за того их не скрыть за zero-cost абстракцией2. она никуда не преобразовывается, & возвращает ссылку, йтть3. потому что сигнатура функции такая, ожидает аргументом срез строки, а не данные в куче. если бы целью было угодить неофитам и сделать всё как у людей, то написали бы дженерик, который бы сам брал срезы там где ему нужны срезы. но ты бы не задавал таких глупых вопросов, если бы понимал к чему это приведёт в итоге.вообще странно что из всех вычурностей этого ЯП ты приебался к строкам. ведь после понимания owning and borrowing подобные вопросы сами отпадают
>в принцепи>пи>с тобой все яснолол
>>828031>а вот если ты про "константную строку из исходного кода", она представляется тем самым $str.Нехуя ты какой сообразительный, ну наконец-то. Серьезно.В этом и проблема, я тебе пытаюсь нативные решения объяснить, которые применяются при трансляции языка, а ты мне про документацию из раста.Так вот мой юный друг, статическая херня при компиляции, которая уже входит в состав программы, а не будет в куче создаваться и есть литерал (он и статический, он и константный, потому что там память при старте выделилась уже для него, туда не вписать)Нахуя они создали какой-то полу-литерал (константную в статической памяти (если не навру в терминологии)) - я не понимать, так как по сути поведение близкое к литералу, но так как у них он преобразуется из вектора - то храниться в каком-нибудь тормазнутом стеке наверно.То что им пришлось делать две строки и одна из них псевдо-литерал - это обосрамс.Вот найдешь реально решение почему они1. Ввели два вида строк (и не надо говорить zero-cost, это оверхед вообще-то)2. Перезагрузили оператор "+" так что он преобразует (или извлекает ссылку, не важно) &str из вектора, но возвращает вектор (это как если бы складывать int'ы но сначала преобразовывать в long'и).Вот тогда мы поговорим, а так все пусто. Я аргументирую ты мне документацию рассказываешь (где мотивация эта не расписана)
>>828040"мне этот собеседник не нравится, но сказать что-то по теме мозгов нет, поэтому я докопаюсь до орфографии"
>>828065не, если бы мне не нравился собеседник, я бы ен писал. а к орфографии как раз не доебался в ответе, а заметил уже когда перечитывал, оттого и проиграл. а ты чё обиделся?олсо ПЕРЕКАТhttp://2ch.hk/pr/res/828070.htmlhttp://2ch.hk/pr/res/828070.htmlhttp://2ch.hk/pr/res/828070.html
>>828060->>>828093