9 个版本
0.2.2 | 2024 年 2 月 16 日 |
---|---|
0.2.1 | 2024 年 2 月 7 日 |
0.2.0 | 2024 年 1 月 24 日 |
0.1.5 | 2024 年 1 月 14 日 |
0.1.1 | 2023 年 4 月 6 日 |
#521 in Rust 模式
每月 65 次下载
9KB
112 行
ref_wrapper
动态借用数据的包装器。
此 crate 的作者英语水平不高。
如果文档难以阅读,请见谅。
这是什么?
此 crate 提供动态借用类型生成的值的包装器。
包装器 | 目标 |
---|---|
RefWrap |
Ref |
RefWrapMut |
RefMut |
示例
正常用法。
let src = RefCell::new(vec![1, 2, 3]);
let target = RefWrap::new(src.borrow(), |x| VecStat(x));
assert_eq!(target.summary(), 6);
pub struct VecStat<'a>(&'a Vec<i32>);
impl<'a> VecStat<'a> {
pub fn summary(&self) -> i32 {
self.0.iter().sum::<i32>()
}
}
迭代器用法。
let src = RefCell::new(vec![1, 2, 3]);
let iter = RefWrap::new(src.borrow(), |x| x.iter());
assert_eq!(iter.sum::<i32>(), 6);
有什么新功能。
v0.2.2
- 移除了
RefIter::new
和RefIterMut::new
的未使用生命周期约束。 - 小的重构。
v0.2.1
- 小的重构。
v0.2.0
- crate 现已
no_std
。 new
方法回调参数返回不再需要包装在Box
中。RefWrap
和RefWrapMut
在某些情况下实现了Iterator
。- 而不是上述内容,已移除
RefIter
和RefIterMut
。
v0.1.3-0.1.5
- 小的重构。
v0.1.2
- 一些内部函数已内联。