385
you are viewing a single comment's thread
view the rest of the comments
[-] barsoap@lemm.ee 7 points 1 month ago

The Rustinomicon has a chapter on it. The basics are quite simple: Declare non-opaque types to use layout matching the C ABI, export/import functions, some wibbles around name mangling. Option<T> vs. null pointers. Where things get a bit more involved is unwinding, but then you're at the end of it, nothing should be shocking to anyone having written C.

As to how Rusty it is... not very. I mean Rust has first-class FFI support, but the way FFI stuff is written is necessarily unidiomatic because you're basically writing C in Rust syntax and you won't get out of declaring your own functions `unsafe' before you read the rest of the Rustinomicon to understand what properties you need to ensure because the nice and shiny parts of Rust assume them.

[-] CanadaPlus@lemmy.sdf.org 4 points 1 month ago* (last edited 1 month ago)

Hmm. So I guess it comes down to what OP is doing. They either want to write a Rust library, or something that uses a Rust library that may not be standardised or even exist yet. If the latter, they should stick with C.

[-] barsoap@lemm.ee 3 points 1 month ago

Writing C bindings to a Rust library is the easier scenario because you can rely on the safe code having nice and clean memory semantics.

this post was submitted on 25 Sep 2024
385 points (92.9% liked)

Programmer Humor

19551 readers
556 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS