ASM330LHH与STM32F334R8运动跟踪系统开发指南
2026/7/5 7:20:39
extern "C" {//声明调用C语言的abs函数 fn abs(input:i32) -> i32; } unsafe fn dangerous(){ println!("do something dangerous"); } //不安全的trate unsafe trait Foo{ fn foo(&self); } struct Bar(); unsafe impl Foo for Bar { fn foo(&self){ println!("foo") } } fn foo() { let mut num =6; let r1 =&num as *const i32; let r2 =&mut num as *mut i32; unsafe { println!("r1 is {}",*r1); println!("r2 is {}",*r2); dangerous(); println!("abs(-3): {}",abs(-3)); } } static mut COUNTER: u32=0; fn add_counter(inc: u32) { unsafe{ COUNTER += inc; } } fn main() { let mut num=5; //创建不可变和可变的裸指针,只是不能在不安全的代码块只为解引用裸指针 let r1 =&num as *const i32; let r2 =&mut num as *mut i32; unsafe { println!("r1 is {}",*r1); println!("r2 is {}",*r2); dangerous(); } foo(); add_counter(3); add_counter(4); unsafe { println!("counter: {}",COUNTER); } //不安全的trate let a = Bar(); a.foo(); }