Reference-counted (Rc) and weak reference (Weak) types for MoonBit
Native target only. This package uses a C FFI finalizer (moonbit_make_external_object) to detect when an Rc is dropped, so it requires preferred-target: "native".
moon add tonyfettes/rctype Rc[T]
Rc::new(T) -> Rc[T] // wrap a value
Rc::get(Rc[T]) -> T // consume the Rc and extract the value
type Weak[T]
Weak::new(Rc[T]) -> Weak[T] // create a weak reference
Weak::get(Weak[T]) -> T? // Some(value) while any Rc is alive, None afterlet rc = @rc.Rc::new(42)
let weak = @rc.Weak::new(rc)
assert_eq(weak.get(), Some(42))
ignore(rc) // last Rc dropped — value cleared
assert_eq(weak.get(), None)Reference-counted (Rc) and weak reference (Weak) types for MoonBit