|
|
|
@ -25,7 +25,7 @@ libc = "0.2.0"
|
|
|
|
|
|
|
|
|
|
|
|
Because [snappy](https://github.com/google/snappy) is a static library by default.
|
|
|
|
Because [snappy](https://github.com/google/snappy) is a static library by default.
|
|
|
|
So there is no C++ std linked in the output artifact.
|
|
|
|
So there is no C++ std linked in the output artifact.
|
|
|
|
n order to use this foreign library in Rust, we have to manually specify that we want to link stdc++ in our project.
|
|
|
|
In order to use this foreign library in Rust, we have to manually specify that we want to link stdc++ in our project.
|
|
|
|
The easiest way to do this is by setting up a build script.
|
|
|
|
The easiest way to do this is by setting up a build script.
|
|
|
|
|
|
|
|
|
|
|
|
First edit `Cargo.toml`, inside `package` add `build = "build.rs"`:
|
|
|
|
First edit `Cargo.toml`, inside `package` add `build = "build.rs"`:
|
|
|
|
@ -90,7 +90,7 @@ The `extern` block can be extended to cover the entire snappy API:
|
|
|
|
use libc::{c_int, size_t};
|
|
|
|
use libc::{c_int, size_t};
|
|
|
|
|
|
|
|
|
|
|
|
#[link(name = "snappy")]
|
|
|
|
#[link(name = "snappy")]
|
|
|
|
unsafe extern {
|
|
|
|
unsafe extern "C" {
|
|
|
|
fn snappy_compress(input: *const u8,
|
|
|
|
fn snappy_compress(input: *const u8,
|
|
|
|
input_length: size_t,
|
|
|
|
input_length: size_t,
|
|
|
|
compressed: *mut u8,
|
|
|
|
compressed: *mut u8,
|
|
|
|
|