1 个不稳定版本
0.2.0 | 2021年1月20日 |
---|---|
0.1.1 |
|
0.1.0 |
|
#10 in #leak
7KB
93 行
out-ref
此软件包将外部引用引入 Rust,此软件包支持 no_std
。外部引用 永不 读取引用背后的值
use out_reference::*;
let mut x = 0;
let mut out_x: Out<'_, u32> = x.out();
out_x.set(10);
assert_eq!(x, 10);
请注意,设置值不会丢弃旧值,因为这至少需要读取一次指针背后的值
因此,下面的代码会导致向量泄漏
use out_reference::*;
let mut x = vec![0, 1, 2];
let mut out_x: Out<'_, Vec<u32>> = x.out();
out_x.set(vec![]);
assert_eq!(x, vec![]);
lib.rs
:
此软件包将外部引用引入 Rust,此软件包支持 no_std
。外部引用 永不 读取引用背后的值
use out_reference::*;
let mut x = 0;
let mut out_x: Out<'_, u32> = x.out();
out_x.set(10);
assert_eq!(x, 10);
请注意,设置值不会丢弃旧值,因为这至少需要读取一次指针背后的值
因此,下面的代码会导致向量泄漏
use out_reference::*;
let mut x = vec![0, 1, 2];
let mut out_x: Out<'_, Vec<u32>> = x.out();
out_x.set(vec![]);
assert_eq!(x, vec![]);