UNPKG

@benodiwal/rusty-ts

Version:

A TypeScript library providing Rust-like Result and Option types for safer and more expressive error handling and optional values.

43 lines (42 loc) 1.26 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Results = void 0; class Results { static ok(value) { return { type: 'Ok', value }; } static err(error) { return { type: 'Err', error }; } static isOk(result) { return result.type === 'Ok'; } static isErr(result) { return result.type === 'Err'; } static unwrap(result) { if (Results.isOk(result)) { return result.value; } throw new Error('Called unwrap on an Err value'); } static unwrapOr(result, defaultValue) { return Results.isOk(result) ? result.value : defaultValue; } static unwrapOrElse(result, fn) { return Results.isOk(result) ? result.value : fn(result.error); } static map(result, fn) { return Results.isOk(result) ? Results.ok(fn(result.value)) : result; } static mapErr(result, fn) { return Results.isErr(result) ? Results.err(fn(result.error)) : result; } static andThen(result, fn) { return Results.isOk(result) ? fn(result.value) : result; } static orElse(result, fn) { return Results.isErr(result) ? fn(result.error) : result; } } exports.Results = Results;