1 个不稳定版本

0.0.1 2023年5月12日

#77 in #智能指针

MIT/Apache

18KB
310

inscope

这个包实现了一个类似于 Option 的类型,可以用来表示“在作用域内”或“不在作用域内”的值。

这个包目前是不稳定的,不建议在生产环境中使用。

为什么?

这个包是为了解决我在开发其他 Panthios 工具时遇到的问题而创建的。我需要一个方法来表示可以在其他线程中被删除的值,并且删除应该反映在原始线程中。这可以通过一个 Arc<Mutex<T>> 来解决,但对于这个特定用例来说,这过于复杂。相反,可以使用 mutable-constant 包来创建一个可以设置为 None 的可变 Option

示例

use inscope::Scope;

let scope = Scope::new(42);
assert_eq!(*scope, Some(42));

// This requires unsafe because defiant
// `Mc` mutations are unsafe
unsafe {
  scope.delete();
}

assert_eq!(*scope, None);

lib.rs:

inscope

这个包提供了一个智能指针,允许在值仍然被借用的情况下释放它。在大多数情况下,这完全没有用处。然而,当资源被删除但仍需要被其他线程处理时,这可能会很有用。

在值仍然被借用的情况下删除值是一个不安全操作。您需要使用 unsafe 块来有效地使用这个包。

示例

use inscope::Scope;

let scope = Scope::new(42);
assert_eq!(*scope, Some(42));

unsafe {
   scope.delete();
}

assert_eq!(*scope, None);

依赖关系