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...