This repository shows how, by combining cgo
and Rust's FFI capabilities, we can call Rust code from Golang.
Run make build
and then ./main
to see Rust
+ Golang
in action. You should see Hello John Smith!
printed to stdout
.
Begin by creating a lib
directory, where you will keep your Rust libraries. Andrew Oppenlander's article on creating a Rust dynamic library is a great introduction.
Then, you need to create a C header file for your library. Just copy the libc
types that you used.
All that is left to do is to add some cgo
-specific comments to your Golang code. These comments tell cgo
where to find the library and its headers.
/* #cgo LDFLAGS: -L./lib -lhello #include "./lib/hello.h" */ import "C"
There should not be a newline between
*/
andimport "C"
.
A simple make build
(use the Makefile in this repository) will result in a binary that loads your dynamic library.