UNPKG

@hazae41/box

Version:

Rust-like Box and similar objects for TypeScript

32 lines (29 loc) 959 B
import { Wrap, AsyncWrap } from '../wrap/index.js'; /** * A simple reference */ declare class Ref<T> implements Disposable { readonly value: T; readonly clean: Disposable; constructor(value: T, clean: Disposable); static wrap<T extends Disposable>(value: T): Ref<T>; static from<T>(value: Wrap<T>): Ref<T>; static with<T>(value: T, clean: (value: T) => void): Ref<T>; [Symbol.dispose](): void; [Symbol.asyncDispose](): Promise<void>; get(): T; } /** * A simple reference */ declare class AsyncRef<T> implements AsyncDisposable { readonly value: T; readonly clean: AsyncDisposable; constructor(value: T, clean: AsyncDisposable); static wrap<T extends AsyncDisposable>(value: T): AsyncRef<T>; static from<T>(value: AsyncWrap<T>): AsyncRef<T>; static with<T>(value: T, clean: (value: T) => void): AsyncRef<T>; [Symbol.asyncDispose](): Promise<void>; get(): T; } export { AsyncRef, Ref };