Wie verwende ich den Rust-Speicherzuweiser für eine C-Bibliothek, für die ein Zuweiser bereitgestellt werden kann?
Ich schreibe Rust-Bindings in eine C-Bibliothek, die die Option hat, einen Speicherzuweiser eines Drittanbieters zu verwenden. Das Interface sieht so aus:
struct allocator {
void*(*alloc)(void *old, uint);
void(*free)(void*);
};
Die entsprechende Rust-Struktur ist, denke ich, die folgende:
#[repr(C)]
#[derive(Copy, Clone, Debug, PartialEq)]
pub struct Allocator {
alloc: Option<extern "C" fn(*mut c_void, c_uint) -> *mut c_void>,
free: Option<extern "C" fn(*mut c_void)>,
}
Wie kann ich diese beiden externen Funktionen implementieren, die den Allokator nachahmen sollen? Ich habe nichts gefunden, das wirklich so aussah wie die Allokator-API in Rust (ich verstehe aber warum), also bin ich gespannt, ob es möglich ist.