2 个版本
使用旧的 Rust 2015
0.1.1 | 2017 年 6 月 1 日 |
---|---|
0.1.0 | 2017 年 6 月 1 日 |
#633 in 内存管理
7KB
69 行
EmptyBox
,一种在无需重新分配的情况下安全地在 Box
中移动值的方法
EmptyBox
类似于静态检查的 Box<Option<T>>
use empty_box::EmptyBox;
// A box with a string!
let boxed = Box::new("Hello!".to_string());
// Oh no, we don't like that string.
let (string, empty) = EmptyBox::take(boxed);
// Let's make an objectively superior string, and put it into the original
// box.
let superior = "Objectively superior string!".to_string();
// Now we have our superior string in the box!
let boxed = empty.put(superior);
assert_eq!("Hello!", string);
assert_eq!("Objectively superior string!", &*boxed);
从 Box
创建 EmptyBox
并将 T
放回 EmptyBox
中,将避免分配新的 Box
,而是重用 T
被移除的旧 Box
许可证
许可方式如下
- Apache 许可证 2.0 版本,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交的任何贡献均应作为上述双重许可,而无需任何额外的条款或条件。