3 个不稳定版本
0.2.0 | 2024 年 4 月 27 日 |
---|---|
0.1.1 | 2024 年 4 月 16 日 |
0.1.0 | 2024 年 4 月 16 日 |
295 在 Rust 模式 中
22,716 每月下载量
用于 135 个crate(2个直接使用)
22KB
494 代码行
此模块包含 Oco
(所有克隆一次)智能指针,用于存储值的不可变引用。这对于存储字符串等非常有用。
想象一下,这是一个带有额外引用计数的分支的 [Cow] 的替代品。
use oco_ref::Oco;
use std::sync::Arc;
let static_str = "foo";
let arc_str: Arc<str> = "bar".into();
let owned_str: String = "baz".into();
fn uses_oco(value: impl Into<Oco<'static, str>>) {
let mut value = value.into();
// ensures that the value is either a reference, or reference-counted
// O(n) at worst
let clone1 = value.clone_inplace();
// these subsequent clones are O(1)
let clone2 = value.clone();
let clone3 = value.clone();
}
uses_oco(static_str);
uses_oco(arc_str);
uses_oco(owned_str);
lib.rs
:
此模块包含 Oco
(所有克隆一次)智能指针,用于存储值的不可变引用。这对于存储字符串等非常有用。
依赖项
~0.4–1MB
~22K SLoC