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日 |
#1250 在 Rust 模式
每月 155 次下载
在 fluent-uri 中使用
12KB
94 行
borrow-or-share
数据借用或共享的特性。
以下为该库的基本用法。有关详细说明,请参阅文档。
基本用法
假设你有一个泛型类型,它要么拥有一些数据,要么持有对它们的引用。你可以使用这个库来实现这个类型的方法,该方法接受&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 为找出代码的安全版本。