Anonymous
но не создание)))0
Anton
или об этом хуй знает
Marat
https://doc.rust-lang.org/beta/nomicon/ffi.html
Marat
Вот тут кстати есть пример с колбэком
でゲソ
Маjко
https://gist.github.com/anonymous/2ae3e462a11be333aef10505af744992 ни работает чистая функция(((
https://play.rust-lang.org/?gist=0675f2e4cd04175ace7cf0953bad40d8&version=nightly
Маjко
Хоть крейт пили и юзай, мач синтакс шугар
Маjко
Дичи с битмаской можно вынести в proc-macro
Маjко
И ваще красиво будет
Маjко
Но лучше, конечно, в процедурном макросе тогда уж сразу реализовать выкидывание не нужной ветки
Anton
собсно мне нужно было передать extern unsafe fn() {} в качестве колбэка, но это обычная функция а не замыкание и поэтому доступ к move данным нет
Anton
по идее можно было бы как нибудь наверное кложу передать, но просто на кложу он ругается мол не тот тип
Anton
и я не знаю чо да как сделать
Судзумия
Кложу нельзя передавать
Судзумия
Это раст тип
Судзумия
Передавать в ффи обычно можно только extern "C" функции
Vladimir
http://www.hackersdelight.org/aha/aha.pdf
Судзумия
И вообще весь ффи это зона, где растовые вещи не особо работают, то есть привет всем боксам и далее по списку
Anonymous
Гммм... а можно на разные таргеты разные build.rs повесить?
Anton
и я например хочу из этой функции вызвать колбэк из контекста сохраненного
Судзумия
Используй боксы и указатели
Anton
грубо говоря - в инстанс ктото добавил чистый безопасный кложе колбэк ив него нужно закинуть данные из небезопасного экстерн колбэка
Anton
Используй боксы и указатели
но функция же никак не связана со скоупом
Anton
в отличии от клож там же нет move и она полностью изолирована
Судзумия
Чо куда закинуть
Судзумия
Короче, как я тебя понял
Судзумия
У тебя есть объект, куда ты хочешь добавлять данные из екстерн функции?
Маjко
Но не наоборот
Vladimir
Ну выкидывать нельзя ветки
Маjко
Можно
Vladimir
Так если юзать в рантайме, то как?)
Маjко
Константную функцию с неконстантным аргументом низя
Маjко
Насколько я понимаю
Vladimir
Почему это?
Vladimir
Можно какраз
Vladimir
https://play.rust-lang.org/?gist=7400424cabe1a32af87ed91ec7b54db6&version=nightly
Маjко
В чем смысл тогда константных функций, которые должны работать в компилтайме?
Маjко
При неконстантных аргументах
Vladimir
В том что они могут и так и так
Vladimir
В рантайме они чистыми становятся
Vladimir
Что тоже не плохо
Vladimir
Например создание объектов
Маjко
И хер пойми где твоя функция выполнится
Маjко
Крестоподход какой-то
Vladimir
Всмысле хрен пойми)
Vladimir
Если хочешь константно, присваивай константе
Andrew
+
Vladimir
Всё ж просто)
Маjко
Ну вот так и хрен пойми
Маjко
println!("2 - 3 = {}", var(false, 2, 3));
Маjко
Рантайм или компилтайм?
Сережа
это в рантайме считается
Vladimir
+
Сережа
а хотя хз
Маjко
Ну и какого ж хрена, если все данные — константы?
Vladimir
Но может соптимизировать
Маjко
Я это и называю "хрен пойми"
Vladimir
Ну типа на то они и функции
Vladimir
Хочешь константы, юзай константы)
Маjко
Ну хз, по мне так очень логично, что константная функция должна оперировать над константами
Маjко
И возвращать константы
Vladimir
Не логично, пример конструктор атомика
Vladimir
Должен быть константные или нет?
Vladimir
Сама функция
Маjко
Да
Маjко
И вернет она константу, которую сгенерит в компилтайме из переданных констант
Vladimir
Тогда если я хочу создать его из рантаймовых данных, мне нужна другая функция?
Маjко
Специализация спасёт мир
Vladimir
Лол
Vladimir
Это тут причем)
Маjко
Эм
Маjко
Ну при том
Vladimir
специализация не про это
Vladimir
константные функции это такие же функции, только в случае если аргументы кнстанты, то она может выполниться в компилтайме