2 个版本
0.0.2 | 2021 年 11 月 12 日 |
---|---|
0.0.1 | 2021 年 11 月 8 日 |
#2423 in Rust 模式
每月 38 下载
38KB
600 行
tiptoe
一个易于支持的侵入式引用计数智能指针。
安装
请使用 cargo-edit 以添加此库的最新版本
cargo add tiptoe --features sync
功能
"sync"
启用 [Arc
] 类型,它需要 AtomicUsize
。
示例
use pin_project::pin_project;
use tiptoe::{IntrusivelyCountable, TipToe};
// All attributes optional.
#[pin_project]
#[derive(Debug, Default, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
pub struct A {
#[pin]
ref_counter: TipToe,
}
unsafe impl IntrusivelyCountable for A {
type RefCounter = TipToe;
fn ref_counter(&self) -> &Self::RefCounter {
&self.ref_counter
}
}
fn main() {
#[cfg(feature = "sync")]
{
use tiptoe::Arc;
let arc = Arc::new(A::default());
let inner_ref: &A = &arc;
let another_arc = unsafe {
Arc::borrow_from_inner_ref(&inner_ref)
}.clone();
}
}
实现进度
这个库目前只实现了我在 rhizome 中需要的功能。
如果您想帮忙,请查看 问题。
目前遗漏的亮点:Rc
、Weak
和大多数不影响 API 的优化。
许可证
许可协议为以下之一
- Apache 许可证 2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献,根据 Apache-2.0 许可证的定义,都应作为上述双重许可,不附加任何额外条款或条件。
有关更多信息,请参阅 CONTRIBUTING。
行为准则
变更日志
版本控制
tiptoe
严格遵循 语义版本控制 2.0.0,以下为例外
- 在主版本更改时,副版本号不会重置为 0(除 v1 以外)。
将其视为全局功能级别。 - 在主版本或副版本更改时,补丁版本不会重置为 0(除 v0.1 和 v1 以外)。
将其视为全局补丁级别。
这包括上述 Rust 版本要求。
较早的 Rust 版本可能与当前版本兼容,但此兼容性可能随着副版本或补丁版本的发布而改变。
受功能和补丁影响的版本可以从前面的 CHANGELOG.md 中的相应标题确定。
请注意,此crate的依赖项可能具有更宽松的MSRV策略!如果您没有手动生成Cargo.lock(或在必要时)并且需要支持比当前稳定版更旧的编译器,请在您的自动化中使用以下命令:cargo +nightly update -Z minimal-versions
。
依赖项
~39KB