1 个不稳定版本

0.2.0 2021年1月20日
0.1.1 2019年1月9日
0.1.0 2019年1月9日

#10 in #leak

MIT 许可证

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![]);

无运行时依赖

功能