Anonymous
Vladimir
Вообще да, уник удалили вроде, видимо не нужен был
Leonid 🦇
как вообще без nll растом то пользоваться?
Alex
Leonid 🦇
non lexical lifetimes
Cat
Leonid 🦇
можно, да?
Leonid 🦇
спасибо!
Marat
պլհկ
U N S A F E
Marat
Играться только можно
պլհկ
M E M T R A N S M U T E
Leonid 🦇
вот пока мне transmute вообще не пригодился
Leonid 🦇
Leonid 🦇
что вообще может трасмут чего нельзя сделать кастом указателей, как в С?
Anonymous
let data_placemet = av_mallocz(1024) as *mut *mut u8;
let mut slice = ::std::slice::from_raw_parts_mut(data_placemet, 1);
slice[0] = raw.ptr();
Anonymous
ебучий ффмпег
Anonymous
параметр на стеке не выровнен видители
Anonymous
и как его выровнять то :\
Leonid 🦇
сделай структ с одним полем и #[repr(align=16)]
Leonid 🦇
ему поди 16 надо под sse
Anonymous
ну я попробую... структ конечно....
Anonymous
но не хватает атрибута "выровнять на стеке"
Anonymous
теперь мой модуль по показу видео точно нечитаем
Антон
Антон
Одно.
Что это за программа такая?
Антон
Антон
Антон
А всё потому, что std::mem::forget не unsafe
Αλεχ
Αλεχ
ты запустил операцию, дальше устройство само там с памятью развлекается
Αλεχ
CPU и OC отдыхают пока не придет сигнал о завершении
Αλεχ
Αλεχ
и обратно
Leonid 🦇
Но зачем?
Αλεχ
ну блин
Αλεχ
например чтобы сериализовать
Leonid 🦇
Slice::from_raw_parts?
Leonid 🦇
Кастану реф в указатель
Αλεχ
https://github.com/orbita-center/pwasm-abstractions/blob/feature/development/pwasm-abstractions/src/lib.rs#L191
Αλεχ
реализуй без transmute
Leonid 🦇
&ref as *const whatever as *const u8
Leonid 🦇
норм?
Αλεχ
ничосе
Αλεχ
изобрел трансмут
Αλεχ
молодец
Leonid 🦇
хех
Leonid 🦇
ну а ты говоришь нельзя
Αλεχ
Αλεχ
то что ты его заинлайнил не превратилось в "каст рефов"
Leonid 🦇
ну так а чо вы меня им пугаете тогда?
Leonid 🦇
в смысле?
Денис
я правильно понимаю, что для такого нужен HKT? https://play.rust-lang.org/?gist=e8012b31b3b056626f7727208a330d95&version=stable&mode=debug&edition=2015
Cuno
Денис
Денис
я хочу, чтобы мой трейт был заимплеменчен для любой функции с сигнатурой fn check_generic<I: Iterator<Item = u8>>(i: I)
Денис
с твоим вариантом это, очевидно, невозможно
Денис
и ты ваще мне задачу поменял кардинально =) трейт есть такой, какой он есть =)
Денис
это конечно искусственный пример, но всё же
Cuno
с твоим вариантом это, очевидно, невозможно
мне было не совсем очевидно, поэтому я решил проверить: https://play.rust-lang.org/?gist=06f58c5d2e32e6adac7469b2095cda76&version=stable&mode=debug&edition=2015
Денис
блин, ты генерик перенёс на другой уровень, это не вариант вообще =)
Cuno
Ну с данным примером разницы где генерик нет
Денис
ещё как есть, is_implemented не должно принимать никаких I :)
Денис
короче сорян за "очевидно невозможно", невнимательно посмотрел предложенный вариант
Денис
но вся суть в том, что в трейте функция, как это называется, generic over arguments, и этот факт менять нельзя)
Cuno
А, ты про доп. параметр
Денис
ну да
Cuno
Возвращаясь к изначальному вопросу - да, hkt нужно.
Денис
спасибо :)
Денис
на самом деле в первый раз столкнулся с реальной потребностью в HKT в расте