Vladimir
Vladimir
Сказал админ с++ паблика
Ivan
Ivan
а скорее явапитонная
Ivan
даже в C++ такого ада в стандартной библиотеке нету
Berkus
Berkus
только не сишная
да нет, это стандартная тема с++ - нет пакетного менеджера, поэтому что не в стдлибе - недоступно, надо делать велосипед
Ivan
а в C (без ++ который) вообще всё хорошо - в стандартной библиотеке почти ничего нет
Berkus
Vitaliy
ещё раз спрошу - как собрать библиотеку х32 вместо х64. У меня система 64, а библиотека нужна для 32
Nikita
target правильный передать?
Kerrigan
и линкер указать для платформы
Nikita
https://github.com/japaric/rust-cross#cross-compiling-with-cargo
Nikita
скорее всего как-то так
Vitaliy
это в Cargo.toml ??
Vitaliy
պլհկ
http://cglab.ca/~abeinges/blah/too-many-lists/book/ 👆
Vitaliy
Αλεχ
Народ чет туплю, подскажите
Αλεχ
Хочу вызывать сишный коллбек из раста
Αλεχ
пишу
Αλεχ
#[no_mangle]
pub extern fn get_range<F: Fn(*const usize, usize)>(count: usize, callback: F) {
let range: Vec<_> = (1..count).collect();
callback(range.as_ptr(), range.len())
}
Αλεχ
но он говнится, что no_mangle на генерике
Cuno
Так ты хочешь сишный коллбек из раста или раст-коллбек из сишки?
Αλεχ
я хочу из сишки вызвать растовую функцию, передав ей коллбек
Αλεχ
чтобы растокод вызвал коллбек
Berkus
а сишка умеет генерики уже? ништяк
Cuno
Вот, тогда тебе генерик не нужен же
Αλεχ
а как без генерика сделать?
Αλεχ
Fn это трейт
Αλεχ
а понял
Αλεχ
fn с маленькой лол
Αλεχ
#[no_mangle]
pub extern fn get_range(count: usize, callback: extern fn(*const usize, usize)) {
let range: Vec<_> = (1..count).collect();
callback(range.as_ptr(), range.len())
}
Cuno
extern "C" fn (*const size_t, size_t) ? Но тут нужно быть осторожным с calling convention.
Αλεχ
я на самом деле хочу вернуть вектор из раста
Αλεχ
но не хочу ебать себе мозги с владением
Αλεχ
поэтому решил просто везде захукярить коллбеки
Αλεχ
а при выходе из метода все почистится
Cuno
mem::forget не забудь
Cuno
а, понятно
Αλεχ
данные? нет конечно
Αλεχ
я просто не хочу вызвать метод который выделит данные в расте
Αλεχ
а потом вызвать какой-нибудь drop_my_data_rust_please
Kerrigan
как мне сделать source blablaba.sh в идее перед сборкой?
Kerrigan
как-то не хочу запускать ее из шелла
Αλεχ
ты передашь указатель в коллбек, надеюсь он там его не будет сохранять на будущее?
public class RustInterop
{
[StructLayout(LayoutKind.Sequential)]
struct ArrayRef
{
public IntPtr Bytes;
public uint Length;
}
private delegate void GetRangeCallback(ArrayRef array);
[DllImport("rust.dll")]
private static extern int get_range(uint count, GetRangeCallback callback);
public static int[] GetRange(uint count)
{
int[] result = null;
get_range(count, arrayRef =>
{
var res = new int[arrayRef.Length];
Marshal.Copy(arrayRef.Bytes, res, 0, res.Length);
result = res;
});
return result;
}
}
Berkus
а, норм
Berkus
воу воу
Αλεχ
you have been hacked Neo
Invictus
Зарепортил.
Αλεχ
чувак от дотана еще не отошел просто
Invictus
Этого юзера. Или что делает кнопка Block?
Dika
Invictus
Лол, ладно. Значит я немножко ретард.
Invictus
Лол.
Vitaly
Кек
Loo
@null_void он вернулся - что дальше делать будешь?
Invictus
Loo
Alex
#Вопрос
Товарищи, хочу потыкать крейт "rustbreak", а он не возбуждается.
the trait bound `Foo: serde::ser::Serialize` is not satisfied
e.g.:
extern crate serde;
extern crate serde_json;
#[macro_use] extern crate serde_derive;
#[derive(Serialize, Deserialize)]
struct Foo { x: u8 }
fn main() {
let config = Database::open("test-db").unwrap();
config.insert("foo", Foo { x: 42 });
}
Банально, Что я делаю не так?
Alex
( https://crates.io/crates/rustbreak )
Loo
Alex
Loo
kitsu
> возбуждается
ты там что с крейтами делаешь, негодник
Alex
Ему Hyper & Futures не нужны если что.
Alex
Возможно версия Сердючки нужна другая…
Alex
Marat
Что-то actix-web все TLS библиотеки в себя тащит, вместо того, чтобы сделать красиво как hyper
Marat
Это ради перформанса или автор просто решил не заморачиваться?
Loo
https://github.com/LooMaclin/lapa_rs
Loo
У меня всё ок
Αλεχ
Αλεχ
а как делает hyper?
Loo
Loo
он же в гиттере отвечает