4 个版本
0.2.1 | 2022年6月19日 |
---|---|
0.2.0 | 2022年6月19日 |
0.1.5 | 2022年6月18日 |
0.1.3 | 2022年4月12日 |
在 #self-reference 中排名第 5
每月下载量 57 次
15KB
154 行
Any-ref-rs
📖 文档
❓ 什么是 any_ref
any_ref
是一个 crate,允许您以内存安全的方式捕获非 非 'static
的东西。
以下是一个简单的演示,以查看它是如何工作的。
// Create the type `ReturnVec` stands for `Vec<&'_ T>`
make_any_ref! {
type ReturnVec<T: 'static> = for<'a> Vec<&'a T>;
}
let moved_ar;
{
// This is the owner
let num: Box<(u16, u16, u16, u16)> = Box::new((1, 2, 3, 4));
// Initialize an `AnyRef`
let ar: AnyRef<ReturnVec<u16>, _> = AnyRef::new(
num, |x| vec![&x.0, &x.1, &x.2, &x.3]
);
// Move out of this scope
moved_ar = ar;
}
// Read the reference of the value
assert_eq!(moved_ar.get(), &vec![&1, &2, &3, &4]);
📣 兼容性通知
在 rustc 1.61 版本以下,由于类型推断器的问题,我们无法使用 AnyRef::new
在稳定 Rust 中初始化 AnyRef
,可以使用 new_any_ref
作为临时的替代解决方案。 如果可能,请升级您的 rustc 至 1.61.0 或更高版本!
🤔 故障排除
欢迎每个人找出错误或提出改进意见,如果有任何问题,请随时提交 issue。
此 crate 由维护(编写于 2022/6/19)。
⚖️ 许可证
MIT
❤️ 致谢
感谢在 Rust 论坛上帮助我找出几个问题和错误的人,感谢你们的努力!
依赖项
~1.5MB
~35K SLoC