Calling Rust code from C
As we stated in the previous section, when Rust libraries expose their functions to other languages using the extern
block, they expose the C ABI (cdecl
) by default. As such, it becomes a very seamless experience of calling Rust code from C. To C, they appear just like regular C functions. We'll take a look at an example of calling Rust code from a C program. Let's create a cargo project for this by running cargo new rust_from_c --lib
.
In our Cargo.toml
file, we have the following items:
# rust_from_c/Cargo.toml [package] name = "rust_from_c" version = "0.1.0" authors = ["Rahul Sharma <creativcoders@gmail.com>"] edition = "2018" [lib] name = "stringutils" crate-type = ["cdylib"]
Under the [lib]
section, we specified the crate as cdylib
, which indicates that we want a dynamically loadable library to be generated, which is more commonly known as a shared object file (.so
) in Linux. We specified an explicit name for our stringutils
library, and this will be used...