2 个稳定版本
2.0.0 | 2022 年 10 月 18 日 |
---|---|
1.2.2 | 2022 年 10 月 18 日 |
1.2.1 |
|
1.2.0 |
|
0.2.1 |
|
#129 in Rust 模式
1,998,201 个月的下载量
在 914 个 包中使用 (直接使用 14 个)
45KB
906 行
易碎
该库提供包装类型,允许将不可发送的类型发送到其他线程,并使用运行时检查以确保安全性。
它提供了 Fragile<T>
、Sticky<T>
和 SemiSticky<T>
类型,它们在性质上相似,但在析构函数的执行方面有不同的行为。如果析构函数在另一个线程中调用,则 Fragile<T>
将引发 panic,Sticky<T>
将临时泄漏对象,直到线程关闭。《SemiSticky<T> 是这两种方法的折衷方案。它类似于 Sticky<T>
,但如果类型不需要 Drop
,它将避免使用线程本地存储。
示例
use std::thread;
// creating and using a fragile object in the same thread works
let val = Fragile::new(true);
assert_eq!(*val.get(), true);
assert!(val.try_get().is_ok());
// once send to another thread it stops working
thread::spawn(move || {
assert!(val.try_get().is_err());
}).join()
.unwrap();
许可证和链接
- 文档
- 问题跟踪器
- 许可证: Apache 2.0