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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage