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


Ответить в тред Ответить в тред

Check this out!
<<
Назад | Вниз | Каталог | Обновить тред | Автообновление
346 35 113

Rust #11 /rust/ Аноним 22/04/20 Срд 15:28:46 16644951
mozrust.png (246Кб, 2000x1119)
2000x1119
nibwkl2blms41.png (909Кб, 1072x672)
1072x672
jb8ybhv9pms41.jpg (46Кб, 536x486)
536x486
dvach-02.webm (2422Кб, 1920x1056, 00:00:12)
1920x1056
Аноним 22/04/20 Срд 15:41:35 16645172
>>1664495 (OP)
> async/await наконец-то в стабильной версии!
Ну и сколько этой новости уже месяцев?
Аноним 22/04/20 Срд 15:44:01 16645183
Аноним 22/04/20 Срд 19:03:41 16648444
image.png (7Кб, 467x106)
467x106
Вопрос на покакать - зачем тут коллект?
Аноним 22/04/20 Срд 19:27:50 16648665
>>1664844
args - возвращает итератор
collect - собирает в Vector<String>
Аноним 22/04/20 Срд 19:28:47 16648696
>>1664495 (OP)
татрикс, откуда ты знаешь про Haxe?
Аноним 22/04/20 Срд 20:53:09 16649397
>>1664495 (OP)
Как сделать, чтобы compile buffer не скроллился в самый низ?
Аноним 22/04/20 Срд 22:11:20 16649938
Аноним 22/04/20 Срд 22:14:02 16649969
Аноним 22/04/20 Срд 22:31:59 166500310
2020-04-22-2131[...].png (98Кб, 1182x792)
1182x792
Аноним 22/04/20 Срд 22:57:55 166501911
>>1665003
Ну это я сразу проверил, у тебя у самого нормально работает?
Аноним 23/04/20 Чтв 09:30:06 166517412
>>1664996
попробуй установить (setq compilation-scroll-output nil) в ~/.emacs
Аноним 23/04/20 Чтв 11:48:23 166524413
>>1665019
Работает, но через жопу.
Иногда рандомно начинает скролить вниз.
Аноним 23/04/20 Чтв 12:30:36 166526614
Аноним 23/04/20 Чтв 16:17:53 166555415
>>1664272 →
>Не, я как раз с сишки пришёл, понимаю, что это быстрее, но думал что для раста это менее важно.
Тут такая фишка, что эта фукнция - часть stdlib раста, а stdlib должна быть самым быстрым ковбоем или не быть такой огромной.
Аноним 24/04/20 Птн 20:22:52 166670516
>dvach-02.webm
Что за либа, аноны?
Аноним 24/04/20 Птн 20:25:37 166670617
>>1666705
Всё, нашёл уже. Если интересно кому - Cursive.
Аноним 24/04/20 Птн 20:28:17 166670918
Выделение089.png (96Кб, 840x978)
840x978
>>1666706
Отличная вещь, я на ней клиента для тинькова написал.
Аноним 24/04/20 Птн 21:11:22 166672319
>>1666709
Выглядит интересно! Сейчас доки полистаю, попробую себе обёртку для yaourt'а красивую набросать.
Аноним 24/04/20 Птн 21:16:59 166672920
image.jpg (110Кб, 1500x1500)
1500x1500
Аноним 24/04/20 Птн 21:31:09 166674521
>>1666729
Легче, чем с ручной сборкой из аура ебаться :\
Аноним 24/04/20 Птн 22:05:50 166676422
>>1666723
Сразу дам пару советов:
1. Сразу пиши свой луп.
loop{ siv.step() -> твоя логика -> siv.refresh() }
в лупе работай с элементами через siv.find_name("el_name")
он возвращает Option, т.к. элемент может быть неактивен
2. Изнутри коллбэков этот сотона ничего не может видеть, если нужна связь с внешним миров в коллбэке, оберни его в структуру и просунь через siv.set_user_data(your_struct)

советую, так как сам довольно долго проебался, пытаясь обойтись дефолтным лупом с коллбэками.
Аноним 25/04/20 Суб 00:32:19 166690323
image.png (8Кб, 901x28)
901x28
Аноним 25/04/20 Суб 00:50:25 166691024
>>1666903
Как будто сама аурная свалка мейнтейнится
Аноним 25/04/20 Суб 08:58:21 166699725
Какой пет можно написать на расте без опыта?
Сейчас говнякаю на реакте, но хочется потрогать раст.
Аноним 25/04/20 Суб 09:56:39 166701926
>>1666997
Поговнокодь на yew, сделай клиент для имиджборд.
Аноним 25/04/20 Суб 10:01:56 166702327
Аноним 25/04/20 Суб 12:10:20 166708828
Аноним 25/04/20 Суб 13:10:09 166712229
>>1666745
Юзай что-нибудь поновее, например, мне очень нравиться pikaur. Из минусов - написан на питоне и обновлять надо аккуратно, ибо если обновишь питон и не обновишь pikaur - то соснешь. Есть еще какая-то залупа на go, она тоже норм.
Аноним 25/04/20 Суб 13:20:29 166713630
Установил rustup, добавил toolchain stable-x86_64-pc-windows-msvc. Сделал его default, добавил target x86_64-pc-windows-msvc. На странице https://forge.rust-lang.org/release/platform-support.html указано, что rustc доступен. А вот хрен. Его нет. При добавлении компонента пишет up to date, будто устпновлен. Но в консоли при вводе rustc пишет, чтобы установил командой через добавления компонента, так как для этого тулчейна не установлен rustc. В топку. Слишком сыро.
Аноним 25/04/20 Суб 13:21:43 166714031
>>1667136
Ночная версия тулчейна ведёт себя так же.
Аноним 25/04/20 Суб 13:57:09 166716332
>>1666997
>Какой пет можно написать на расте без опыта?
Возможно не совсем понимаю, что такое pet project, посоветовал бы сперва реализовать базовые структуры данных.
>Сейчас говнякаю на реакте, но хочется потрогать раст
Чтобы веб-сайтики на расте делать?
Аноним 25/04/20 Суб 14:06:03 166716833
>>1667136
>pc-windows-msvc
Дальше не читал
Аноним 25/04/20 Суб 14:08:28 166716934
>>1667163
Думаю да, хорошая идея насчет структур данных для начала.

>Чтобы веб-сайтики на расте делать?
Ну почему, необязательно сайтики. Хотя хотелось бы сделать простую апишку.
Аноним 25/04/20 Суб 14:21:16 166717235
>>1667169
Раст практически не чем не отличается от реакта.
Аноним 25/04/20 Суб 14:24:07 166717436
>>1667172
Да, спасибо, именно поэтому хочу его попробовать.
Аноним 25/04/20 Суб 14:25:39 166717637
1493179750445.jpg (40Кб, 625x396)
625x396
Аноним 25/04/20 Суб 14:27:23 166718238
>>1667169
Просто в расте самый большой подводный камень, о котором надо знать, это ownership model (по-русски будет криво звучать), реализация базовых структур тебе позволит с этим ближе познакомиться.
>>1667169
>Хотя хотелось бы сделать простую апишку.
Если ты про rest, то пока не стоит, там много делов, лучше если захочешь на кошках потренироваться напиши клиента для гофера/dns -> затем асинхронную версию, но не на async сгенерированных future, а чисто имплементацией трейта. Короче я считаю в веб лезть пока не стоит, слишком много там делов.
Аноним 25/04/20 Суб 14:58:46 166720539
>>1667182
Спасибо за советы <3
Буду вникать.
Аноним 25/04/20 Суб 15:18:49 166721340
image.png (20Кб, 1364x668)
1364x668
Может гденто есть схема компетранспеляций конкретно из раста в итоговый васм?
Оно же на какой-то стадии переводит всё в С при помощи cdylib?
И на какой стадии (при использовании) впихиваются жсные модули?
Аноним 25/04/20 Суб 15:42:05 166722041
>>1667213
> Оно же на какой-то стадии переводит всё в С при помощи cdylib?
Нет, нахуя? Компилятор раста переводит в LLVM-байткод, LLVM переводит в WASM, а браузер уже переводит WASM в машинный код (там гибридная компиляция AOT+JIT) и объединяет с JS.
Аноним 25/04/20 Суб 15:44:37 166722142
когда раст взлетит пацаны? через скок лет
Аноним 25/04/20 Суб 16:01:56 166722743
>>1667182
Хотел спросить, анон.
Давно работаешь и какой стек сейчас на работе?
Какие технологии пробовал по мере роста скилла?
Аноним 25/04/20 Суб 16:21:15 166724144
>>1667168
С gnu то же самое. Да, винда говно, но она у большинства людей. Поэтому из линукса стоит кросскомпиляцию настроить.
Аноним 25/04/20 Суб 16:49:53 166724845
>>1667221
Если ищешь язык чисто срубить бабла, то изучай лучше кресты и PHP - легаси говна тебе до пенсии хватит.
Аноним 25/04/20 Суб 16:52:34 166724946
>>1667221
Ныряй в вордпресс и вместе с этим учи жиквери.
>>1667248
Справедливо.
Аноним 25/04/20 Суб 17:12:27 166726347
>>1667227
Начинал с c++ билдера когда-то давно, а кончил джавой, но попиливаю свой личный проектик на расте (правда в основном там используется либа на c).
>Какие технологии пробовал по мере роста скилла?
Мм, на перле пробовал форум писать.
>>1667221
Ну типо его там и сям большие уже немного используют, в мозилле вообще целый web gpu пилят на ржаном-гречневом.
Аноним 25/04/20 Суб 17:14:27 166726548
>>1667263
В мозилле как минимум CSS-движок (servo) и рендер страниц (webrender) сделали на расте из того что уже используется в продакшене.
Аноним 25/04/20 Суб 20:44:00 166750449
Зачем вам rust, когда есть ada?
Аноним 25/04/20 Суб 21:26:38 166756550
Аноним 25/04/20 Суб 21:31:12 166757851
>>1667565
Есть модно-молодёжный spark.
Аноним 25/04/20 Суб 21:36:19 166758852
image.png (32Кб, 392x376)
392x376
Аноним 25/04/20 Суб 21:39:00 166759153
>>1667588
>Applied Type System
>multi-paradigm: functional, imperative
лол
Аноним 25/04/20 Суб 21:44:30 166759554
>>1667588
Ничего себе. У меня сайт этого языка давно в закладках, забыл. Ну я и шизик-любитель экзотики.
Аноним 26/04/20 Вск 02:14:57 166775955
Ну-ка посмотрим, есть тут растопрограммисты. Можете без запуска компилятора сказать скомпилируется ли эта функция и если да, то что вернёт?
fn fun() -> i32 {
return return return return return return!!!!!!!111;
}
Аноним 26/04/20 Вск 02:27:51 166776556
Аноним 26/04/20 Вск 02:28:16 166776657
Аноним 26/04/20 Вск 04:14:21 166778658
Аноним 26/04/20 Вск 07:51:01 166781159
>>1667759
Ты бы ещё спросил, что вернёт 1.00000000006 as usize.
Аноним 26/04/20 Вск 09:53:00 166783260
>>1667811
1 вернёт. Тут даже в нынешней версии нет UB и всегда возвращается целочисленное значение, которое ближе к нулю. А вот 1E20 as usize (на всех поддерживаемых архитектурах) уже UB, хотя скоро и это поправят: https://github.com/rust-lang/rust/pull/71269
Аноним 26/04/20 Вск 11:55:54 166789561
Аноним 26/04/20 Вск 13:13:18 166795262
>>1667766
Там число со знаком без +1.
Аноним 26/04/20 Вск 15:18:21 166805163
>>1667759
А вот эта?

