tezvyn:

Building a safe Rust wrapper over an unsafe C API

Source: interviewadvanced

WHAT IT TESTS: FFI encapsulation patterns. OUTLINE: hide extern calls behind a safe module, own the resource in a struct with Drop calling the C free, return Result mapping C error codes, use NewType/NonNull and PhantomData.

WHAT IT TESTS: whether you can design a sound abstraction over raw C, the so-called sys/safe split. ANSWER OUTLINE: keep the raw extern declarations in a low-level sys layer, then expose a safe wrapper. Own each C resource in a struct holding the raw handle and implement Drop to call the C destructor, giving RAII. Convert C error codes or errno into Result with a typed error. Use NonNull, newtypes, and PhantomData for lifetimes, and uphold Send/Sync only when truly safe. RED FLAG: exposing raw pointers or skipping Drop, leaking resources.

Read the original → interview

Get five bites like this every day.

Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.

Building a safe Rust wrapper over an unsafe C API · Tezvyn