2 个版本
0.1.1 | 2019年8月13日 |
---|---|
0.1.0 | 2019年7月31日 |
#257 在 无标准库
18KB
147 行
此库为 borrow
和 borrow_mut
函数提供特性,这些函数通常在 RefCell
中找到。因此,可以接受其他类型的 RefCell
,如 AtomicRefCell
,或者围绕 RefCell
的智能指针,如 Arc
、Rc
或 Box
。
示例
use std::io::{ Read, Cursor };
use std::cell::RefCell;
use borrow_trait::{ BorrowRefMut };
fn takes_bound<C, T>(value: &T) -> Vec<u8>
where
T: for<'a> BorrowRefMut<'a, Target = C>,
C: Read,
{
let mut result = vec![];
value.borrow_mut().read_to_end(&mut result).expect("Failed to read from `value: T`");
result
}
let value = RefCell::new(Cursor::new(vec![0, 1, 2, 3]));
assert_eq!(takes_bound(&value), vec![0, 1, 2, 3]);
有关更多详细信息,请参阅以下文档:[链接](https://docs.rs/borrow_trait)
用法
只需在您的 Cargo.toml
中添加以下行,位于 [dependencies]
borrow_trait = { version = "0.1" }
注意
- 此crate符合语义版本控制。
- 它不包含任何不安全代码。
- 此crate重新导出其依赖项,以便于使用。
计划
- 移除
BorrowRef<'a, C, T>
和BorrowRefMut<'a, C, T>
的生命周期要求。此功能需要泛型关联生命周期 rust-lang/rust#44265
致谢
- 文档的部分内容来自标准库
- 功能标志受到了 serde 和 rand crate 的启发。
- 特性的名称受到了 borrow_with_ref_obj crate 的启发。
许可
此项目受以下任一许可协议的许可:
任选。
贡献
如果您有任何问题,请不要犹豫,创建一个问题 :)。
在您创建 PR 之前,请确保您的代码已使用 rustfmt
格式化。
cargo fmt
依赖项
~14KB