Files
rust-otus/smart-house/use_static/src/main.rs
T
2026-04-27 23:02:53 +03:00

35 lines
1.2 KiB
Rust

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) });
}