2 个版本
0.1.1 | 2020年8月13日 |
---|---|
0.1.0 | 2020年8月13日 |
#19 in #borrowed
每月下载 32 次
用于 2 个包 (通过 mtots_core)
9KB
200 行
XRef 和 XRefMut
当你想返回可能属于或借用的一些数据时,通常返回 Cow<T>
。
但是,Cow<T>
有以下限制
T
必须是ToOwned
,并且- 如果你想要借用的数据在
RefCell
后面,则不能这样做。
XRef<T>
类似于 Cow<T>
,但通过以下差异解决了上述限制:
T
不必是ToOwned
,(这意味着现在Borrowed
和Owned
中包含的类型必须完全匹配),并且XRef<T>
有一个第三个变体Ref
,它持有std::cell::Ref<T>
,用于从RefCell
借用值的情况。
XRefMut<T>
类似于 XRef<T>
,除了
- 所有引用都是可变借用的(即
XRef::Borrowed
持有一个&mut T
而不是&T
,XRef::Ref
持有一个RefMut<T>
而不是Ref<T>
), XRefMut<T>
实现DerefMut<T>
,以允许在不克隆的情况下可变借用数据。