#借用 #共享 #共享 #借用 #引用 #数据 #特性

无 std borrow-or-share

数据借用或共享的特性

6 个版本

0.2.2 2024年3月24日
0.2.1 2024年3月24日
0.1.0 2024年3月6日
0.0.1 2024年3月5日

#1250Rust 模式

Download history 38/week @ 2024-04-08 10/week @ 2024-04-15 11/week @ 2024-04-22 2/week @ 2024-05-13 10/week @ 2024-05-20 7/week @ 2024-05-27 43/week @ 2024-06-03 23/week @ 2024-06-10 22/week @ 2024-06-17 16/week @ 2024-06-24 44/week @ 2024-07-01 66/week @ 2024-07-08 30/week @ 2024-07-15 14/week @ 2024-07-22

每月 155 次下载
fluent-uri 中使用

MIT-0 许可证

12KB
94

borrow-or-share

数据借用或共享的特性。

crates.io build license

以下为该库的基本用法。有关详细说明,请参阅文档

基本用法

假设你有一个泛型类型,它要么拥有一些数据,要么持有对它们的引用。你可以使用这个库来实现这个类型的方法,该方法接受&self,它可以从*self借用,或者从它持有的引用中借用

use borrow_or_share::BorrowOrShare;

struct Text<T>(T);

impl<'i, 'o, T: BorrowOrShare<'i, 'o, str>> Text<T> {
    fn as_str(&'i self) -> &'o str {
        self.0.borrow_or_share()
    }
}

// The returned reference is borrowed from `*text`
// and lives as long as `text`.
fn borrow(text: &Text<String>) -> &str {
    text.as_str()
}

// The returned reference is borrowed from `*text.0`, lives
// longer than `text` and is said to be shared with `*text`.
fn share<'a>(t: &Text<&'a str>) -> &'a str {
    text.as_str()
}

致谢

感谢 @beepster4096 为找出代码的安全版本。

无运行时依赖

功能