garnet/rust/lib.rs
2026-02-19 19:37:46 +00:00

43 lines
760 B
Rust

#![allow(dead_code)]
use std::ffi::{CStr, c_char};
fn say_hello(name: &str) {
println!("Hello from Rust, {name}!");
}
#[unsafe(no_mangle)]
extern "C" fn hello(c: *const c_char) -> () {
say_hello(unsafe { CStr::from_ptr(c) }.to_str().unwrap())
}
#[repr(C)]
#[derive(Debug)]
struct T {
a: bool,
b: u8,
}
#[unsafe(no_mangle)]
extern "C" fn hello_struct(t: T) -> () {
say_hello(&format!("{:?}", t))
}
#[repr(C)]
#[derive(Debug)]
enum Shape {
Circle { radius: f64 },
Rectangle { width: f64, height: f64 },
}
#[unsafe(no_mangle)]
extern "C" fn hello_shape(s: Shape) -> () {
say_hello(&format!("{:?}", s))
}
/// cbindgen:prefix=__attribute__((const))
#[unsafe(no_mangle)]
extern "C" fn add(a: i64, b: i64) -> i64 {
a + b
}