UNPKG

perlica

Version:

<h1 align="center">Perlica</h1>

103 lines (102 loc) 5.01 kB
/** * |-----------------------|-------------------| * | Rust methods | Perlica | * |-----------------------|-------------------| * | and | and | * | and_then | andThen | * | as_deref | | * | as_deref_mut | | * | as_mut | | * | as_mut_slice | | * | as_pin_mut | | * | as_pin_ref | | * | as_ref | | * | as_slice | | * | cloned | | * | copied | | * | expect | expect | * | filter | filter | * | flatten | flatten | * | get_or_insert | | * | get_or_insert_default | | * | get_or_insert_with | | * | insert | | * | inspect | inspect | * | is_none | isNone | * | is_none_or | isNoneOr | * | is_some | isSome | * | is_some_and | isSomeAnd | * | iter | | * | iter_mut | | * | map | map | * | map_or | mapOr | * | map_or_else | mapOrElse | * | ok_or | okOr | * | ok_or_else | okOrElse | * | or | or | * | or_else | orElse | * | replace | | * | take | | * | take_if | | * | transpose | transpose | * | unwrap | unwrap | * | unwrap_or | unwrapOr | * | unwrap_or_default | | * | unwrap_or_else | unwrapOrElse | * | unwrap_unchecked | | * | unzip | | * | xor | xor | * | zip | | * | zip_with | | * |-----------------------|-------------------| */ import { OnceIterator } from "./Iterator"; import { type Result } from "./Result"; export type SomeType<R> = R extends Option<infer T> ? T : any; export interface OptionTrait<T> { and<U, T>(this: Option<T>, v: Option<U>): Option<U>; andThen<U, T>(this: Option<T>, f: (v: T) => Option<U>): Option<U>; expect<T>(this: Option<T>, msg: string): T; filter<T>(this: Option<T>, f: (v: T) => boolean): Option<T>; flatten<T>(this: Option<Option<T>>): Option<T>; inspect<T>(this: Option<T>, f: (v: T) => void): Option<T>; isNone<T>(this: Option<T>): boolean; isNoneOr<T>(this: Option<T>, f: (v: T) => boolean): boolean; isSome<T>(this: Option<T>): boolean; isSomeAnd<T>(this: Option<T>, f: (v: T) => boolean): boolean; map<U, T>(this: Option<T>, f: (v: T) => U): Option<U>; mapOr<U, T>(this: Option<T>, def: U, f: (v: T) => U): U; mapOrElse<U, T>(this: Option<T>, d: () => U, f: (v: T) => U): U; okOr<T, E>(this: Option<T>, v: E): Result<T, E>; okOrElse<T, E>(this: Option<T>, f: () => E): Result<T, E>; or<T>(this: Option<T>, v: Option<T>): Option<T>; orElse<T>(this: Option<T>, f: () => Option<T>): Option<T>; transpose<T, E>(this: Option<Result<T, E>>): Result<Option<T>, E>; unwrap: <T>(this: Option<T>) => T; unwrapOr<T>(this: Option<T>, def: T): T; unwrapOrElse<T>(this: Option<T>, def: () => T): T; xor<T>(this: Option<T>, v: Option<T>): Option<T>; [Symbol.iterator](this: Option<T>): OnceIterator<Option<T>, T>; } export declare const isSome: <T>(r: Option<T>) => r is Some<T>; export declare const isNone: <T>(r: Option<T>) => r is None; export interface Some<T> extends OptionTrait<T> { value: T; tag: "some"; } export interface None extends OptionTrait<never> { tag: "none"; } export type Option<T> = Some<T> | None; export declare const OptionProto: <T>() => OptionTrait<T>; export declare const fromNullable: <T>(v: T) => Option<NonNullable<T>>; export declare const fromResult: <T, E>(v: Result<T, E>) => Option<T>; export declare const tryCatch: <T>(f: () => T) => Option<T>; export declare const tryPromise: <T>(v: Promise<T>) => Promise<Option<T>>; export declare const some: <T = never>(v: T) => Option<T>; export declare const none: <T = never>() => Option<T>; interface Bind { <T extends Option<any>, R>(fn: () => Generator<T, R>): Option<R>; } export declare const bind: Bind; export {};