You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rust conventions prescribe a crate boundary between raw FFI bindings (the ffi module, the buildscript, and the generated glue) and a higher-level (even if it still has some unsafe) Rust wrapper. The advantages of such a configuration are primarily:
Alternative high-level wrappers can re-use the same -sys crate, which can act as a central, definitive logic for finding a library on the system or otherwise linking to it.
Complex dependency trees which involve multiple crates, or incompatible versions of crates which want to rely on bindings, can commonly depend on a -sys crate rather than conflicting.
Cargo's mechanism for overriding external dependencies can be more easily used without interfering with the high-level wrappers.
See, for example, the hlua crate, which bundles a lua52-sys crate: https://github.com/tomaka/hlua
(This -sys crate also bundles its Lua source without requiring a secondary download, a good idea IMO, but that is another issue.) Actually, maybe some collaboration with tomaka is warranted, given that this other crate also specifies links = "lua".
There isn't really any urgent need for this, but I wanted to get some discussion started.
The text was updated successfully, but these errors were encountered:
I've been aware of this convention for a while, but I haven't had the time (or motivation honestly) to split the low level bits out of the library. I agree it would be a nice thing to do though, if for no other reason than to be following standard guidelines.
Rust conventions prescribe a crate boundary between raw FFI bindings (the
ffi
module, the buildscript, and the generated glue) and a higher-level (even if it still has someunsafe
) Rust wrapper. The advantages of such a configuration are primarily:-sys
crate, which can act as a central, definitive logic for finding a library on the system or otherwise linking to it.-sys
crate rather than conflicting.See, for example, the
hlua
crate, which bundles alua52-sys
crate: https://github.com/tomaka/hlua(
This) Actually, maybe some collaboration with tomaka is warranted, given that this other crate also specifies-sys
crate also bundles its Lua source without requiring a secondary download, a good idea IMO, but that is another issue.links = "lua"
.There isn't really any urgent need for this, but I wanted to get some discussion started.
The text was updated successfully, but these errors were encountered: