Rust + Go
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
lib Changed crate type to cdylib, which produces smaller compiled libraries Jul 21, 2016
LICENSE Added License May 9, 2015
Makefile Now works with Rust v1 Dec 9, 2015 Initial commit May 9, 2015
main.go Initial commit May 9, 2015

Rust + Golang

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.

You can do this for your own project

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 */ and import "C".

A simple make build (use the Makefile in this repository) will result in a binary that loads your dynamic library.