1 个稳定版本
使用旧的 Rust 2015
1.0.0 | 2021年8月8日 |
---|
#845 in 过程宏
7KB
safe_attr
safe_attr 提供了一个 #[safe]
属性来标记函数
是什么?
看看这个例子
union Num {
float: f32,
long: u32,
}
fn use_both() {
let mut num = Num { long: 132 };
let the_float = unsafe { num.float };
// do things with the float...
let the_long = unsafe { num.long };
// do things with the long...
// maybe use some more unsafes later...
}
现在,你知道这是完全安全的。这两个类型的大小相同,转换不应该需要这样的冗长。使用 safe_attr
,你现在可以这样做
use safe_attr::safe;
#[safe]
fn use_both() {
let mut num = Num { long: 132 };
let the_float = num.float;
let the_long = num.long;
}
此属性允许您避免在不需要 unsafe 的代码中到处使用 unsafe。
这 并不意味着 应该滥用此属性。它可能会使在较大的函数中追踪 unsafe 代码的错误变得更加困难,而且简单地使得找到问题点更加困难。因此,您仍然鼓励使用 // Safety:
注释来标记函数,并且仅在使用与上述示例 类似 的用例中使用此属性。
如何使用?
此属性只是将函数的主体包装在一个 unsafe
中。就是这样。
依赖项
~83KB