Anonymous
ага
понял, да, иллюстрация годная
Denis
scoped убрали из std
Doge
scoped убрали из std
Есть аналоги в либах
Doge
scoped убрали из std
https://docs.rs/crossbeam/0.7.3/crossbeam/thread/struct.Scope.html
Denis
Это я нашел да.. Такс ща посмотрим
Denis
история о том как я решил сразу взять hard и exercism-а по расту
Doge
Это я нашел да.. Такс ща посмотрим
Ну ещё попробуй засунуть значения без ссылок в Mutex
Denis
let counter = Arc::new(Mutex::new(*input)); ^^^^^^ doesn't have a size known at compile-time
Denis
=/
Denis
the size for values of type [&str] cannot be known at compilation time
Doge
the size for values of type [&str] cannot be known at compilation time
Потому что тебе надо это именно в вектор скопировать.
Denis
аа я понял
Doge
аа я понял
Ты не можешь просто так владеть слайсом, потому что слайс - это тупо ссылка на чью-то другую память
Doge
аа я понял
И &str тебе надо в String тогда тоже перевести
Doge
Если этого не хочется делать, то тогда лучше реально Scope взять
Ayrat
а, это про HKT?
нет, это не про хкт
Ayrat
вот это делает джава когда возвращает Option<?>
Ayrat
и ты так делай
Vladimir
что-то сомнительно)
Vladimir
А, или она при доставании из ? делают всегда анбокс?
Ayrat
там нет валуе типов
Ayrat
это просто каст
Ayrat
хотя не
Ayrat
там есть примитивы
Vladimir
как я помню джава может легко из Option<?> кастовать в Option<T> и обратно, ну и понятно в конкретные типы
Denis
Если этого не хочется делать, то тогда лучше реально Scope взять
да, я начал пробовать и чет пздц он все еще хочет 'static для String потому что counter (который Arc<Mutex>) use-after-free
Doge
аа я понял
Т.е. тут идея в том, что у тебя либо Arc<Mutex<...>> должен владеть всеми данными внутри себя, то есть должен содержать Vec<String>. Либо у тебя треды должны жить ограниченное время и быть созданы через какой-то scoped. И да, если ты через Mutex ничего не меняешь, а только читаешь, то надо задуматься, а нужен ли именно Mutex
Vladimir
Ну конечно может)
ну так чем это не хкт?
Ayrat
ну так чем это не хкт?
Тем что нет проверок?
Ayrat
Это просто обжект
Vladimir
Тем что нет проверок?
проверок нету, но хкт есть)
Doge
ну так чем это не хкт?
Это не хкт, это экзистенциальные типы называется
Doge
проверок нету, но хкт есть)
Это читается, как существует тип ? (но он не известен), который засунут в Option
Denis
вот без mutex-a
Denis
Если что кстати, никто не против что тут раст ?)
Denis
мб я кому-то мешаю своим не-дотнетом
Viacheslav
Пока не анкап - норм
Ну зачем? Ты же диёра саммонишь
Ilya
Наоборот.
Viacheslav
Он вроде умер
Серьёзно? Тогда F
Ilya
Да не умирал он. Еглифу отвечал.
Igor
да его забанили
Doge
вот без mutex-a
Ну опять таки, у тебя тред который живёт неизвестно сколько (потенциально бесконечно), замыкается на ссылку на строку (&str), которая живёт ограниченное время.
Doge
осознал, поменял, запустил ,победа
Ага, теперь альтернативный вариант - попробуй сделать scoped тред через тот же crossbeam и передать туда ссылки.
Denis
щас все по порядку, я сначала разобью это на n воркеров ,а не как сейчас на кол-во строк
Doge
осознал, поменял, запустил ,победа
Т.е. тут тебе пришлось копировать память, чтобы &str в String перевести, а в варианте со scoped можно попробовать без этого обойтись
Doge
да, я и хотел без аллокаций
Тогда пробуй со scoped из того же crossbeam
Denis
Это, как говорится, после кофе
Крылатый
Маск ебанулся
А как именно? Сказал и недоговорил((
Anonymous
нет, это не про хкт
а чего не про ХКТ? как мне показалось, там речь про kind * -> * -> *, не?
Doge
Это, как говорится, после кофе
И если хочешь ещё перформанса, то можешь посмотреть на FnvHashMap, она отдельный крейтом подключается. Она ощутимо лучше работает для мелких ключей, а-ля тот же растовский char в 4 байта
Vasily
Когда у меня будет много свободного времени, тоже выучу раст. Выглядит красиво и логично
Doge
Когда у меня будет много свободного времени, тоже выучу раст. Выглядит красиво и логично
Раст - это ML-подобный язык с тайпклассами, макросами и афинными типами, но запертый в синтаксис си-подобного, чтобы не пугать людей
Denis
да, туда говорят еще на кой то хер try добавили
Vasily
Но пока времени нет от слова совсем
Vasily
Да там просто надо философию понять
Doge
да, туда говорят еще на кой то хер try добавили
try блоки - это тупо сахар для композиции Result'ов
Vasily
Разделяемой памяти, вот этого всего
Vasily
Что память нельзя шарить этц
Denis
Да там просто надо философию понять
скорее не философию, а начать думать о том что не "GC приберет" а надо самому
Denis
В принципе можно обмазать все Arc и получить objective-c, лол
Doge
Чет муки Дениса просто собрать обычный код не сильно воодушевляют
Для языка с отсутствием гц, но при этом автоматическим управление памятью, страдания - это норм трейдофф
Vladislav
скорее не философию, а начать думать о том что не "GC приберет" а надо самому
Где-то были папиры что современные гц не сильно уступают языкам без них
Doge
Чет муки Дениса просто собрать обычный код не сильно воодушевляют
Ну и когда появляется интуиция относительно лайфтаймов, то больших проблем не возникает