mod ps { #[repr(C)] #[derive(Debug)] pub struct PowerSocket { power_rate: f32, on: bool, } // #[link(name = "power_socket_lib", kind = "static")] unsafe extern "C" { pub fn power_socket_new(power_rate: f32, on: bool) -> PowerSocket; pub fn power_socket_is_on(power_socket: &PowerSocket) -> bool; pub fn power_socket_set_on(power_socket: &mut PowerSocket, on: bool); pub fn power_socket_get_power(power_socket: &PowerSocket) -> f32; } } use ps::*; fn main() { let mut power_socket = unsafe { power_socket_new(12.0, false) }; println!("call power_socket_new -> {:?}", power_socket); println!("call power_socket_is_on -> {:?}", unsafe { power_socket_is_on(&power_socket) }); println!("call power_socket_get_power -> {:?}", unsafe { power_socket_get_power(&power_socket) }); unsafe { power_socket_set_on(&mut power_socket, true) }; println!("call power_socket_set_on(&ref, true)"); println!("call power_socket_is_on -> {:?}", unsafe { power_socket_is_on(&power_socket) }); println!("call power_socket_get_power -> {:?}", unsafe { power_socket_get_power(&power_socket) }); }