@hazae41/box
Version:
Rust-like Box and similar objects for TypeScript
32 lines (29 loc) • 959 B
TypeScript
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>;
[](): void;
[](): 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>;
[](): Promise<void>;
get(): T;
}
export { AsyncRef, Ref };