fn fun() -> i32 {
return return return return--!-------!------!-!-!-!-!-!-----!---!!111-1;
}
Аноним 26/04/20 Вск 19:49:56 166832464
>>1668051
Очевидно, что все ретёрны кроме последнего не имеют смысла. Дальше мы видим кучу битовых not вместе с унарными минусами. Очевидно, что N - 1 будет выполнен после унарных минусов и битовых not, поэтому пока просто забудем об этом.
нот-нот 111 => 111
--- 111 => -111
!(-111) => бля, я тебе калькулятор штоле, считать two's complement в голове, когда это не -1?
----- => -(!(-111))
! => !(-(!(-111))

Короче, пошёл на хуй. Ебал я такой хуетой заниматься, у меня проекты есть, которыми надо заниматься.
Аноним 26/04/20 Вск 20:17:52 166834065
Rust в ML будет?
Аноним 26/04/20 Вск 23:51:10 166853366
рефлекшон есть в этом языке?
Аноним 27/04/20 Пнд 01:08:07 166858467
Аноним 27/04/20 Пнд 05:45:33 166865068
Аноним 27/04/20 Пнд 13:14:48 166895369
Аноним 27/04/20 Пнд 19:24:25 166943870
Аноним 27/04/20 Пнд 20:23:25 166949171
>>1665266
Сделойте уже пул, хуйнул как написано и всё работает.

(defun rustic-compilation-setup-buffer (buf dir mode &optional no-mode-line)
"Prepare BUF for compilation process."
(let ((inhibit-read-only t))
(with-current-buffer buf
(erase-buffer)
(setq default-directory dir)
(funcall mode)

(if (or compilation-auto-jump-to-first-error
(eq compilation-scroll-output 'first-error))
(set (make-local-variable 'compilation-auto-jump-to-next) t))

(unless no-mode-line
(setq mode-line-process
'((:propertize ":%s" face compilation-mode-line-run)
compilation-mode-line-errors)))
(force-mode-line-update)
(sit-for 0))))
Аноним 27/04/20 Пнд 20:37:06 166950172
image.jpg (18Кб, 300x291)
300x291
Емаксовые хайлайты текста работают на регекспах
Аноним 27/04/20 Пнд 20:38:52 166950673
Аноним 27/04/20 Пнд 22:12:42 166961274
в чем сейчас раст более преуспел? веб, ембеддед, игры?
Аноним 27/04/20 Пнд 22:14:36 166961475
>>1669612
высасывание грантов на новые манятехнологии
Аноним 29/04/20 Срд 01:27:18 167108576
image.jpg (20Кб, 400x400)
400x400
Аноним 29/04/20 Срд 06:46:04 167113277
>>1671085
Какая-то пародия на электрон. Причем довольно пердольная.
Аноним 29/04/20 Срд 06:52:38 167113678
>>1671085
> Почалось?
Почалось можно будет сказать когда у гуя будут минимум три вещи: TableView, интернационализация и accessibility. Причём все три достаточно сложные вещи.
Аноним 29/04/20 Срд 20:47:18 167180079
>>1671132
А мне нравится их красивый роадмап. Так и хочется дать им мульён-другой.
Аноним 29/04/20 Срд 21:04:14 167181680
>>1668533
Круче. Есть процедурные макросы!
Аноним 30/04/20 Чтв 14:54:41 167236681
Зачем вообще нужен этот раст?
Аноним 30/04/20 Чтв 15:03:03 167237182
>>1672366
Чтобы обросшие нищуки 60к/месяц могли чувствовать себя выше фронтенд-господ
Аноним 30/04/20 Чтв 19:24:38 167274883
>>1672371
Есть пруфы, что фронтедеры - самые богатые?
Аноним 30/04/20 Чтв 20:42:53 167287784
Почему до владения переменнами додумались только в расте?
Аноним 30/04/20 Чтв 20:49:28 167289085
>>1672877
Причем тут владение переменными? Единственное что в расте нового по сравнению с другими языками - что у каждой ссылки есть определённое время жизни (ну и плюс можно создавать структуры с временем жизни в качестве шаблонного параметра).
Аноним 30/04/20 Чтв 22:14:27 167294686
>>1672890
А вот я бы поспорил! если бы шарил
Аноним 30/04/20 Чтв 22:54:07 167298587
>>1672890
Я бы тоже поспорил!
Аноним 01/05/20 Птн 04:29:32 167329588
>>1672946
>>1672985
Раст без borowck ни нужен, ну правда есть ещё секси енумы, макросы, комбинаторы по типу map_err и прочее для ошибок.

inb4 ряяяя ансейф


use std::ptr;

let mut buf = [0; LOG_BUFFER_LEN];
let mut p = buf.as_mut_ptr();
let end = p.offset(LOG_BUFFER_LEN as isize);
let mut data: const c_char = ptr::null();
let mut flags: c_int = 0;
let mut n = 0;

if ERR_peek_error() == 0 {
return;
}

loop {
n = ERR_peek_error_line_data(
ptr::null_mut(),
ptr::null_mut(),
&mut data as
mut const _,
&mut flags,
);

if (n == 0) {
break;
}

if (p == end.offset(-1)) {
ERR_get_error();
continue;
}

ptr::write(p, b' ');
p = p.offset(1);

ERR_error_string_n(n, p as
mut _, 10);

while p != end && p != 0 {
p = p.offset(1);
}

if p != end &&
data != 0 && flags & ERR_TXT_STRING != 0 {
ptr::write(p, b':');
p = p.offset(1);
let len = {
let data_len = libc::strlen(data);
let left = end.offset_from(p);
if left <= 0 {
0
} else {
data_len.min(left as usize)
}
};
std::intrinsics::copy_nonoverlapping(data, p as *mut _, len);
p = p.offset(len as isize);
}

ERR_get_error();
}
Аноним 01/05/20 Птн 10:32:27 167338189
Аноны, что заметил:
1. Наконец-то можно i32 + &i32 и так далее. Урра!
2. Какого-то хуя перестал работать мой собственный impl Drop
вот было, всё работало, отрабатывало по Ctrl+C, а потом перестало. Шо за нах это может быть? С обновлением напрямую не связано, работало уже после апдейта на 1.43, а сегодня с утра перестало.
Аноним 01/05/20 Птн 11:45:54 167342090
>>1673295
> Раст без borowck ни нужен, ну правда есть ещё секси енумы, макросы, комбинаторы по типу map_err и прочее для ошибок.
Речь не о крутых фичах, а о фичах которых раньше не было. Так-то солянки из идей разных ЯП были и до раста (да и сейчас появляются как грибы, благо есть LLVM, который берёт самую сложную работу - генерачию машинного кода - на себя).

Впрочем и со временами жизни раст немного обосрался. А конкретно при даункасте структуры в трейт время жизни стирается (превращается в 'static) и из трейта его никак выковырять невозможно - оно указывается отдельно синтаксисом (impl|dyn) Trait + 'lifetime [1], но функции внутри трейта время жизни самого трейта никак узнать не могут. Из-за этой багофичи до сих пор не могут сделать специализацию.

[1]: https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=4f838cf43498f87425639fffb7efb60f
Аноним 02/05/20 Суб 18:07:34 167455291
Кто-нибудь устраивался на работу? Чем занимаетесь?
Аноним 02/05/20 Суб 21:32:37 167479092
Аноним 02/05/20 Суб 22:15:08 167484393
>>1674790
Не совсем. Специализация относится к функциям, а не объектам. Ты можешь определить функцию по-умолчанию и специализировать в зависимости от того какие трейты имплементируют аргументы функции, а в твоём случае функция выбирается в зависимости от типа объекта, а не от того какие трейты он имплементирует. Вот пример - есть трейты Clone и Copy. Если объект определил трейт Clone, то значит он может быть скопирован, но для этого надо всегда вызывать функцию clone, которая может делать нетривиальные операции (например увеличивать счётчик в случае умных указателей). А если объект определяет трейт Copy, то значит он может быть скопирован побайтовым копированием памяти. Со специализацией можно сделать дефолтную функцию, которая будет принимать все объекты с трейтом Clone и более быструю специализированную для тех кто ещё определил трейт Copy, чтобы использовать побайтовое копирования для ускорения кода.

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

Сейчас хотят сделать упрощённую версию без возможности специализировать время жизни, но и там есть свои проблемы.
Аноним 03/05/20 Вск 13:14:56 167530894
>>1674552
>Чем занимаетесь?
python/django/asyncio
Аноним 03/05/20 Вск 17:13:53 167557195
>>1674552
Jira+Confluence+команда из 7 человек.
Аноним 03/05/20 Вск 17:18:58 167558096
>>1675571
Я думал над джирой целая компания работает..
Аноним 03/05/20 Вск 17:38:11 167560797
Что-то обсуждение на нуле. Раст заржавел окончательно? Кто-нибудь пишет на нём?
Аноним 03/05/20 Вск 20:57:49 167575098
Выделение101.png (16Кб, 430x207)
430x207
>>1675607
Пишем. Торгового бота для себя и приложение камеры для ведроида. В заначке ещё пара проектов.
Аноним 03/05/20 Вск 21:57:21 167579999
>>1675580
Не над джирой, а в джире.
Тимлид или ПМ же.
Аноним 03/05/20 Вск 22:22:00 1675831100
>>1675607
Всё прогрессивное человечество.
Аноним 04/05/20 Пнд 01:31:32 1675894101
>>1675831
Канадские трапы всякие то бишь?
Аноним 04/05/20 Пнд 09:02:39 1675948102
>>1675607
раст - мертворожденная хуйня для смузихлебов, максимум запилить проект для резюме.
Аноним 04/05/20 Пнд 12:17:36 1676048103
>>1675948
Что, мань, получаешь ЗП за отлов сегфолтов и боишься представить будущее без них?
Аноним 04/05/20 Пнд 12:58:50 1676076104
>>1676048

Нописал на расте
@
Ловлю сегфолты


Я непомню, где слышал, но есть какой-то анализатор MIR, который позволяет находить подозрительные места. Что вообще анону есть сказать по доп. средствам для статического анализа для раста?
Аноним 04/05/20 Пнд 13:53:54 1676115105
>>1676048
Но ведь в джаваскрипте нет сегфолтов...
Аноним 04/05/20 Пнд 14:18:54 1676141106
wb.jpeg (8Кб, 201x251)
201x251
>>1675831
>Всё прогрессивное человечество.
Аноним 04/05/20 Пнд 14:36:53 1676183107
>>1676115
В джаваскрипте и зарплаты то нет....
Аноним 04/05/20 Пнд 15:08:13 1676230108
>>1664495 (OP)
>2 пик
И эти люди называют С++ уродливым
Аноним 04/05/20 Пнд 15:11:45 1676233109
>>1676048
Это русачки из яндекса. У них там целый отдел евангелистов плюсов. На хвбре в каждом растотреде срут какой он плохой и восхваляют божественные плюсы.
Аноним 04/05/20 Пнд 15:36:04 1676284110
Аноним 04/05/20 Пнд 18:15:21 1676450111
вы тут джавистов любите не?
Аноним 04/05/20 Пнд 18:15:21 1676451112
>>1676115
Но жс и не язык программирования в том смысле, в котором раст и плюсы.
Аноним 04/05/20 Пнд 18:44:46 1676477113
>>1675894
Ну да. А кто по-твоему прогрессивное человечество?
Аноним 04/05/20 Пнд 18:55:26 1676493114
>>1676477
Кузьмич Тордвальдс, например?
Аноним 05/05/20 Втр 10:35:06 1677096115
Сап аноны. Решил ради теста заюзать 2 разных тулчейна: windows-msvc и windows-gnu. В итоге вес бинарника с одним крейтом(которому не нужна линковка) на MVSC: 277 КБ, GNU ебать его в рот 65.673КБ. Посмотрел через ldd - там дохуя каких-то dll. Вопрос - почему такая разница в весе?
Аноним 05/05/20 Втр 11:01:43 1677108116
>>1677096
Я даже не могу выбрать, про что пошутить, на тему, что там понапихали в MVSC.
Аноним 05/05/20 Втр 12:16:24 1677211117
>>1677108
Так файл MSVC весит то меньше чем гну..
Аноним 05/05/20 Втр 12:31:12 1677239118
>>1677096
Это символы для отладки (нужны чтобы получить читабельные стектрейсы в случае паники). MSVC по умолчанию сохраняет их в отдельном .pdb-файле, а гну встраивает в бинарник. Их можно убрать командой strip или что-то типа того.
Аноним 05/05/20 Втр 12:51:51 1677250119
>>1677239
Так в MSVC рядом с бинарником нет никаких файлов, а ошибка читабельная
Аноним 05/05/20 Втр 13:03:09 1677261120
>>1677250
Потому что раст их туда не складывает (находится в каталоге deps, в виде имя_эксешника.pdb вместо с кучей других продуктов компиляции). Но если перенесёшь бинарник в другое место ошибка перестанет быть читабельной.
Аноним 06/05/20 Срд 09:51:20 1678476121
>>1664495 (OP)
>dvach-02.webm
>rust - нвероятно быстрый язык для системного программирования
Объясните ньюфаундленду, если так важна скорость, зачем использовать какой-то хипстерский язык, почему бы не использовать Си или, упаси господи, ассемблер?
Аноним 06/05/20 Срд 11:55:17 1678532122
>>1678476
Что бы при очередном сегфолте твоя жопа не поубивала соседей/коллег интенсивным гамма излучением
Аноним 06/05/20 Срд 13:34:05 1678649123
>>1678476
Так и делают тащемта. Раст - хуйня для продакшена. Сам язык норм, но чисто как домашняя игрушка для пет-проектов.
Аноним 06/05/20 Срд 14:01:54 1678681124
>>1678476
Тем временем в C++ треде
>Объясните ньюфаундленду, если так важна скорость, зачем использовать какой-то хипстерский язык, почему бы не использовать Си или, упаси господи, ассемблер?
Аноним 06/05/20 Срд 14:04:23 1678689125
>>1678476
Ассемблер нужен будет один хуй, не для скорости, а для постоянного времени исполнения.
Аноним 06/05/20 Срд 14:29:35 1678703126
>>1678689
> постоянного времени исполнения
И что ты под этим понимаешь? Жосткий риалтайм? Так наоборот с высокоуровневым языком проще будет, потому что к нему можно будет написать анализатор, который тебе сразу выдаст время выполнение в худшем случае. А если про то что нужно именно чёткое время выполнения каждой инструкции, то с современными процессами с конвейером и прочими оптимизациями ты быстро соснёшь (ну и в случае мк не забываем про прерывания, которые тоже могут въебать детерминизм времени выполнения куска кода). Тут справятся только FPGA (ну или ASIC, если нужно массовое производство).
Аноним 06/05/20 Срд 15:46:34 1678787127
>>1678703
На МК перед запуском чего-то сильно рилтаймового прерывания отключают, потом включают.
Там асм я чаще всего видел в стартапе/бутлоадерах и всякой системной хуите вроде отладочно-трассировочной обвязки.
Аноним 06/05/20 Срд 17:02:49 1678858128
>>1678476
Потому что зачем, если можно программировать с удовольствием?
Аноним 06/05/20 Срд 17:13:14 1678869129
>>1678703
> Так наоборот с высокоуровневым языком проще будет, потому что к нему можно будет написать анализатор, который тебе сразу выдаст время выполнение в худшем случае.

К любому языку нельзя такой написать, кроме частных случаев когда программа совершенно линейная и выполняется в изоляции. А с высокоуровневым языком у тебя происходит больше скрытых вещей и меньше возможности на них влиять.
Аноним 06/05/20 Срд 17:26:50 1678886130
>>1678869
> К любому языку нельзя такой написать
Можно. Для этого функциональщики и придумали такие понятия как "чистота" функций и прочее. В расте уже подобное тоже сделали: https://github.com/rtfm-rs/cortex-m-rtfm (с оговоркой, что это не чистый раст, а растоподобный язык, который макросами преобразуется в раст).
Аноним 06/05/20 Срд 17:36:16 1678892131
>>1678703
Под постоянным я имел в виду то, что нет корреляции между значениями параметров и временем выполнения.
Аноним 06/05/20 Срд 17:40:17 1678895132
>>1678892
Каких параметров? Ты шизик чтоле? WCET-анализ можно выполнять для любого ЯП. Даже более того любой ЯП можно преобразовать в машинный код и выполнять WCET для него. Ебаться с ассмеблером для этого не обязательно.
Аноним 06/05/20 Срд 17:54:35 1678904133
>>1678895
>Каких параметров?
Ну, например, ключей для асимметричных шифров.
Аноним 06/05/20 Срд 17:56:21 1678906134
>>1678904
И причём тут ассемблер?
Аноним 06/05/20 Срд 18:01:59 1678910135
>>1678906
Потому что подходящий инструмент для решения проблемы.
Аноним 06/05/20 Срд 18:03:55 1678913136
Аноним 07/05/20 Чтв 12:41:30 1679516137
>>1678681
Ну с++ вроде бы не позиционируется как сверх-быстрый язык, разве нет?
Аноним 07/05/20 Чтв 13:06:11 1679540138
>>1679516
лол, у если второй по скорости язык после Си (ассемблер не в счет) - это небыстрый, то земля тебе джаваскриптом, анон
Аноним 07/05/20 Чтв 16:31:27 1679838139
15822331637070.png (69Кб, 446x435)
446x435
>>1664495 (OP)
Нужна либа для удобных assert'ов в тестах. Конкретно моя проблема, сравниваю два небольших буффера, равны по длине, но хочется, чтобы сразу показывало первую позицию по несовпадению, ну и чтобы вообще был вагон удобных ассертов для людей, а то стандартного ассерта таки маловато возможно будет в будущем. Чего посоветуете?
Аноним 07/05/20 Чтв 21:19:49 1680210140
чё за апострофы перед переменными иногда ставят
Аноним 07/05/20 Чтв 21:25:19 1680222141
>>1680210
Означает время жизни. Может быть либо генерик-параметром у структуры (может означать разное, но зачастую означает что структура имеет ссылку со временем жизни равным этому параметру) либо относится к ссылке и означает что ссылка имеет это самое время жизни. Во всех случаях когда ты используешь ссылки ты используешь и времена жизни, просто зачастую компилятор их может вывести самостоятельно и потому тебе не обязательно давать им имена (апостроф нужен чтобы отличить их от параметров-типов).
Аноним 07/05/20 Чтв 21:52:04 1680244142
Аноним 07/05/20 Чтв 21:53:15 1680246143
>>1680244
Ничего. Проходите дальше. C++ тред ниже.
Аноним 08/05/20 Птн 07:45:22 1680520144
>>1679838
buffer.iter().zip(other_buffer.iter()).for_each(|(x, y)| assert_eq!(x, y));
Аноним 08/05/20 Птн 07:47:33 1680522145
>>1680520
А если позиция нужна, то
buffer.iter().zip(other_buffer.iter()).enumerate().for_each(|(index, (x, y))| assert_eq!(x, y, "not equal items at {} index", index));
Аноним 08/05/20 Птн 16:11:47 1680893146
Аноним 08/05/20 Птн 17:37:40 1681071147
Аноним 08/05/20 Птн 17:41:58 1681084148
1571917563526.png (106Кб, 618x901)
618x901
>>1681071
Протухшая новость.
Аноним 08/05/20 Птн 18:08:30 1681162149
Аноны, вот есть у меня кастомный логгер, который
log::set_logger(&LOGGER).unwrap();
есть отдельный поток - напрямую из него логирование ок.
В потоке идёт работа с методами некой структуры, которая находится в другом файле - и вот оттуда с логированием облом. Причём если запускаю методы из основного потока, то всё логируется. Как их подружить?
Аноним 08/05/20 Птн 18:10:48 1681167150
>>1681162
> которая находится в другом файле
Что значит "в другом файле"? Речь про динамически подключаемые библиотеки? Если так, то возможно проблема в TLS, который у основной программы и каждой из библиотек разный.
Аноним 08/05/20 Птн 18:14:22 1681174151
>>1681167
Не, в модуле, то есть. LOGGER определяю статиком в майне
pub(crate) static LOGGER: CursiveLogger = CursiveLogger;
Аноним 08/05/20 Птн 19:56:46 1681394152
>>1680893
Спасибо, но не то, а для структур наверное збс будет.
Аноним 09/05/20 Суб 00:24:17 1681707153
>>1680222
Спасибо! Потихоньку начинаю разбираться
Аноним 09/05/20 Суб 20:16:33 1682404154
>>1681167
> Речь про динамически подключаемые библиотеки

Не, для динамических библиотек все будет норм работать.

>>1681174
Вообще без кода непонятно, в чем проблема. Но про CursiveLogger могу сказать, что он странный очень, я тоже на странную хуету натыкался. Юзай лучше https://github.com/deinstapel/cursive-flexi-logger-view , там таки под капотом нормальный логгер. И юзай эту либу с мастера, там есть аналог toggle_debug_view из Cursive.
Аноним 09/05/20 Суб 21:23:01 1682491155
Раст норм как первый язык программирования?
Аноним 09/05/20 Суб 21:42:15 1682516156
>>1682491
Нет, ты выкатишься быстрее чем успеешь вкатиться, порог вхождения даже для опытных челиков достаточно высокий.
Аноним 09/05/20 Суб 21:44:12 1682520157
Кстати, аноны, а хоть 1 тулза/породия на иде умеет в автокомплит кода, измазанного tokio? Что RLS, что идея умирают нахуй когда видят #[tokio::main] и async/await?.
Аноним 09/05/20 Суб 21:59:18 1682544158
>>1682491
Не, у тебя задача не та, тебе рст нахуй не нужон.
>>1682520
У меня редактор + рлс, всё ок работает. Может у тебя rust analyzer?
Аноним 10/05/20 Вск 09:37:23 1682849159
Выделение111.png (38Кб, 1181x163)
1181x163
>>1682404
Разобрался, там у меня был не работали вызовы, которые debug, т.к. я сам же их и отфильтровал, чтобы не видеть пикрил хуеты. Только я протупил и думал про них, что они warn.
Тогда след вопрос - как подавить дебаг выхлоп курсива, но видеть свой?
Аноним 10/05/20 Вск 09:43:02 1682853160
Такое дело, анонасы: всё чаще на тыкаюсь на сравнение раста с swift (if let, общий разраб). Кто-нибудь тыкал/сравнивал? Как у них там с bc?
Аноним 10/05/20 Вск 15:03:15 1683186161
Screenshot2020-[...].png (77Кб, 1258x344)
1258x344
>>1682544
Rust analyzer тоже прекрасно работает

>>1682849
Не думаю, что со стандартным логгером там получится. А для flexi-logger там работает такой же синтаксис, как и для env-logger (типа RUST_LOG="cursive=error,yourlib=debug", не уверен, что точно так должно выглядеть).
Аноним 10/05/20 Вск 15:33:55 1683224162
Бля, какой охуенный язык.
3ий месяц к ряду пилю разные пет-проджекты - хайлоад-веб-бекенд, блокчейн-аппликуху на Exonum'e, n64 - эмулятор.

Просто охуенно. Плюсы кажутся дикой парашей после раста.
Были бы еще конст-дженерики и фулл-тайм проект, вообще бы спермой потолок пробил.

Вообще, в плане работы. Я так понял, если хочешь устроиться куда - дрочи блокчейн ? Ибо из реальных вакансий я видел только блокчейн всё ну и пару а-ля хайлоад серверов.


Аноним 10/05/20 Вск 15:46:40 1683235163
>>1682544
Да нет, всё действительно работает, автокомплит починился после зачистки экспорта (там reqwest и serde конфликтуют из-за структуры Error или какая-то подобная хуйня происходит, но ни RLS ни компилятор нормальное сообщение выдать не могут).
Аноним 10/05/20 Вск 16:16:48 1683257164
>>1682853
По работе пишу на свифте, для души подрачиваю раст, что именно тебя интересует в сравнении?

>if let
Эээ, ну init statement в if-е даже в 17-е плюсы завезли, это уже просто максимальный мэйнстрим которые есть везде (даже в последней версии питона, лол).
>общий разраб
Один из десятков разрабов общий, ты хотел сказать?
>Как у них там с bc?
С чем?

Вообще, хуй знает что сравнивать, они максимально разные. Из реально общего — несколько кейвордов. Мемори менеджмент — в расте завуалированный, но ручной, в свифте полностью автоматизированный (разве что в отличие от языков с GC приходится следить за цикличными ссылками). Дженерики — в расте полностью компайл-тайм, в свифте они компайл-тайм только в совсем простых случаях, а в не очень простых — джава-стайл рантайм. Коллекции — в расте можешь писать свои и вообще ты ни к чему не привязан, в свифте у тебя есть 3 вшитых в рантайм (array/map/set), а дальше ты либо идёшь нахуй, либо ебёшься (написать тото же двусвязный список на свифте, который при этом не будет лагать/течь как тварь — нихуя не легче чем на расте без unsafe, вот уж реально сходство). Парадигма — раст функциональный, а свифт ООП с кучей фич из ФП (как и любой современный хайлевел язык). Система модулей — в расте какой-то пиздец с притензией на плюсовые неймспейсы, дрочево на 2 экрана в каждом файле, в свифте — "import Foundation" и ты импортировал половину системных фреймворков. IDE — в расте блокнот с автокомплитом, не умеющим в генерики и нормальный error recovering, а в свифте из коробки ахуенная, хоть и багованная, full featured IDE со всем, что только может быть нужно. Сферы применения — в расте байтоёбля с миллисекундами, в свифте — клиентские приложения, где жс жирноват, сборка мусора слишком недетерменированно себя ведёт, но надо писать бизнес-логику и UI чтобы не лагало.
Аноним 10/05/20 Вск 17:43:03 1683321165
Есть "обёртка" вокруг указателя.

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

Всё было зашибись, но потом я решил, что неплохо бы выводить в stdout в том, случае если в аргументах программы пользователь не указан путь к файлу на диске. Но тут возникла проблема из-за мономорфизации, как-нибудь можно построить тип с маркером, который бы указывал, что привязка идёт к AsRawFd?
Аноним 10/05/20 Вск 17:51:54 1683336166
>>1683321
А что конкретно за проблема? Как именно (и где) выводишь в stdout и что за ошибка возникает?
Аноним 10/05/20 Вск 18:00:43 1683351167
>>1683336
Ну короч я решил проблему. Просто берёшь и приязываешься к трейту.
Компилятор ругался вот на это:
let b = match fout {
Some(ref file) => FdBio::new(file),
None => FdBio::new(ref_stdout),
}
В ветках разные типы получались.
Аноним 10/05/20 Вск 18:15:17 1683373168
>>1683224
>Ибо из реальных вакансий я видел только блокчейн всё

На хх.ру был секс-шоп.
Аноним 10/05/20 Вск 18:17:18 1683378169
>>1683351
Ну тут да, либо использовать dyn (а учитывая что раст до сих пор не умеет в unsized locals, значит и использовать Box), либо енум с вручную сделанным vtable.
Аноним 10/05/20 Вск 18:25:42 1683386170
>>1683224
В треды прошлые кидали какую вакансию что то с разработкой бд было связанно
Аноним 10/05/20 Вск 18:27:50 1683389171
Аноним 10/05/20 Вск 18:32:58 1683397172
>>1683321
> FdBio<'a, T: 'a>
А тут точно T: 'a нужен? Оно означает что время жизни внутренностей T (нарпимер если внутри T есть ссылка на что-то) должно быть больше или равен 'a. При том при имплементации трейта у тебя стоит where T: AsRawFd, что является сокращением для T: AsRawFd + 'static (т.е. тут T либо не должен иметь ссылок внутри, либо все ссылки должны быть 'static). Это ошибок не вызывает, потому что T: 'static удовлетворяет требованию структуры к T: 'a (потому что 'static больше или равен любому 'a), но что-то явно не так. Либо убери требование T: 'a в структуре, либо добавь where T: AsRawFd + 'a в имплементацию.
Аноним 10/05/20 Вск 18:38:55 1683402173
Аноним 10/05/20 Вск 19:39:19 1683467174
>>1683224
>Бля, какой охуенный язык.
У тебя просто эффект чего-то нового, так-то язык как язык со своими хорошими и плохими местами.
Аноним 10/05/20 Вск 21:36:52 1683570175
те, кто готов отдать свою свободу (с/с++), чтобы приобрести немного временной безопасности (раст), не заслуживают ни свободы, ни безопасности

Аноним 10/05/20 Вск 21:56:02 1683587176
>>1683570
Любитель отстреленных ног, ты?
Аноним 10/05/20 Вск 23:08:22 1683616177
>>1683570
Ну дак вы же первые предали свободу в этом её понимании, уйдя с ассемблера.
Аноним 11/05/20 Пнд 01:13:16 1683663178
>>1683570
>те, кто готов отдать свою свободу (с/с++), чтобы приобрести немного временной безопасности (раст), не заслуживают ни свободы, ни безопасности

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

Только забыть сделать проверку можно, а вот написать
.unwrap_or_else(|| unsafe { unreachable_unchecked()}) случайно - нет.
Аноним 11/05/20 Пнд 09:47:53 1683753179
>>1682491
Он очень хорош, как первый язык программирования, потому что
1. Системный, без GC, так что учит тому, как работает память. Это не нужно всяким математикам, которые только proof of concept рисуют, и веб-макакам, но для любого другого программиста - очень полезно.
2. Учит видеть UB. Это просто охуеть как полезно. Примерно так же полезно, как строгая типизация (которая опять в хуй не упёрлась математикам и веб-макакам, которым вообще похуй, что там у юзера упадёт).
3. Best practices из мира крестов на уровне синтаксиса, а не "посоны, блет, ну мы же вам в 20 стандарте рекомендовали эту срань записывать в комменты к функции, ну почему всем поебать на советы".

Раст плох, если ты не собираешься становиться программистом. Раст - это не язык для школьников, которые не хотят учиться этому ебаному программированию; ты должен чётко понимать, что ты учишь и зачем ты учишь, потому что учить эту срань ты будешь охуеть как долго.
Аноним 11/05/20 Пнд 09:49:36 1683754180
buttplug.io
>Implementations in Rust
Вы официально закшварены.
Аноним 11/05/20 Пнд 09:55:28 1683755181
>>1683754
У меня есть фотки твоего ануса, которые я сделал с помощью твоего баттплага, который я запрограммировал. Так что вопрос о том, кто тут реально зашкварился, остаётся открытым.
Аноним 11/05/20 Пнд 10:32:08 1683774182
>>1683753
> 1. Системный, без GC,
А в чём проблема гарбаж коллекторов? Вроде норм же, тычешь им куда-то, он освобождает память, можно не бояться утечек памяти... Или это лишние циклы процессора использует? Я не знаю правда что такое эти ваши собиратели мусора.
> 2. Учит видеть UB. Это просто охуеть как полезно.
А другие - нет?
> Примерно так же полезно, как строгая типизация
А что это такое?
> 3. Best practices из мира крестов на уровне синтаксиса
Скажу честно, я в этом не разбираюсь.
А вроде бы всё то же самое есть в Сишечке, кроме синтаксиса...
>>1682516
Ну ладно :/
А в чем заключается сложность, желательно простым языком?
>>1682544
> Не, у тебя задача не та, тебе раст нахуй не нужон.
А какая у меня задача вообще? Научиться писать алгоритмы?
>>1682491-кун
Аноним 11/05/20 Пнд 10:45:40 1683789183
Аноним 11/05/20 Пнд 10:53:01 1683793184
>>1683774
>Научиться писать алгоритмы?
У тебя нет задачи их писать, твоя задача разобраться, чем ты хочешь вообще заниматься, то есть выбрать область, которая твоя, а для этого тебе раст не нужен. Если в итоге захочешь заниматься системным программированием, то изучай Си - lingua franca в мире программирования, а в раст закатывайся только тогда, когда сам уже для себя всё решишь, ну или если пойдёшь работать в buttplug.io мозиллу.
Аноним 11/05/20 Пнд 11:20:21 1683810185
>>1683774
>А в чём проблема гарбаж коллекторов?
Они работают с памятью неявно.

>> 2. Учит видеть UB. Это просто охуеть как полезно.
>А другие - нет?
Нет, не учат (C, C++, lua, и ещё куче других языков тупо срать, будет UB в коде или нет).

>> Примерно так же полезно, как строгая типизация
>А что это такое?
Гугли.

>Скажу честно, я в этом не разбираюсь.
>А вроде бы всё то же самое есть в Сишечке, кроме синтаксиса...
Нет. Как минимум, у растосообщества есть нормальный Code of Conduct.
Если не разбираешься, то чего споришь? А если разбираешься и троллишь так, то пойди на хуй, пожалуйста.
Аноним 11/05/20 Пнд 20:26:53 1684340186
>>1667263
>на расте (правда в основном там используется либа на c)
Естественно. Раста как языка не существует.
Аноним 11/05/20 Пнд 20:57:04 1684359187
>>1684340
Нихуя себе. Чо еще расскажешь?
Аноним 11/05/20 Пнд 22:41:28 1684429188
Что там по вэбу? Есть что-нибудь нормальное из модулей? Потыкал го, такое ощущение, что там делают две комманды. Кто первый выпустит релиз, в ту сторону и движемся. С системой модулей вообще нихуя не понятно было. Две разные три используются "чтоб ничего не сломать".
А с вэбом почему, мне так проще вкатываться в язык, начиная с простых проектов.
Аноним 12/05/20 Втр 01:49:37 1684566189
>>1684340
У меня есть возражение, на расте пишут продакшн код в buttplug.io, так что ты соснул.
Аноним 12/05/20 Втр 02:36:54 1684581190
Анон, а насколько сейчас раст пригоден для гамесов? Вроде же идеальный вариант чтобы быстро накидывать игры и без плюсовой хуйни по дороге. Или сейчас до-диез из Unity уже всех устраивает?
Аноним 12/05/20 Втр 08:57:17 1684731191
20200512084942.jpg (247Кб, 1235x667)
1235x667
Изучаю rust opencv, и... блядь, хули так плохо.
let res = core::mul_mat_mat(&mat1, &mat2)?.to_mat()?;
На с++ это было бы что-то типа auto res=mat1*mat2;
Правильно ли я понимаю, что Result как универсальный вариант хэндлинга ошибок делает перегрузку оператора, который может возвращать ошибку, невозможной, и, как следствие, бесполезной для околоматематических задач?
Аноним 12/05/20 Втр 09:14:16 1684741192
>>1684581
>Анон, а насколько сейчас раст пригоден для гамесов?
Хзы, попробуй сам в аметист или еще во что нибудь потыкать.
Тока ECS не пугайся
по моему мнению, всё еще немного сырое, ну и в юнити всё легче намного и быстрее, мбы чуть позже на расте что то взлетит
Аноним 12/05/20 Втр 09:25:41 1684756193
>>1684731
Нашел идеоматическую либу на расте. Перегрузка операторов есть, в коде везде assert!. Ебань какая-то.
Аноним 12/05/20 Втр 10:45:35 1684785194
>>1684731
>Правильно ли я понимаю, что Result как универсальный вариант хэндлинга ошибок делает перегрузку оператора, который может возвращать ошибку, невозможной, и, как следствие, бесполезной для околоматематических задач?

Можно сделать енам или структуру наподобие { Matrix, Result <> }
Аноним 12/05/20 Втр 10:53:17 1684790195
>>1684756
Ну дык, а как ты хочешь по-другому? Либо ручная ебля с резалтами, либо паника при нарушении контракта. Если панику объединить с catch_unwind (при включенном unwind в настройках компиляции), то получится классический try/catch из С++.
Аноним 12/05/20 Втр 10:57:07 1684792196
Screenshot2020-[...].png (620Кб, 723x649)
723x649
>>1684790
Я просто задаю вопросы
Аноним 12/05/20 Втр 14:10:47 1684979197
>>1684741
> Тока ECS не пугайся

Если шаришь, поясни, в чем его преимущество перед обычным ООП? Я вот пытался заюзать, и выглядит очень плохо. Вместо нормальных типизированных объектов мы храним каждый объект по кусочкам без какой-либо связи (только "entity id"-"component"), и тем самым теряем всю мощь системы типов.

Другой анон
Аноним 12/05/20 Втр 14:46:25 1685050198
>>1684979
ESC - это типо реляционная бд.
Аноним 12/05/20 Втр 15:48:15 1685147199
>>1684979
>его преимущество перед обычным ООП
В том что ООП больно было бы сделать на расте, ебля со владением была бы нереальная
больше я не знаю
Аноним 12/05/20 Втр 15:53:44 1685167200
>>1684979
Наоборот, когда пытаешь моделировать всю фигню через ООП, появляется миллион перекрестных ссылок. А вот когда у тебя есть, например, сущность "физический движок", то ему знать только то, что у него есть массив параллелепипедов, которые ему нужно обсчитывать. Лучше инкапсуляция, лучше использование кеша. Так все современные движки работают.
Аноним 12/05/20 Втр 16:44:26 1685273201
>>1684979
1. ОПП убивает производительность, потому что Data Driven Design - это про расчленение всего этого вот, чтобы каждый кусочек работал максимально эффективно, и данные не дублировались без надобности (к тому же, как только ты начинаешь писать "настоящий" ООП, у тебя сразу все объекты хуярятся через Box, что опять-таки убивает производительность).
2. В реальном мире как раз всё похоже на ECS, а не на OOP, поэтому писать в виде ECS всякие штуки, которые хотя бы частично моделируют реальный мир - проще. Да и эффективнее, потому что см. пункт 1.
3. Ты путаешь Object из OOP и систему типов. Система типов вовсе не про "захуярим всё вместе", она про типы. Тут хуй расскажешь, это надо на хаскеле показывать.
Аноним 12/05/20 Втр 17:59:20 1685410202
>>1685167
>>1685273

Ок, тогда как решается проблема "гарантировать, что я не проебал часть объекта"? Ведь мне ничего не мешает снести отдельный компонент, оставив остальные, принадлежащие конкретной entity? Ну и выбор всех компонентов для entity очевидно более тяжелый вычилсительно, чем получить объект.

> В реальном мире как раз всё похоже на ECS, а не на OOP

Очень спорно.Я бы сказал, что прямо противоположно.

> Ты путаешь Object из OOP и систему типов

Нет, не путаю. Может выразился несовсем корректно, это да. Я про то, что если брать подход "похожий на ООП", то у меня будет массив, например, NPC. Каждый NPC - инстанс вполне конкретного типа (в случае раста - структура), который может быть проверен компилятором. А в случае ECS мой NPC - это куча непонятно как связанных штук, корректность которых в компайлтайме не проверишь. Это реально похоже на реляционную БД, с потребностью в написании "запросов" или что-то типа ORM. То есть я, очевидно, не могу утверждать. что это менее быстро работает, но очевидно, что это хуево с точки зрения кода.
Аноним 12/05/20 Втр 20:10:29 1685711203
>>1685410
https://www.youtube.com/watch?v=aKLntZcp27M
>Ну и выбор всех компонентов для entity очевидно более тяжелый вычилсительно, чем получить объект.

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

>Ок, тогда как решается проблема "гарантировать, что я не проебал часть объекта"?

Ты можешь точно также забыть проинициализировать поле объекта и у тебя получится персонаж по умолчанию размером с Австралию и весом ноль.
Аноним 12/05/20 Втр 20:12:33 1685714204
>>1685711
>проинициализировать поле объекта и у тебя получится персонаж по умолчанию размером с Австралию и весом ноль.
С ECS даже проще, программа сразу запаникует, если ты забыл сделать инициализацию.
Аноним 12/05/20 Втр 20:37:44 1685745205
>>1684731
В твоём случае это библиотека-биндинг плюсового opencv
>pub fn cv_operatorX_const_MatExprX_const_MatExprX(e1: const c_void, e2: const c_void) -> Result<*mut c_void>;
По-хорошему, должна быть "няшная" библиотека-обёрточка вокруг этой, которая внутри там паникует, когда надо, а когда нужно возвращает результат в виде определённых алг. типов.
>>1685410
Ну тип выше уже написал, что это это реляционная БД по сути, и твоё недо-ооп умещается в "колонке".
Аноним 12/05/20 Втр 23:50:32 1685952206
я из джавы, хочу в системные, вот типа думаю, учить сразу раст или начать с си и плюсов
Аноним 13/05/20 Срд 00:15:44 1685961207
>>1685952
После Джавы Раст будет комфортнее в плане количества странной херни, которая может случиться в скомпиленной программе. Плюсы комфортнее в плане количества странной херни до компиляции.

По работе: плюсы менее денежные, чем Джава, и это не изменится, сиди в своём энтерпрайзе. А если Раст наконец-таки взлетит, то вакансии на 300кк в наносекунду появятся именно на нём.
Аноним 13/05/20 Срд 11:52:30 1686320208
>>1685711
>можешь точно также забыть проинициализировать поле объекта
В расте - не могу. А в ECS я могу не просто забыть проинициализировать, а полностью забыть добавить данные к объекту вообще.

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

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

Ага, именно поэтому там уже в туториале получаются такие типы для получения данных:

type SystemData = (
WriteStorage<'s, Ball>,
WriteStorage<'s, Transform>,
WriteStorage<'s, UiText>,
Write<'s, ScoreBoard>,
ReadExpect<'s, ScoreText>,
);

Я боюсь представить высоту колонки, если будет реальный проект. Удобство как оно есть, несомненно.
Аноним 13/05/20 Срд 14:43:39 1686532209
>>1686320
>Я боюсь представить высоту колонки
Даун ёбаный, ты это вообще из ресов грузить будешь.
Аноним 13/05/20 Срд 18:51:11 1686984210
>>1686532
> Даун ёбаный
Ясно, порвался

> ты это вообще из ресов грузить будешь
Откуда? Говори хоть понятными не тебе одному терминами.
Аноним 13/05/20 Срд 19:06:25 1686996211
>>1686984
>Говори хоть понятными не тебе одному терминами
Пошёл нахуй, сказал.
Аноним 13/05/20 Срд 22:10:31 1687209212
>>1664495 (OP)
Мой одноклассник читает лекции по Расту. Горжусь.
Аноним 14/05/20 Чтв 07:37:35 1687367213
Как посмотреть покрытие тестами?
Аноним 14/05/20 Чтв 08:06:42 1687368214
>>1685952
Плюсы конечно. Раст решает не существующую проблему, трудно учится, некрасивый, приходится много времени тратить на обход борроу чекера, нет обратной совместимости, трудно работать с системными концептами и быстро, эффективно их реализовывать. Язык пытается избавиться от сайд эффектов, но такова природа компьютера.
Аноним 14/05/20 Чтв 08:33:18 1687371215
>>1687209
Физматовец в треде, все в CSC!
Аноним 14/05/20 Чтв 08:42:49 1687373216
>>1687368
>Раст решает не существующую проблему
Это какая?
Аноним 14/05/20 Чтв 09:44:16 1687395217
>>1687368
>Раст решает не существующую проблему
С точки зрения студентика с laba.cpp - несомненно.

>пытается избавиться от сайд эффектов, но такова природа компьютера
Долбоёбушка, смысл не в избавлении от сайд эффектов, а в контроле над ними и изоляции от чистого кода.
Аноним 14/05/20 Чтв 09:58:46 1687398218
>>1687368
>Плюсы конечно
>Раст трудно учится
спасибо, поднял мне чсв.
Аноним 14/05/20 Чтв 10:59:02 1687456219
Аноним 14/05/20 Чтв 13:04:15 1687605220
>>1687398
Ну тип современный язык, который для тупых зумеров, но чот немного сложноват в том смысле, что ЦА из джиэсо-макак не осиливает -> поэтому раст нахуй не нужен, и пишут на нём полтора энтузиаста. Ну как я это понял.
Аноним 14/05/20 Чтв 13:24:32 1687631221
>>1687605
>джиэсо-макак
в плюсы самая дорога, ага. Сколько там в полюсах занимает стороннюю либу подключить? Вечерок ёбли? Вот где настоящее программирование-то, жс-макак оценит.
Аноним 14/05/20 Чтв 14:04:19 1687702222
>>1687631
>в плюсы самая дорога, ага.
Я ничего не утверждаю, это вообще было про сложность со слов >>1687368
>Сколько там в полюсах занимает стороннюю либу подключить?
Почитать хэлп у компилятора (или один раз написать makefile/CmakeList.txt/Gyp) (есть вообще люди, которые в мс студиях и силайонах сидят), карго удобен, конечно, но тип ты сильно преувеличиваешь сложность, тем более если ты в каком-нибудь линуксе, где куча тулзов и внезапно тоже есть пакетный манагер, с которым ты изи таскаешь хедеры и либархивы - даже быстрее, чем с карго всё будет, если привыкши. Кстати про удобство карго, зонецил expand, вот где раст действительно сияет, такой-то тулинг 10/10.
Аноним 14/05/20 Чтв 14:35:54 1687739223
>>1686996
Ясно, еще один кукарек залетел в тред.
Аноним 14/05/20 Чтв 14:58:28 1687766224
>>1687368
> трудно учится
типа плюсы легкие, пойду струпа обрадую, а то он говорит чет сложна
Аноним 14/05/20 Чтв 15:10:09 1687773225
>>1687739
Извиняюсь, понял, о чем там речь - признаюсь, был не прав, ну а как ты хотел, пидорасина, в той же sqlэлии ты напишешь джоин на 5 строк, когда нужно будет сджойнить 5 сущностей.
Аноним 14/05/20 Чтв 23:39:52 1688543226
>>1687702
> Почитать хэлп у компилятора
Это в случае header-only библиотеки сработает. А если не дай бог либа привязана к своей системе сборки, да ещё и тянет за собой питон/перл/прочее скриптовое говно чтоб суметь собраться, то начинается форменный пиздец.
Аноним 15/05/20 Птн 01:07:37 1688599227
>>1687702
> Почитать хэлп у компилятора
Не поможет с подключением либы, там лишь десятки тысяч специфичных флагов компиляции, которые тебе не нужны.

> один раз написать makefile/CmakeList.txt/Gyp
Ага, всего-то осилить еще один ебанутый язык и на нем написать билдскрипт, в котором ко всему нельзя ошибаться, иначе получишь непонятную ошибку при билде с которой хуй пойми что делать, если опыта нету.

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

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

/ мимо сгоревший плюсовик /
Аноним 15/05/20 Птн 02:01:22 1688607228
>>1688599
> > тем более если ты в каком-нибудь линуксе, где куча тулзов и внезапно тоже есть пакетный манагер
> Не стандартизировано, следовательно скорее всего оно будет работать только на твоей машине (в лучшем случае на твоем дистрибутивенейм, в лучшем случае пару лет, потом ебля с версиями). Чтобы это решить можно взять конан, но там половину рецептов придется писать самому ручками на богомерзком питоне, ибо готовых пекеджей нет.
Еще есть nix, охуенная штука. Описываешь какие зависимости тебе нужны в nix файле, в дирректории проекта вводишь nix-shell и попадаешь в окружение с нужными пакетами.
https://nixos.org/nix/
мимо
Аноним 15/05/20 Птн 04:14:19 1688633229
>>1688607
> всего-то осилить еще один ебанутый язык
Аноним 15/05/20 Птн 12:41:59 1688863230
image.png (16Кб, 253x217)
253x217
>>1688633
Во первых, для базового использования достаточно написать файл уровня пикрл, где в массив просто передавать нужные зависимости.
Во вторых, язык не ебанутый, а функциональный и ленивый, прям как хаскель. Вот такие йобы можно с его помощью делать: https://blog.galowicz.de/2019/04/17/tutorial_nix_cpp_setup/

Думаю на него перейти и для растасам юзаю его для хаскеля, плюсы взял только как пример, ибо заебался для каждого проекта ждать пока карго скачает полгигабайта тех же самых зависимотей.
Аноним 15/05/20 Птн 16:48:41 1689199231
metaconf.png (354Кб, 1440x1271)
1440x1271
Аноним 15/05/20 Птн 17:22:14 1689245232
>>1689199
>ONLINE
>meetup
Ни побухать, ни морду набить, зачем всё это?
Аноним 15/05/20 Птн 17:27:25 1689250233
>>1689245
>побухать
>морду набить
>задроты-чуханы и задроты-хипсторы
Аноним 15/05/20 Птн 18:07:43 1689322234
Аноним 15/05/20 Птн 18:49:42 1689393235
>>1689250
И я фашист. Как же заебали хохлы, либерда и приебалты.
Аноним 15/05/20 Птн 18:53:05 1689403236
>>1689393
ты падажи осознание пиздеца творящегося вокруг еще не наступило, ща ломанутся орды хохлов с галер на рынок
Аноним 15/05/20 Птн 20:19:50 1689472237
>>1688863
> для базового использования
Не надо вообще нихуя уметь и думать.

> язык не ебанутый

> f = libname: libs: derivs: with pkgs.lib;
> concatMap (deriv:
> mapAttrsToList (libVers: lib:
> (deriv.override { "${libname}" = lib; }).overrideAttrs
> (old: { name = "${old.name}-${libVers}"; })
> ) libs
> ) derivs;
>
> overrides = [
> (f "stdenv" compilers)
> (f "poco" pocoLibs)
> (f "boost" boostLibs)
> ];
> in
> pkgs.lib.foldl (a: b: a // { "${b.name}" = b; }) {} (
> pkgs.lib.foldl (a: f: f a) originalDerivation overrides
> )
Аноним 15/05/20 Птн 22:04:53 1689600238
>>1689472
>ниасилил синтаксис, значит язык ебанутый
Аноним 15/05/20 Птн 22:07:06 1689604239
>>1689600
Ты дохуя осилил, аж примеры из гугла тащишь.
Аноним 15/05/20 Птн 22:54:37 1689684240
>>1664495 (OP)
Тех, кто пишут на Си в шутку называют "сионистами".
Тех, кто пишет на Паскале называют "пасквилянтами".
А как называют тех, кто пишет на Расте?
Аноним 15/05/20 Птн 23:13:45 1689708241
external-conten[...].jpeg (25Кб, 400x300)
400x300
Аноним 15/05/20 Птн 23:19:42 1689715242
Аноним 16/05/20 Суб 00:11:42 1689786243
Аноним 16/05/20 Суб 09:24:01 1689968244
>>1689684
В русском языке ещё не образовалось, а в английском - Senior Software Developer.
Аноним 16/05/20 Суб 10:16:41 1689979245
>>1689968
Senior Software Developer from buttplug.io, ето ти?
Аноним 16/05/20 Суб 13:50:25 1690083246
Screen Shot 202[...].png (402Кб, 1440x900)
1440x900
Screen Shot 202[...].png (16Кб, 282x115)
282x115
Аноним 16/05/20 Суб 16:48:18 1690382247
>>1690083
А матом там можно изъясняться? Хотелось бы употребить:
>ёбаный, сука, С++
>питон, нахуй
>goвно ебаное
Аноним 17/05/20 Вск 05:41:26 1691269248
Аноним 19/05/20 Втр 11:08:57 1693542249
Аноны, доколе в идейке
type + &type
будет подсвечивать ошибкой? Совсем обленились, ёма.
Аноним 19/05/20 Втр 12:19:50 1693618250
Аноним 19/05/20 Втр 17:24:17 1693980251
Хочу стать великим в Расте. Что и как делать для этого?
Аноним 19/05/20 Втр 17:34:58 1693998252
>>1693980
Пишешь код
@
Пишешь код
Аноним 19/05/20 Втр 21:03:36 1694222253
>>1664495 (OP)
the book, rustling или rust by example?

что посоветуете, если я уже что-то знаю о программировании в общем (функциональном в том числе), но не на расте
Аноним 19/05/20 Втр 21:11:15 1694228254
>>1693980
До совершеннолетия можешь попробовать питон или го
Аноним 20/05/20 Срд 06:38:27 1694521255
Аноним 20/05/20 Срд 08:23:11 1694546256
squidplug.png (95Кб, 1157x671)
1157x671
>>1693980
>Хочу стать великим в Расте. Что и как делать для этого?
Аноним 20/05/20 Срд 11:46:27 1694843257
>>1694546
Мультиплексирующий охладитель ануса?
Аноним 20/05/20 Срд 12:02:14 1694871258
>>1694843
Вообще-то, это кальмар. Но твоя версия доказывает, что ты не ошибся тредом. Вэлкам, ёпт.
Аноним 20/05/20 Срд 12:33:43 1694938259
>>1694871
Вообще-то у кальмаров нет 3.5 разъема на щупальцах.
Аноним 20/05/20 Срд 12:38:55 1694945260
>>1694871
Кальмар, ну вы, блин, даёте ! Может ты ещё скажешь, что это мифическая медуза Горгона ?
Посмотри внимательнее - это мультипортовый охладитель ануса.
Аноним 20/05/20 Срд 12:54:16 1694968261
>>1694938
>>1694945
Вообще это ультрамодное поделие и работает на Расте.
Аноним 20/05/20 Срд 13:04:14 1694985262
При изучении Раста у вас возникнет необходимость для приобретения Великого Охладителя, который совместим абсолютно с любым гаджетом.
Аноним 20/05/20 Срд 13:07:02 1694990263
>>1694968
Никто не доверит свой анус какому-нибудь с++.
Аноним 20/05/20 Срд 13:43:14 1695032264
image.jpeg (5Кб, 300x168)
300x168
Обогнали и перегнали примитивное говно!
Аноним 20/05/20 Срд 18:16:22 1695362265
Аноним 20/05/20 Срд 19:28:22 1695455266
>>1695362
Во-первых, я бы заменил сигнатуру на
fn plus(a: impl Borrow<i32>, b: impl Borrow<i32>) -> i32 {
Т.е. использовать impl-трейты вместо генериков.
> Надо чтобы функции было похуй что жевать, указатель или валуе.
Зависит от того что ты собираешься с этим значением дальше делать. Недостаток трейта Borrow в том, что на выходе у тебя всегда будет ссылка (даже если передаётся значение) и будет очень проблематично сохранить входные параметры в какую-нибудь структуру. Для простых типов и так сойдёт, потому что их почти бесплатно можно скопировать, а вот для чего-то более сложного (например строки или массивы) лучше использовать Cow (принимать что-то вроде impl Into<Cow<'a, str>> для приёма любых видов строк), который плюс уже содержит имплементации полезных трейтов для строк/массивов и прочего.
Аноним 20/05/20 Срд 19:29:27 1695459267
>>1695362
>хачу завернуть 2 типа в 1
Вам в жс-тред.
Аноним 20/05/20 Срд 19:37:03 1695462268
Аноним 20/05/20 Срд 19:56:08 1695470269
image.jpg (38Кб, 396x385)
396x385
Учу раст 2 года написал хеллоу ворлд
Аноним 20/05/20 Срд 19:58:23 1695472270
>>1695455
Там что-то уровня этого же plus(), так что всё ок.
>>1695459
Заворачивается же.
Аноним 21/05/20 Чтв 04:17:14 1695899271
>>1695362
Я бы переосмыслил и задал себе вопрос: а надо ли такое делать? Если, допустим, надо, но выходит много однообразного кода, то решать бы стал уже через макросы.

Лол, в треде обсуждают Раст, а не дилдаки - растём
Аноним 23/05/20 Суб 20:55:13 1699333272
Чет раст не взлетает..
Аноним 24/05/20 Вск 11:33:34 1699740273
Аноним 24/05/20 Вск 12:22:31 1699782274
>>1699333
>>1699740
https://chromium-review.googlesource.com/c/chromium/src/+/1752927/
Всего-то уже и разрабы хрома активно ищут язык на замену плюсам, лол. Из альтернатив расту:
а) запилить форк ллвм, цланга, написать свой гц и запретить сырые указатели;
б) модернизировать процессоры (лол);
в) жс/жава/котлин (хз почему они в этот список попали, кекус конечно), свифт (который все же слишком хайлевел).
Аноним 24/05/20 Вск 13:16:25 1699836275
rust.PNG (46Кб, 812x471)
812x471
rust2.PNG (63Кб, 805x675)
805x675
Решил тут немного раст потрогать и наткнулся на проблему. Какая неожиданность!

Растаны, хоть и страшно у вас такое даже спрашивать, но почему в прикреплённых примерах, основной поток блокируется после того, как все сообщения получены и потоки отработали? Если перед получением сообщения заджойнить все потоки, то всё нормально.
В доке написано, что iter.next() возвращает либо Some либо None. Но у меня он блокирует поток поле последнего Some и всё.
Аноним 24/05/20 Вск 13:47:18 1699861276
>>1699836
У тебя tx из оригинального треда не умирает, поэтому ресивер не знает, что уже неоткуда брать данные. Вызови mem::drop после своего цикла.
Аноним 24/05/20 Вск 13:59:49 1699891277
>>1699861
Спасибо. Как я понял, по хорошему нужно дождаться завершения всех потоков, дропнуть rx, а потом уже собирать сообщения? Иначе ведь можно дропнуть rx а какой-то из потоков даже не успеет через него сообщение отправить.
Аноним 24/05/20 Вск 14:12:25 1699928278
>>1699891
Нет же, до тех пор, пока жив хотя бы один сендер, ресивер будет блокироваться. Ты ничего пропустить не должен.
Аноним 24/05/20 Вск 14:20:43 1699944279
1482790021987.jpg (37Кб, 480x360)
480x360
>>1699891
У тебя tx и 10 его клонов, итого 11. Сообщение ты отправляешь 10 раз, остаётся один (оригинальный) ненужный, его тебе и надо дропнуть. Между for воткни drop(tx).
Аноним 24/05/20 Вск 14:25:25 1699948280
>>1699944
Вот теперь понял. Спасибо
Аноним 24/05/20 Вск 14:47:51 1699969281
Аноним 25/05/20 Пнд 08:31:07 1701140282
Аноны, вопрос по serde. Допустим, есть строка
"{a: 1, b: 2}". Хочу десериализовать её в структуру вида
struct MyStruct {
a: i32,
b: i32,
c: Instant
}
где в поле c буду пихать время десериализации Instant::now() - т.е. такое себе служебное поле только для меня, обратно сериализоваться оно тоже не будет. Можно такое провернуть?
Аноним 25/05/20 Пнд 09:20:36 1701161283
>>1701140
Можешь Serialize/Deserialize реализовать вручную, например. Или типа такого:

struct Container {
c : Instant,
data : MyStruct
}
Аноним 25/05/20 Пнд 11:23:22 1701316284
>>1701161
Эхх, ну, народ, совсем не шарите.
struct MyStruct {
a: i32,
b: i32,
#[serde(skip, default = "Instant::now")]
c: Instant
}
получится поле с дефолтным значением, которое есть только в структуре раста, но нет в сериализованном виде.
Аноним 25/05/20 Пнд 11:40:43 1701355285
>>1701140
Да. Делаешь имлементацию Default и метишь поле #[serde(skip)]

#[derive(Default, Deserialize, Serialize)]
struct MyStruct {
a: i32,
b: i32,
#[serde(skip)
c: Instant
}

Если не можешь всю структуру сделать Default, тогда установи чере макрос для поля функцию, откуда брать дефолтное значение.
Аноним 25/05/20 Пнд 11:42:36 1701360286
>>1701355
бля, тред не читай, сразу отвечай
Аноним 28/05/20 Чтв 03:00:23 1705022287
Блин, такой крутой язык, я попробовал и уже три дня не могу оторваться от изучения. Мне заходит
Аноним 28/05/20 Чтв 13:17:08 1705511288
>>1705022
У меня так же было, а потом понял, что пока нет никаких интересных фреймворков я ничего кроме простых утилит написать не могу. Я же джава макака.
Аноним 28/05/20 Чтв 16:12:53 1705765289
>>1705511
>нет никаких интересных фреймворков
Если заходить со стороны жабы/гвидона, то маловато. А если со стороны сей/плюсов, то очень даже + гораздо легче их подключить и использовать.
Аноним 28/05/20 Чтв 21:01:27 1706113290
>>1705765
unsafe руинит всю концепцию языка
Аноним 28/05/20 Чтв 21:17:46 1706130291
Аноним 28/05/20 Чтв 21:26:04 1706136292
>>1706113
В каком-нибудь проекте, который в иных обстоятельствах был бы на писан на жс/жабе/питоне, вполне можно и без ансейфа, даже не задумываясь "а не впендюрить ли".
Аноним 28/05/20 Чтв 22:52:41 1706190293
>>1706136
Кстати да, я как жаба макака вообще с трудом представляю зачем могут unsafe блоки понадобиться. Это чисто игрушки сатаны для всяких додиков, которые конпеляторы пишут.
Аноним 28/05/20 Чтв 22:53:45 1706193294
>>1706113
Death руинит всю концепцию жизни
Аноним 29/05/20 Птн 00:04:28 1706262295
>>1706113
В Хашкеллях, Питонах, Сисярпах и прочих Джавах есть буквально точно такие же средства, но почему-то претензии есть только к Расту. Причем, Ансейфом пользоваться даже проще, чем Джавовским JNI, потому что не надо думать ни о каком сборщике мусора и сейфпоинтах.
Аноним 29/05/20 Птн 09:56:56 1706481296
>>1706113
>unsafe руинит всю концепцию языка
unsafe - часть концепции языка
Аноним 29/05/20 Птн 10:05:04 1706493297
>>1706190
>Кстати да, я как жаба макака вообще с трудом представляю зачем могут unsafe блоки понадобиться. Это чисто игрушки сатаны для всяких додиков, которые конпеляторы пишут.
Немного поржал с игрушки сатаны (просто забавно звучит), мест много где он нужен, например, если у тебя используется ffi (там правда код прямой как рельсы), или, нопример, из очевидного запись в вектор без инициализации буфера, пины, тысячи мест так-то.
Аноним 29/05/20 Птн 11:48:02 1706592298
>>1706493
Ну и вся эта хрень в итоге не нужна, если ты пишешь клиента для рест-апишечки, например. Пины я, например, юзал лишь однажды - как раз с ffi, когда нужно было передавать контекст и получать коллбэк из сишного кода - часто ты проделываешь такое в жс, например?
Речь о том, что если ты юзаешь раст там, где обычно юзают жабу/питон/жс, то об ансейфе можно не вспоминать.
Аноним 29/05/20 Птн 11:59:07 1706599299
>>1706592
>Ну и вся эта хрень в итоге не нужна, если ты пишешь клиента для рест-апишечки, например.
Ну так и раст не нужен в этом случае, вообще раст и
>где обычно юзают жабу/питон/жс
попахивает хипстерской хуйней и buttplug.io, я к тому, что нормальные мужики на расте явно этим не занимаются.
Аноним 29/05/20 Птн 12:02:39 1706608300
>>1706262
Не, в питонах такого нет, он безопасный и память не течёт.
Аноним 29/05/20 Птн 12:10:48 1706615301
Аноним 29/05/20 Птн 12:20:43 1706631302
>>1706599
>Ну так и раст не нужен в этом случае
>нормальные мужики на расте явно этим не занимаются
ой, мужчинка, выйдите, а
Аноним 29/05/20 Птн 14:19:09 1706774303
>>1706592
> если ты пишешь клиента
Потому что весь ансейф уже написан в библиотеках и зачастую его пользователям он не нужен. Исключение - неинициализированная память, для которой ансейф нужен как со стороны библиотеки, так и со стороны бинарника. Но тут уже что-то пытаются сделать: https://github.com/rust-lang/rfcs/pull/2930 после этого пулл-реквеста, ансейф нужен будет только библиотеке, а пользователь сможет использовать только безопасные функции.

А так ансейф зачастую используется для трёх вещей: (1) неинициализированная память, (2) ffi, (3) работа с указателями (у указателей нету времени жизни, но зато они могут указывать на освобождённую память, а потому нужно следить за ними самому).
Аноним 30/05/20 Суб 01:07:59 1707594304
Хочу выучить растик, лучший язык. (по виду)
Но вакансий мало
Аноним 30/05/20 Суб 01:17:24 1707604305
>>1707594
Лучший язык это js. А раст это так игрушка на пару вечеров.
Аноним 31/05/20 Вск 01:57:54 1708803306
>>1706615
Ты что, это ДРУГОЕ. Написано же, "C or C++", вот они и текут. А питон заебись и безопасный.
Аноним 31/05/20 Вск 23:54:39 1709554307
Аноним 01/06/20 Пнд 06:37:58 1709680308
Аноним 01/06/20 Пнд 10:58:20 1709760309
>>1709680
И что там вкрации? Что замеряли-то?
Аноним 01/06/20 Пнд 12:54:38 1709844310
>>1709760
В Яндексе у людей бомбит с Раста, это ответочка.
Аноним 01/06/20 Пнд 13:24:59 1709865311
>>1709844
Ну конечно бомбит.
Вот представь — ты пол жизни потратил на изучение чего-то и ценишься только из-за этого навыка, а тут приходят хипсторы и говорят "это всё хуйня, выкидывайте".
Аноним 01/06/20 Пнд 14:42:45 1709934312
>>1709865
Жаль, что уже поздно.
Похоже, Раст останется нужным 2.5 команиям(
Аноним 01/06/20 Пнд 14:50:50 1709947313
>>1709865
Яндекс - это кто вообще?
Аноним 01/06/20 Пнд 14:53:35 1709953314
>>1709934
Будет нужен, когда нынешним растошкольникам будет по 30. Но это случится лет через 25, не раньше
Аноним 01/06/20 Пнд 16:21:35 1710089315
image.png (128Кб, 951x608)
951x608
Аноним 01/06/20 Пнд 16:39:55 1710110316
>>1710089
Звучит как хуйня, если честно, не подумай, что расто-хейтер, вот когда хотя бы мози перепишет nss на раст, тогда и приходи.
Аноним 01/06/20 Пнд 16:43:36 1710115317
>>1709953
Жаль. Потому что язык беспрецедентно топовый.
Ну объективно же.
Аноним 01/06/20 Пнд 16:50:36 1710131318
bug.jpeg (11Кб, 400x220)
400x220
>>1709680
>Вообще любой продукт, от которого зависит пол мира, очень даже имеет смысл переписать. OpenSSL приводят часто как хороший пример. Был бы он на расте мы, как минимум, избежали бы пачки уязвимостей, которые поставили эти пол мира на уши. Имеет смысл? Я думаю да.
Аноним 01/06/20 Пнд 16:54:53 1710141319
>>1709680
>Фишка в том, что в расте такой код "за забором". И я как-то считал, в СТД (в котором ужас-ужас сколько ансейфа) его значение порядка 0.1% от общей кодовой базы (считал очень грубо, по строчкам). Это значит, что у вас не миллион строк кода где можно "на секунду отвлечь/забыться", а тысяча. А теперь допустим что программист в среднем "забывает/отвлекается" раз на тысячу строк кода. В итоге в одной программе будет тысяча багов из-за этого, а в другой — один.
Что за унтеры там сидят? Уноси.
Аноним 01/06/20 Пнд 17:05:37 1710167320
1547362870056.png (105Кб, 600x600)
600x600
Аноним 01/06/20 Пнд 19:23:34 1710353321
>>1710131
Бесит, блять. Как появляется что-то реально годное, сразу набигают толпы неадекватов (у Раста это, видимо, такие вот переписатели) и портят годноте репутацию.
Аноним 01/06/20 Пнд 20:38:00 1710399322
>>1710353
А подобные процитированному долбоёбу из >>1710141 тебя не бесят? Переписатели всегда были, у всего, просто мне нравится этот наивный юноша с "перепишем OpenSSL" на раст, он наверное и не в курсе, о чём там openssl.
Аноним 01/06/20 Пнд 21:21:42 1710428323
>>1710399
>он наверное и не в курсе, о чём там openssl.
Ну давай посмотрим на описание последней CVE
>Уязвимость CVE-2020-1967 представляет собой «ошибку сегментации» в функции SSL_check_chain. Серверные или клиентские приложения, вызывающие функцию SSL_check_chain () во время или после TLS-рукопожатия (версии 1.3), могут аварийно прекратить работу из-за разыменования нулевого указателя в результате неправильной обработки TLS-расширения «signature_algorithms_cert».
Так openssl — это про use after free?
Или из того что сразу приходит на ум — https://ru.wikipedia.org/wiki/Heartbleed
Так openssl — это про отсутствие проверки границ?
Поясни, про что же openssl. Ну не про корявый язык на котором написана же?
Аноним 01/06/20 Пнд 21:45:37 1710457324
>>1710428
Твой высер не в тему вижу, переписанный на расте openssl тобою не вижу.
Аноним 01/06/20 Пнд 21:51:10 1710465325
>>1710457
Так openssl это про
>высер
?
Или про что? Не понимаю.
Аноним 01/06/20 Пнд 21:52:53 1710468326
>>1710457
Типичный критик:

> он наверное и не в курсе, о чём там openssl

> Поясни, про что же openssl

> Сам не написал - нещитово

Ты блять вообще способен связать 2 фразы в диалоге и построить семантически корректный ответ третьей фразой?
Аноним 02/06/20 Втр 04:56:47 1710639327
>>1710353
> переписатели
Ну это даже в мемес переросло. Сейчас правда как-то поутихло, раньше хуже было.
Аноним 02/06/20 Втр 07:56:22 1710684328
1561205883225.png (162Кб, 600x382)
600x382
>>1710639
Самое смешное было смотреть на оправдание С/С++-идиотов, которые защищали дырки в своих языках. Линус так вообще откосплеил мэра лондона с его "UB это нормальная практика для разработчика на С и их не стоит бояться".
Аноним 02/06/20 Втр 10:01:26 1710723329
>>1710465
>>1710468
openssl - это две библиотеки crypto и ssl, первая - "швейцарских нож" от мира криптографии, вторая собственно сама реализация протоколов ssl разных версий от старых до самой последней. По поводу первой либы, значит, это огромный набор реализаций алгоритмов, которые все разом никому не нужны, что-то конкретное можно всегда найти в другом месте, даже в виде crate на расте. Вторую библиотеку тоже нет смысла переписывать, потому что там куча легаси + есть другие реализации, если тебя ssl из openssl не устроил, например, libressl, раз уж heartblead упомянули.
Пример из жизни, который работает, ring - небольшая по меркам монстра libcrypt библиотека, но её и webpki достаточно для реализации tls 1.3, ну и rustls как имплементация ssl.
То есть мало того, что переписать openssl на раст - непосильная задача, так она и не стоит вовсе.
Аноним 02/06/20 Втр 11:07:06 1710749330
image.png (109Кб, 794x379)
794x379
Оригинальный тред: https://2ch.hk/cc/res/471403.html

Привет! Работа над TON Dark (Rocks) уже идет вовсю. Скоро будем запускать тестнет и распределять наши настоящие коины (много коинов!) среди членов команды. А ты все сидишь на сосаче. Ты не хочешь попасть на раздачу? Для этого надо вступить в нашу команду и сделать какой-то effort. Особенно сейчас в почете C++-челы, Rust-челы и прогеры с опытом работы под блокчейн.

tondarklead@protonmail.com
Аноним 02/06/20 Втр 11:17:36 1710755331
>>1710749
Ты долбоеб, тон уже всё
Аноним 02/06/20 Втр 11:22:31 1710756332
>>1710749
Раз уж расто-тред, что там с либрой, ну и для справедливости с зеброй, зойчем кому-то нужен тон, если упомянутые работают (если работают)?
>>1710755
Тон уже всё, но был работоспособен.
Аноним 02/06/20 Втр 11:28:25 1710757333
>>1710756
>Раз уж расто-тред, что там с либрой, ну и для справедливости с зеброй, зойчем кому-то нужен тон, если упомянутые работают (если работают)?
>либра
Лол. Во-первых, еще не работает, Цук сейчас пытается поулчить у США разрешение, во-вторых, сейчас бы отправлять сканы своих документов и проходить полный KYC-AML цикл, чтобы мне разрешили ВЛАДЕТЬ КРИПТОВАЛЮТОЙ. Это нормально вообще, зачем тогда крипта? Хотя это же создатель ФСБука, камон.
Аноним 02/06/20 Втр 11:51:35 1710766334
>>1710757
>еще не работает
Я имел в виду работоспособность самой программы, типо как тон полгода назад, когда там они свои конкурсы проводили, как я понял, он уже был готов. Либру довольно давно пилят, возможно она уже готова, я это имел в виду, а не запуск. Ну и зебра ещё есть. На них смотрели?
Аноним 02/06/20 Втр 20:13:44 1711230335
struct Zalupa{
id: i32,
seks_list: Vec<Pizda>
}

struct Pizda{
id: i32,
zalupa: &Zalupa
}

Аноны, может кто объяснить как в данном случае правильно расставить лайфтайм спесифаеры? Вообще никак понять не могу. В залупе должен быть список пезд, залупа владеет и списком и каждой пиздой в нём. А в пизде ссылка на какую-то залупу.
Аноним 02/06/20 Втр 20:54:24 1711295336
1470616442766.jpg (25Кб, 585x433)
585x433
>>1711230
> в данном случае правильно расставить лайфтайм спесифаеры
Никак.
Аноним 02/06/20 Втр 20:56:31 1711297337
>>1711295
Можно пожалуйста подробней?
Аноним 02/06/20 Втр 20:59:31 1711307338
Аноним 02/06/20 Втр 21:02:51 1711316339
>>1711307
Пиздос вы тут умные завидую
Аноним 02/06/20 Втр 21:18:31 1711341340
>>1711230
Поржал немного, ты меня развеселил, поэтому помогу тебе, добрый молодец.
>А в пизде ссылка на какую-то залупу.
struct Pizda<a> {
ptr: *mut Zalupa,
_marker: marker::PhantomData<&'a Zalupa>
}
mut/const по вкусу.
Аноним 02/06/20 Втр 21:44:05 1711361341
Аноним 02/06/20 Втр 23:00:11 1711415342
>>1711341
Вообще для указателей лучше всегда NonNull<T> использовать https://doc.rust-lang.org/std/ptr/struct.NonNull.html , либо Option<NonNull<T>> если возможно null-евое значение. Оба равны usize и являются zero-cost абстракциями и чуть безопасней сырых указателей.
Аноним 03/06/20 Срд 06:36:10 1711603343
>>1711415
Raw pointer - выбор настоящего системного программиста, NonNull Option - для девочек.
Аноним 03/06/20 Срд 11:22:14 1711679344
>>1664495 (OP)
Бля, ну что за кривое пердольное говно? Стоял stable-x86_64-pc-windows-msvc, решил накатить gnu, теперь вообще ничто не ставится.
rustup срёт ошибками, что нет нужных папок. Создаю руками, он пишет всё установлено, но по факту нихуя нет.
Пробовал standalone installers, но где в этом говне стандартная библиотека? Clion не хочет это говно принимать, хотя нужную папку указываю.
Ну пиздец. Причём в справке нихуя не написано, пишут ставить интерактивной залупой rustup-init и ни слова как заставить это говно работать.
Аноним 03/06/20 Срд 11:38:27 1711694345
fcc7zgxua5h41.jpg (40Кб, 630x630)
630x630
>>1711679
>сидеть на виндовозе в 2к20.
Аноним 03/06/20 Срд 12:10:58 1711725346
Аноним 03/06/20 Срд 12:17:58 1711731347
Настройки X
Ответить в тред X
15000 [S]
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов