Cat
Cat
там активности 0
Anton
Anton
я туда пул реквест кинул
Anton
то ли админ сдох, то ли у меня сомнительные исправления
Cat
@utf16le незачто
Cat
там ты тоже писал?
Αλεχ
Народ подскажите, перестало компилиться в новой версии, на что заменить реэкспорт?
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
Cat
но вообще, я согласен с разработчиками компилятора, это не слишком просто реализовать
分解物質
понятно
Cat
?
Cat
тебе нужна эта issue: https://github.com/rust-lang/rust/issues/35896
Cat
#![feature(use_extern_macros)]
extern crate bla;
pub use bla::{vec, format};
Anton
Маjко
Αλεχ
Cat
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
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
в твоем же случае у тебя если уже есть обвязка, просто передавать 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
увожение
Kerrigan
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
Crazy
Αλεχ
Αλεχ
не путай человека)
Αλεχ
ему бы хотя бы с одноуровневой иерархией разобраться
Αλεχ
а потом лезть
Αλεχ
в дерево
mAX
понятно,спасибо!вроде заработало!
гуглил старался,но что-то непонятно было)
Αλεχ
нужно понимать, что файл сам по себе уже модуль
Αλεχ
от того, что ты сделаешь папочку и mod.rs ничо не поменяется
Denys
Иерархия другая
Αλεχ
кроме того, что теперь ты можешь его раздробить на файлики помельче
Αλεχ
компилятор видит это так же
Αλεχ
занчит это одно и то же
Αλεχ
изи