3 个版本 (稳定版)
1.0.1 | 2024年7月21日 |
---|---|
1.0.0 | 2024年6月30日 |
0.1.0 | 2021年7月1日 |
#370 在 Rust 模式
每月221 次下载
在 4 crates 中使用
11KB
Captur
从 Rust 2021 开始,Rust 将不再捕获整个结构体,而只会捕获闭包中使用的字段的非连续集合。在某些情况下,需要捕获结构体以保留特定的析构顺序。此宏将捕获闭包内的结构体,确保正确的析构顺序。
解决方案
解决这个问题的一个典型方法是为结构体创建一个未使用的引用。
let some_struct = SomeStruct::new();
let result = || {
// capture some_struct within the closure
let _ = &some_struct;
println!("{}", some_struct.y);
}
虽然这在需要捕获的闭包中实现起来很简单,但没有注释,未使用行的含义很难确定。此宏提供了一种自文档化且可能更简洁的方式来捕获结构体。
安装和用法
[dependencies]
captur = "1"
use captur::capture;
fn send_event_and_action(action: &Action, event: Event) {
send(|sender| {
capture!(action, event);
sender.send(action.name.as_str(), event.code);
});
}
支持的 Rust 版本
此项目将支持自 Rust 2021 的第一个版本 1.56.0 以来的 Rust 版本。
停止支持 Rust 版本将导致主要版本号的增加,遵循 语义版本控制。
许可证
Captur 在 ISC 许可证下发布。请参阅 LICENSE。