#refcell #borrow #traits #pointers #found #most #borrow-mut

无std borrow_trait

通过 borrowborrow_mut 暴露特性

2 个版本

0.1.1 2019年8月13日
0.1.0 2019年7月31日

#257无标准库

MIT/Apache

18KB
147

Build Status Documentation Crates.io

此库为 borrowborrow_mut 函数提供特性,这些函数通常在 RefCell 中找到。因此,可以接受其他类型的 RefCell,如 AtomicRefCell,或者围绕 RefCell 的智能指针,如 ArcRcBox

示例

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

致谢

  • 文档的部分内容来自标准库
  • 功能标志受到了 serderand crate 的启发。
  • 特性的名称受到了 borrow_with_ref_obj crate 的启发。

许可

此项目受以下任一许可协议的许可:

任选。

贡献

如果您有任何问题,请不要犹豫,创建一个问题 :)。

在您创建 PR 之前,请确保您的代码已使用 rustfmt 格式化。

cargo fmt

依赖项

~14KB