commit | 8f656cb0af1dffecb75b646ed845f70a81cc8cdb | [log] [tgz] |
---|---|---|
author | Wei Li <[email protected]> | Fri Aug 02 23:01:08 2024 +0000 |
committer | Wei Li <[email protected]> | Fri Aug 02 23:01:08 2024 +0000 |
tree | 2dbe03b5ef94364d6d9de7b8be7054d2c550deb1 | |
parent | 29340a3b1372364731c3882d8e86a6f8683a9d4e [diff] |
Cleanup license metadata in external/rust/crates/fragile. Add package and license module in Android.bp. File LICENSE is from upstream project, so use it in Android.bp. Bug: 346390141 Change-Id: Id4e2cd4309078d383d4b3b2b15c2022dcb9395ed Test: CIs
This library provides wrapper types that permit sending non Send types to other threads and use runtime checks to ensure safety.
It provides the Fragile<T>
, Sticky<T>
and SemiSticky<T>
types which are similar in nature but have different behaviors with regards to how destructors are executed. The Fragile<T>
will panic if the destructor is called in another thread, Sticky<T>
will temporarily leak the object until the thread shuts down. SemiSticky<T>
is a compromise of the two. It behaves like Sticky<T>
but it avoids the use of thread local storage if the type does not need 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();