From 91ab5ced3c0f56f893df9d788d3c0f9a462ad5f8 Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Fri, 22 Nov 2024 17:10:34 -0600 Subject: [PATCH] Add some C code. --- .gitignore | 2 ++ build | 5 +++++ src/main.rs | 8 ++++++++ src/test.c | 5 +++++ 4 files changed, 20 insertions(+) create mode 100755 build create mode 100644 src/test.c diff --git a/.gitignore b/.gitignore index dcb4ac3..bf9811d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ /target main .idea +*.o +*.so \ No newline at end of file diff --git a/build b/build new file mode 100755 index 0000000..4249f19 --- /dev/null +++ b/build @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +cc -c src/test.c +cc -shared test.o -o libtest.so +rustc -l test -L . src/main.rs diff --git a/src/main.rs b/src/main.rs index 2141259..1412a84 100644 --- a/src/main.rs +++ b/src/main.rs @@ -18,6 +18,10 @@ impl Greeter { } } +extern "C" { + fn print_num(num: i32); +} + fn main() { Greeter::new("Hello, Jesse!").greet(); @@ -42,4 +46,8 @@ fn main() { bst.insert(0); println!("{:?}", bst); println!("find result: {:?}", bst.find(0)); + + // calling some C + let find_result = bst.find(3).unwrap_or(-1); + unsafe { print_num(find_result); } } diff --git a/src/test.c b/src/test.c new file mode 100644 index 0000000..3d7dfda --- /dev/null +++ b/src/test.c @@ -0,0 +1,5 @@ +#include + +void print_num(int num) { + printf("[from c]: num is %d\n", num); +} \ No newline at end of file