3 ms·
Ironic, but the one think they are missing is an easy convenient way to call C libraries. Rust is very promising language, but unless you plan to write everyth
by kinkdr 10y ago
Ironic, but the one think they are missing is an easy convenient way to call C libraries.
Rust is very promising language, but unless you plan to write everything from scratch, you have to depend on 3rd party driver implementations for most stuff. Databases for example. There isn't a single database vendor that has Rust drivers.
- tomjakubowski 10y agoCalling C from Rust is very convenient. All you have to do is declare the structs and function signatures and then it's like calling any other unsafe function.
- kinkdr 10y agoIMHO it is OK if you are only going to call a few simple one, but for calling a few hundred complex ones (callbacks with variable argument list, etc..), it becomes a bit cumbersome. BTW I am not implying that is Rust's fault, actually I can't think a syntax that would make it less verbose, and I am a huge Rust fan.
- ktRolster 10y agoactually I can't think a syntax that would make it less verbose. something like C::function_from_c() is one option
- kibwen 10y agoFor very extensive C APIs like this (Lua, GTK, etc.) we typically see people create thin, Rust-friendly wrappers to reduce the amount of manual API calls that need to be written out.
- Manishearth 10y agoNot really, there are tools that can take C header files and spit out bindings. Rust also supports vararg C functions even though Rust itself doesn't support varargs. Writing safe Rust wrappers around these unsafe C bindings can sometimes be tedious, but this isn't worse than using C directly (which is inherently unsafe).
- kinkdr 10y agoI didn't say it is not supporting them. I said that is a bit cumbersome to have to write the shims for them. I wasn't aware of the tools that do this automatically. Just found one and it looks promising.
- Manishearth 10y agoYeah, my point was that thin shims are free, and "thick" safe shims take effort but as far as comparing with pure C is concerned you only need to compare the cost of thin shims. C doesn't have safety so the concept of a thick, safe shim is nonexistant.