Cat
там активности 0
Anton
я туда пул реквест кинул
Anton
то ли админ сдох, то ли у меня сомнительные исправления
Cat
@utf16le незачто
Anton
@utf16le незачто
в раст евангелизм еще напиши
Cat
там ты тоже писал?
Ilya
то ли админ сдох, то ли у меня сомнительные исправления
ну по факту у меня есть права,но нет времени. Сегодня гляну
Αλεχ
Народ подскажите, перестало компилиться в новой версии, на что заменить реэкспорт? error[E0658]: The attribute `macro_reexport` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642) --> src\lib.rs:29:3 | 29 | #[macro_reexport(vec, format)] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Cat
<del>
Cat
тут подробнее https://github.com/rust-lang/rust/issues/29638
Vlad
-#![feature(macro_reexport)] +#![feature(use_extern_macros)]-#[macro_reexport(vec, format)] extern crate bla; +pub use bla::{vec, format};как-то так
պլհկ
эй байтоебы
պլհկ
я вам игрушечный токио принес
պլհկ
https://github.com/polachok/toykio
分解物質
делать синтаксис экспорта, реекспорта и импорта макросов таким же как и у типов с функциями не планируют?
Cat
но вообще, я согласен с разработчиками компилятора, это не слишком просто реализовать
分解物質
тут подробнее https://github.com/rust-lang/rust/issues/29638
> In the long run this will be able to go through the normal pub use system (as eventually macros will work with the normal name resolution system) — aturon, 2016
分解物質
понятно
Cat
?
Cat
тебе нужна эта issue: https://github.com/rust-lang/rust/issues/35896
Cat
#![feature(use_extern_macros)] extern crate bla; pub use bla::{vec, format};
Маjко
но вообще, я согласен с разработчиками компилятора, это не слишком просто реализовать
Чому? У нас тут не препроцессор, да и макрос берет контекст вызова
mAX
Товарищи, помогите пожалуйста.. использую ffi glib для rust там есть функция в которую нужно передать коллбек тип коллбека требуется std::option::Option<unsafe extern "C" fn()> но как его сделать из функции unsafe extern fn callback() {} не понятно.. и как быть если нужны параметры у коллбека?
mAX
это я g_signal_connect_object пытаюсь использовать https://docs.rs/gobject-sys/0.4.0/gobject_sys/fn.g_signal_connect_object.html
Anton
у меня похожая хуйня в йоге была
mAX
я наткнулся на это в libnice там через glib коллбеки вешаются на некоторые сигналы
mAX
В С как-то так: g_signal_connect(agent, "candidate-gathering-done", G_CALLBACK(cbOnCandidateGatheringDone), this); g_signal_connect(agent, "component-state-changed", G_CALLBACK(cbOnComponentStateChanged), this);
Anton
pub type MeasureFunc = Option<extern "C" fn(NodeRef, f32, MeasureMode, f32, MeasureMode) -> Size>; ... let func = Some( extern "C" fn baseline_func(_: NodeRef, _: f32, _: f32) -> f32 { 10.0 }); match func { Some(f) => unsafe { type Callback = unsafe extern "C" fn(yoga_sys::YGNodeRef, f32, yoga_sys::YGMeasureMode, f32, yoga_sys::YGMeasureMode) -> yoga_sys::YGSize; let casted_func: Callback = ::std::mem::transmute(f as usize); yoga_sys::YGNodeSetMeasureFunc(self.inner_node, Some(casted_func)); }, None => unsafe { yoga_sys::YGNodeSetMeasureFunc(self.inner_node, None); }, }
Anton
Хотя даже не так а просто вот такого типа функция let func = Some( extern "C" fn baseline_func(_: NodeRef, _: f32, _: f32) -> f32 { 10.0 });
Anton
хотя такое мб не скомпилит, отдельно объвяви функциб экстерновую, и потом запихай ее в Option и закинь как колбэк
Anton
mAX оно?
mAX
похоже на это надо разобраться)Спасибо!
Anton
Ыыыддддк
Anton
похоже на это надо разобраться)Спасибо!
ну грубо говоря он мутирует экстерн функцию в Callback и потом проставляет
Anton
в твоем же случае у тебя если уже есть обвязка, просто передавать Option<unsafe extern "C" fn()>
Anton
а вообще советую такое дерьмо не юзать, байдинги gtk сырые совсем, лучше юзай то что уже дают
Anton
к тому же там уже есть почти под все эвенты обвязки, включая именованные
Anton
я серьезно, с полгода назад плотно с gtk-rs работал
mAX
вот такое собралось и запустилось) extern fn cbOnCandidateGatheringDone(agent: *mut _NiceAgent, stream_id: guint, data: *mut c_void) { println!("cbOnCandidateGatheringDone!"); } let casted_func: unsafe extern "C" fn() = unsafe { ::std::mem::transmute(cbOnCandidateGatheringDone as usize)}; unsafe { g_signal_connect_object(agent as *mut c_void, cptr("candidate-gathering-done"), Some(casted_func), 0 as *mut c_void, 0) };
mAX
мне нужно использовать libnice для webRTC а оно юзает glib активно..с радостью бы не использовал))
Anton
жопа...
Anton
ну удачи тогда
Anton
отпишись по результату
Anton
интересно прям
mAX
ну сейчас заработало) коллбек вызывается!
mAX
я так понимаю мы самым наглым образом просто передеали указатель на нужную функцию в g_signal_connect_object впринципе так и надо было сделать, но я не знал как)
mAX
тут товарищи в соседней группе пилят openwrt для камер видео наблюдения http://t.me/joinchat/FhtyHxDpQsv8HlRliQDgqw я как-то доклад видел интересный https://www.youtube.com/watch?v=VkSEEhCzjW0 и решил что можно попробовать сделать стример webrtc прямо с камеры) так-то я раст только пару дней ковыряю..
mAX
https://zftlab.org/pages/2018020900.html вот кому интересно..но там не про раст)
Cat
это тот чувак, тред которого недавно выпилили с лора?
Cat
увожение
mAX
доклад это вообще из другой темы..а в группе все нормально китайские дрова правда все равно бинарные)
კაცი
Удоли
mAX
Товарищи,можете пояснить.. привык к golang иерархии, не получается разобраться с модулями в rust папка src в ней main.rs connection.rs tools.rs в main.rs используется код из connection.rs без проблем посредством mod connection; use connection::*; некоторые универсальные функции вытащил в tools.rs и уже не могу из connection.rs их вызвать как mod tools; use tools::*; т.е. в main.rs нормально подключился модуль connection лежащий рядом с ним в папке в другом файле, а вот в connection.rs модуль tools.rs уже подключаться не хочет..они ищет его в name the file either connection/tools.rs or connection/tools/mod.rs inside the directory "src" подскажите,пожалуйста,как это правильно делать..
mAX
могу ли я сделать модуль из нескольких файлов как в Golang? жутко не удобно писать все в одном файле и делать много мелких модулей тоже непривычно как-то..
Αλεχ
mod пишешь только один раз
Αλεχ
в main.rs или lib.rs
Denys
могу ли я сделать модуль из нескольких файлов как в Golang? жутко не удобно писать все в одном файле и делать много мелких модулей тоже непривычно как-то..
Да, создаёшь папку с именем коннектионс, в ней файл мод.рс который будет содержать или сам Коннект она или только мод новоеимяконектионс и тут же пишешь мод тулс
Αλεχ
не путай человека)
Αλεχ
ему бы хотя бы с одноуровневой иерархией разобраться
Αλεχ
а потом лезть
Denys
не путай человека)
Но он же хочет отдельный модуль
Αλεχ
в дерево
mAX
понятно,спасибо!вроде заработало! гуглил старался,но что-то непонятно было)
Αλεχ
нужно понимать, что файл сам по себе уже модуль
Αλεχ
от того, что ты сделаешь папочку и mod.rs ничо не поменяется
Denys
Иерархия другая
Αλεχ
кроме того, что теперь ты можешь его раздробить на файлики помельче
Αλεχ
компилятор видит это так же
Αλεχ
занчит это одно и то же
Αλεχ
изи