#traits #performance #generic #argument #pattern

no-std take_ref

TakeRef、TakeSlice 和 TakeString 特性允许将引用/切片和值互换处理。它们可以被视为引用/切片。您可以在需要时仅通过克隆来获取其内部值的所有权。

2 个不稳定版本

0.2.0 2020 年 9 月 15 日
0.1.0 2020 年 9 月 14 日

Rust 模式 中排名 #2960

MPL-2.0 许可证

11KB
81

take_ref

take_ref 提供了 TakeRefTakeSliceTakeString 特性,这些特性允许将引用/切片和值互换处理。它们可以被视为引用/切片。您可以在需要时仅通过克隆来获取其内部值的所有权。

示例

示例 take_slice 可以接受 &[i64]Vec 实例,并在最终决定需要获取 Vec 的所有权之前多次引用它们。此时,如果它是 &[i64],则会从 &[i64] 构造一个 Vec。另一方面,如果它是 Vec,则所有权将直接转移,无需开销。

use take_ref::TakeSlice;

fn take_slice(value: impl TakeSlice<i64>) {
    value.as_slice();
    value.as_slice();
    value.take();
}

lib.rs:

take_ref

take_ref 提供了 TakeRefTakeSliceTakeString 特性,以使值及其引用/切片类型在需要获取所有权之前可以互换处理。如果有时需要有时不需要获取所有权,这可以消除始终从引用类型复制数据的需求。

无运行时依赖

功能