#box #reuse #move #replace #take

empty-box

允许 Box 将其值移动出来并替换为新值,同时重用相同的分配

2 个版本

使用旧的 Rust 2015

0.1.1 2017 年 6 月 1 日
0.1.0 2017 年 6 月 1 日

#633 in 内存管理

MIT/Apache

7KB
69

Build Status Docs Status On crates.io

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 许可证定义,您有意提交的任何贡献均应作为上述双重许可,而无需任何额外的条款或条件。

无运行时依赖