Vladimir
у тебя тут сразу две хуйни.
Vladimir
process не будет так работать, потому что ты хочешь в одной из веток сразу два раза использовать вектор
Vladimir
один раз бороуить мутабельно, второй раз иммутабельно
Сережа
через unsafe будет
Сережа
кампилируется же!
Vladimir
2, у тебя не полная сигнатура вот оно не может вывести лайфтайм, правильно будет
fn get_processor<'a> (req: &'a [u8]) -> Box<Fn(&mut Vec<u8>) + 'a> {
Vladimir
Сережа
я и спрашиваю есть какая-то магия сказать кампилятору, что у cb - время жизни process, не зависящее от аргумента get_processor
Vladimir
наоборот
Vladimir
оно зависит от аргумента
Сережа
не зависит, в cb я же его (аргумент) не использую (пока и вообще не планирую)
Сережа
я на основании аргумента создаю калбек и его возвращаю, калбек про аргумент ничего не знает
Vladimir
Box::new(move |acc| cb_type2(req[OFFSET_PODTIP], acc))
req
Vladimir
это что по твоему?
Vladimir
не аргумент get_processor????
Сережа
это по моему должно склонироваться, т.к. там мув
Vladimir
еще раз
Сережа
т.е. я создал замыкание, при создании замыкания мне нужен req, при вызове замыкания - нет
Vladimir
еще раз, у тебя есть забороуленный req
Vladimir
если замыкание зависит от него
Vladimir
то его вж зависит от вж req
Сережа
да я понял, его не отпустит, пока есть замыкание
Сережа
но фактически то он мне не нужен после того, как замыкание создано
Vladimir
если оно тебе не нужно, то ты так и запихни в него то что тебе из этого слайса нужно
Сережа
давай поступим проще, если ты можешь это говно переписать без unsafe меняя только тот блок где unsafe - перепиши пожалуйста
Vladimir
http://play.integer32.com/?gist=eafcad71ca22b63c902244342a2ef826&version=stable
Vladimir
кстати статик тут на самом деле не нужен
Vladimir
явный*
Filipp
Vladimir
просто удалил ансейф, а у него код и так работал?)
Filipp
это уже детали
Сережа
да, лол
Filipp
в балладах такое не пишут
Vladimir
чет шрамко сразу вспомнил
Vladimir
с его Rc<UnsafeCell>>
Vladimir
Oleg
https://play.rust-lang.org/ отказывается шарить, в консоли говорит, что с моего апишника превышен лимит по обращениям к gist API
Oleg
За моё небольшое знакомство мне показалось, что лучше с компилятором не бороться. Чем раньше осознаешь, что твоя затея - говно, тем меньше проблем в дальнейшем
Сережа
спасибо
Сережа
там клонирования не было из-за того что req ссылка, и операция индексирования проводилась во время вызова замыкания
Сережа
хотя я не уверен
Сережа
т.е. я хочу сказать что move перемещал сам req в замыкание, а уже при вызове замыкания разрешалось req[OFFSET_PODTIP]
Сережа
а я искрене считал, что req[OFFSET_PODTIP] будет как u8 и просто склонируется
Маjко
Сделаешь move || -- скопируется
Сережа
http://play.integer32.com/?gist=146c864ca7c1ba5f15d82a4cb8306eb4&version=stable
???
Vladimir
Мув мувит переменные
Vladimir
Не разворачивает твои выражения
Маjко
+
Маjко
Получай значение вне замыкания
Маjко
И передавай
Сережа
это как-то противоречит тому, что я написал выше?
Маjко
Ты очень путанно излагаешь
Сережа
вот в си++ нормально зделали
Сережа
https://ideone.com/u5Sgff
Vladimir
Да, в с++ можно итератор инвалидировать в цикле
Vladimir
Тоже нормально
stalkerg
а кто нить пробовал opecv на раст переписывать?
Vladimir
Опенкв ж только компилит шейдеры, не?
stalkerg
Vladimir
Ну Лан тогда
Vladimir
Вроде никто не переписывал
Sergey
зачем переписывать?
Sergey
че биндинги не проложить?
Vladimir
(+
Vladimir
++
Vladimir
Это растофанаты юные хотят всё переписать
Vladimir
На этот игрушечный язык
Sergey
почему игрушечный?
Vladimir
Всмысле почему
Vladimir
На нём же никто не пишет
Sergey
пишет же
Vladimir
@LooMaclin расскажи админу, он чёт не шарит
Sergey
даже в рашке я лично сталкивался с несколькими компаниями
Sergey
которые на расте пишут
Vladimir
Та мем такой, чё ты всерьез вообще
Sergey
иногда спам чищу
Sergey
но так да
stalkerg
что за мем? у меня болезнь - отсутствие мемов в крови.