2 个稳定版本

2.0.0 2022 年 10 月 18 日
1.2.2 2022 年 10 月 18 日
1.2.1 2022 年 6 月 9 日
1.2.0 2022 年 3 月 28 日
0.2.1 2018 年 6 月 21 日

#129 in Rust 模式

Download history 473655/week @ 2024-04-23 425142/week @ 2024-04-30 443991/week @ 2024-05-07 467670/week @ 2024-05-14 459857/week @ 2024-05-21 500701/week @ 2024-05-28 486244/week @ 2024-06-04 500783/week @ 2024-06-11 463264/week @ 2024-06-18 493375/week @ 2024-06-25 412264/week @ 2024-07-02 470228/week @ 2024-07-09 474924/week @ 2024-07-16 490990/week @ 2024-07-23 457830/week @ 2024-07-30 489351/week @ 2024-08-06

1,998,201 个月的下载量
914 包中使用 (直接使用 14 个)

Apache-2.0

45KB
906

易碎

Build Status Crates.io License rustc 1.42.0 Documentation

该库提供包装类型,允许将不可发送的类型发送到其他线程,并使用运行时检查以确保安全性。

它提供了 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();

依赖关系