1 unstable release

0.2.0 Jan 20, 2021
0.1.1 Jan 9, 2019
0.1.0 Jan 9, 2019

#10 in #leak

MIT license

7KB
93 lines

out-ref

This crate brings out references to Rust, this crate has no_std support Out reference never read values behind the reference

use out_reference::*;

let mut x = 0;

let mut out_x: Out<'_, u32> = x.out();
out_x.set(10);

assert_eq!(x, 10);

Note that setting a value does not drop the old value, as that would require at least 1 read of the value behind the pointer

So, the code below leaks the vector

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:

This crate brings out references to Rust, this crate has no_std support Out reference never read values behind the reference

use out_reference::*;

let mut x = 0;

let mut out_x: Out<'_, u32> = x.out();
out_x.set(10);

assert_eq!(x, 10);

Note that setting a value does not drop the old value, as that would require at least 1 read of the value behind the pointer

So, the code below leaks the vector

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

No runtime deps

Features