Rust高级特性与高级Trait详解
1. 从其他语言调用Rust函数
在Rust中,我们可以使用 extern 关键字创建一个接口,让其他语言能够调用Rust函数。具体操作如下:
- 在 fn 关键字前添加 extern 关键字并指定要使用的ABI。
- 添加 #[no_mangle] 注解,告诉Rust编译器不要对函数名进行修饰。函数名修饰是指编译器将我们给函数的名称更改为包含更多编译信息的名称,这会降低可读性。由于不同编程语言的编译器对函数名的修饰方式不同,为了让其他语言能够调用Rust函数,我们必须禁用Rust编译器的函数名修饰。
以下是一个示例,展示了如何使 call_from_c 函数在编译为共享库并从C代码中链接后可以被C代码调用:
#[no_mangle]
pub extern "C" fn call_from_c() {
println!("Just called a Rust function from C!");
}
这种使用 extern 的方式不需要使用 unsafe 代码。
2. 访问和修改可变静态变量
在Rust中,全局变量被称为静态变量。虽然Rust支持全局变量,但由于所有权规则,使用全局变量可能会出现问题。如果两个线程同时访问同一个可变的全局变量,就可能会导致数据竞争。 </
超级会员免费看
订阅专栏 解锁全文
329

被折叠的 条评论
为什么被折叠?



