#refcell #ref #iterator #ref-mut

no-std ref_wrapper

动态借用数据的包装器

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 模式

Download history 2/week @ 2024-05-21

每月 65 次下载

MIT/Apache

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::newRefIterMut::new 的未使用生命周期约束。
  • 小的重构。

v0.2.1

  • 小的重构。

v0.2.0

  • crate 现已 no_std
  • new 方法回调参数返回不再需要包装在 Box 中。
  • RefWrapRefWrapMut 在某些情况下实现了 Iterator
  • 而不是上述内容,已移除 RefIterRefIterMut

v0.1.3-0.1.5

  • 小的重构。

v0.1.2

  • 一些内部函数已内联。

无运行时依赖