Skip to main content

Class: Result<T, E, Success>

A type used to express computations that can fail, it can be used for returning and propagating errors. This is a type union with the variants Ok(T), representing success and containing a value, and Err(E), representing error and containing an error value.

Typeparam

T The result's type.

Typeparam

E The error's type.

See

https://doc.rust-lang.org/std/result/index.html

Type Parameters

Type ParameterDefault type
T-
E-
Success extends booleanboolean

Constructors

new Result()

private new Result<T, E, Success>(value: If<Success, T, E>, success: Success): Result<T, E, Success>

Parameters

ParameterType
valueIf<Success, T, E>
successSuccess

Returns

Result<T, E, Success>

Defined in

projects/utilities/packages/result/src/lib/Result.ts:28

Properties

__STATUS__

protected __STATUS__: Success

Internal

Branded value to ensure Success is typed correctly.

Defined in

projects/utilities/packages/result/src/lib/Result.ts:23


[SuccessProperty]

private readonly [SuccessProperty]: Success

Defined in

projects/utilities/packages/result/src/lib/Result.ts:26


[ValueProperty]

private readonly [ValueProperty]: If<Success, T, E>

Defined in

projects/utilities/packages/result/src/lib/Result.ts:25

Accessors

[toStringTag]

Get Signature

get [toStringTag](): If<Success, "Ok", "Err">

Returns

If<Success, "Ok", "Err">

Defined in

projects/utilities/packages/result/src/lib/Result.ts:993

Methods

[iterator]()

[iterator](): Generator<T, any, unknown>

Returns an iterator over the possibly contained value.

The iterator yields one value if the result is Ok, otherwise none.

Returns

Generator<T, any, unknown>

Examples

const x = ok(7);
for (const value of x) {
console.log(value);
}
// Logs 7
const x = err('Nothing!');
for (const value of x) {
console.log(value);
}
// Doesn't log

See

Defined in

projects/utilities/packages/result/src/lib/Result.ts:989


and()

and<OutputResult>(result: OutputResult): If<Success, OutputResult, Err<E, any>>

Returns result if the result is Ok, otherwise returns the Err value of itself.

Type Parameters

Type Parameter
OutputResult extends Any

Parameters

ParameterTypeDescription
resultOutputResultThe result to check.

Returns

If<Success, OutputResult, Err<E, any>>

Examples

const x: Result<number, string> = ok(2);
const y: Result<string, string> = err('Late error');
assert.equal(x.and(y), err('Late error'));
const x: Result<number, string> = err('Early error');
const y: Result<string, string> = err('Late error');
assert.equal(x.and(y), err('Early error'));
const x: Result<number, string> = ok(2);
const y: Result<string, string> = ok('Hello');
assert.equal(x.and(y), ok('Hello'));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.and

Defined in

projects/utilities/packages/result/src/lib/Result.ts:682


andThen()

andThen<OutputResult>(cb: (value: T) => OutputResult): If<Success, OutputResult, Err<E, any>>

Calls cb if the result is Ok, otherwise returns the Err value of self.

This function can be used for control flow based on Result values.

Type Parameters

Type Parameter
OutputResult extends Any

Parameters

ParameterTypeDescription
cb(value: T) => OutputResultThe predicate.

Returns

If<Success, OutputResult, Err<E, any>>

Example

function fractionOf4(value: number) {
return value === 0 ? err('overflowed') : ok(4 / value);
}

assert.equal(ok(2).andThen(fractionOf4), ok(4));
assert.equal(ok(0).andThen(fractionOf4), err('overflowed'));
assert.equal(err('not a number').andThen(fractionOf4), err('not a number'));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.and_then

Defined in

projects/utilities/packages/result/src/lib/Result.ts:705


contains()

contains(this, value)

contains<Value>(this: Ok<T, any>, value: Value): this is Ok<Value, any>

Returns true if the result is an Ok and the given value strict equals it.

Type Parameters
Type Parameter
Value
Parameters
ParameterTypeDescription
thisOk<T, any>-
valueValueThe value to compare.
Returns

this is Ok<Value, any>

Examples
const x: Result<number, string> = ok(2);
assert.equal(x.contains(2), true);
const x: Result<number, string> = ok(3);
assert.equal(x.contains(2), false);
const x: Result<number, string> = err('Some error message');
assert.equal(x.contains(2), false);
See

https://doc.rust-lang.org/std/result/enum.Result.html#method.contains

Defined in

projects/utilities/packages/result/src/lib/Result.ts:792

contains(this, value)

contains(this: Err<E, any>, value: T): false

Parameters
ParameterType
thisErr<E, any>
valueT
Returns

false

Defined in

projects/utilities/packages/result/src/lib/Result.ts:793


containsErr()

containsErr(this, error)

containsErr(this: Ok<T, any>, error: E): false

Returns true if the result is an Err and the given error strict equals it.

Parameters
ParameterTypeDescription
thisOk<T, any>-
errorEThe error to compare.
Returns

false

Examples
const x: Result<number, string> = ok(2);
assert.equal(x.containsErr('Some error message'), false);
const x: Result<number, string> = err('Some error message');
assert.equal(x.containsErr('Some error message'), true);
const x: Result<number, string> = err('Some other error message');
assert.equal(x.containsErr('Some error message'), false);
See

https://doc.rust-lang.org/std/result/enum.Result.html#method.contains_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:820

containsErr(this, error)

containsErr<Value>(this: Err<E, any>, error: Value): this is Err<Value, any>

Type Parameters
Type Parameter
Value
Parameters
ParameterType
thisErr<E, any>
errorValue
Returns

this is Err<Value, any>

Defined in

projects/utilities/packages/result/src/lib/Result.ts:821


eq()

eq<OtherValue, OtherError, OtherSuccess>(other: Result<OtherValue, OtherError, OtherSuccess>): this is Result<OtherValue, OtherError, OtherSuccess>

Checks whether or not other equals with self.

Type Parameters

Type Parameter
OtherValue
OtherError
OtherSuccess extends boolean

Parameters

ParameterTypeDescription
otherResult<OtherValue, OtherError, OtherSuccess>The other result to compare.

Returns

this is Result<OtherValue, OtherError, OtherSuccess>

See

https://doc.rust-lang.org/std/cmp/trait.PartialEq.html#tymethod.eq

Defined in

projects/utilities/packages/result/src/lib/Result.ts:918


err()

err(): If<Success, None, Some<E>>

Converts from Result<T, E> to Option<E>.

Converts itself into an Option<E>, and discarding the successful value, if any.

Returns

If<Success, None, Some<E>>

Examples

const x: Result<number, string> = ok(2);
assert.equal(x.err(), none);
const x: Result<number, string> = err('Some error message');
assert.equal(x.err(), 'Some error message');

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:168


expect()

expect(message: string): If<Success, T, never>

Returns the contained Ok value.

If the value is an Err, it throws a ResultError with the given message and the content of the Err.

Parameters

ParameterTypeDescription
messagestringThe message for the error.

Returns

If<Success, T, never>

Examples

const x = ok(2);
assert.equal(x.expect('Whoops!'), 2);
const x = err('Emergency failure');
assert.throws(() => x.expect('Whoops!'), {
name: 'ResultError',
message: 'Whoops',
value: 'Emergency failure'
});

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.expect

Defined in

projects/utilities/packages/result/src/lib/Result.ts:479


expectErr()

expectErr(message: string): If<Success, never, E>

Returns the contained Err value.

If the value is an Ok, it throws a ResultError with the given message and the content of the Ok.

Parameters

ParameterTypeDescription
messagestringThe message for the error.

Returns

If<Success, never, E>

Examples

const x = ok(2);
assert.throws(() => x.expectErr('Whoops!'), {
name: 'ResultError',
message: 'Whoops',
value: 2
});
const x = err('Emergency failure');
assert.equal(x.expectErr('Whoops!'), 'Emergency failure');

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.expect_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:507


flatten()

flatten<InnerResult>(this: Result<InnerResult, E, Success>): If<Success, InnerResult, Err<E, any>>

Converts from Result<Result<T, E>, E> to Result<T, E>.

Type Parameters

Type Parameter
InnerResult extends Any

Parameters

ParameterType
thisResult<InnerResult, E, Success>

Returns

If<Success, InnerResult, Err<E, any>>

Examples

const x: Result<Result<string, number>, number> = ok(ok('Hello'));
assert.equal(x.flatten(), ok('Hello'));
const x: Result<Result<string, number>, number> = ok(err(6));
assert.equal(x.flatten(), err(6));
const x: Result<Result<string, number>, number> = err(6);
assert.equal(x.flatten(), err(6));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.flatten

Defined in

projects/utilities/packages/result/src/lib/Result.ts:870


inspect()

inspect(cb: (value: T) => unknown): this

Calls the provided closure with a reference to the contained value (if Ok).

Parameters

ParameterTypeDescription
cb(value: T) => unknownThe predicate.

Returns

this

Seealso

inspectAsync for the awaitable version.

Examples

ok(2).inspect(console.log);
// Logs: 2
err('Some error message').inspect(console.log);
// Doesn't log

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.inspect

Defined in

projects/utilities/packages/result/src/lib/Result.ts:354


inspectAsync()

inspectAsync(cb: (value: T) => unknown): Promise<Result<T, E, Success>>

Calls the provided closure with a reference to the contained value (if Ok) and awaits it.

Parameters

ParameterTypeDescription
cb(value: T) => unknownThe predicate.

Returns

Promise<Result<T, E, Success>>

Seealso

inspect for the sync version.

Examples

await ok(2).inspectAsync(console.log);
// Logs: 2
await err('Some error message').inspectAsync(console.log);
// Doesn't log

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Result.ts:377


inspectErr()

inspectErr(cb: (error: E) => unknown): this

Calls the provided closure with a reference to the contained error (if Err).

Parameters

ParameterTypeDescription
cb(error: E) => unknownThe predicate.

Returns

this

Seealso

inspectErrAsync for the awaitable version.

Examples

ok(2).inspectErr(console.log);
// Doesn't log
err('Some error message').inspectErr(console.log);
// Logs: Some error message

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.inspect_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:400


inspectErrAsync()

inspectErrAsync(cb: (error: E) => unknown): Promise<Result<T, E, Success>>

Calls the provided closure with a reference to the contained error (if Err) and awaits it.

Parameters

ParameterTypeDescription
cb(error: E) => unknownThe predicate.

Returns

Promise<Result<T, E, Success>>

Seealso

inspectErr for the sync version.

Examples

await ok(2).inspectErrAsync(console.log);
// Doesn't log
await err('Some error message').inspectErrAsync(console.log);
// Logs: Some error message

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Result.ts:423


intoOkOrErr()

intoOkOrErr(): If<Success, T, E>

Returns the Ok value if self is Ok, and the Err value if self is Err.

Returns

If<Success, T, E>

Examples

let x: Result<number, number> = ok(3);
assert.equal(x.intoOkOrErr(), 3);
let x: Result<number, number> = err(4);
assert.equal(x.intoOkOrErr(), 4);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.into_ok_or_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:890


intoPromise()

intoPromise(): If<Success, Promise<Ok<Awaited<T>, any>>, Promise<Err<Awaited<E>, any>>>

Returns a Promise object with the awaited value (if Ok) or the awaited error (if Err).

Returns

If<Success, Promise<Ok<Awaited<T>, any>>, Promise<Err<Awaited<E>, any>>>

Example

let x = ok(Promise.resolve(3));
assert.equal(await x.intoPromise(), ok(3));

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Result.ts:905


isErr()

isErr(): this is Err<E, T>

Returns true if the result is Err.

Returns

this is Err<E, T>

Examples

const x = ok(-3);
assert.equal(x.isErr(), false);
const x = err('Some error message');
assert.equal(x.isErr(), true);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.is_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:96


isErrAnd()

isErrAnd(cb)

isErrAnd<R>(cb: (error: E) => error is R): this is Err<R, T>

Returns true if the result is Err and the value inside of it matches a predicate.

Type Parameters
Type Parameter
R
Parameters
ParameterTypeDescription
cb(error: E) => error is RThe predicate.
Returns

this is Err<R, T>

Examples
const x = ok(2);
assert.equal(x.isErrAnd((error) => error instanceof TypeError), false);
const x = err(new Error('Some error message'));
assert.equal(x.isErrAnd((error) => error instanceof TypeError), false);
const x = err(new TypeError('Some error message'));
assert.equal(x.isErrAnd((error) => error instanceof TypeError), true);
See

https://doc.rust-lang.org/std/result/enum.Result.html#method.is_err_and

Defined in

projects/utilities/packages/result/src/lib/Result.ts:122

isErrAnd(cb)

isErrAnd<R>(cb: (error: E) => R): this is Err<E, T> & R

Type Parameters
Type Parameter
R extends boolean
Parameters
ParameterType
cb(error: E) => R
Returns

this is Err<E, T> & R

Defined in

projects/utilities/packages/result/src/lib/Result.ts:123


isOk()

isOk(): this is Ok<T, E>

Returns true if the result is Ok.

Returns

this is Ok<T, E>

Examples

const x = ok(-3);
assert.equal(x.isOk(), true);
const x = err('Some error message');
assert.equal(x.isOk(), false);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.is_ok

Defined in

projects/utilities/packages/result/src/lib/Result.ts:49


isOkAnd()

isOkAnd(cb)

isOkAnd<R>(cb: (value: T) => value is R): this is Ok<R, E>

Returns true if the result is Ok and the value inside of it matches a predicate.

Type Parameters
Type Parameter
R
Parameters
ParameterType
cb(value: T) => value is R
Returns

this is Ok<R, E>

Examples
const x = ok(2);
assert.equal(x.isOkAnd((value) => value > 1), true);
const x = ok(0);
assert.equal(x.isOkAnd((value) => value > 1), false);
const x = err('Some error message');
assert.equal(x.isOkAnd((value) => value > 1), false);
See

https://doc.rust-lang.org/std/result/enum.Result.html#method.is_ok_and

Defined in

projects/utilities/packages/result/src/lib/Result.ts:74

isOkAnd(cb)

isOkAnd<R>(cb: (value: T) => R): this is Ok<T, E> & R

Type Parameters
Type Parameter
R extends boolean
Parameters
ParameterType
cb(value: T) => R
Returns

this is Ok<T, E> & R

Defined in

projects/utilities/packages/result/src/lib/Result.ts:75


iter()

iter(): Generator<T, any, unknown>

Returns an iterator over the possibly contained value.

The iterator yields one value if the result is Ok, otherwise none.

Returns

Generator<T, any, unknown>

Examples

const x = ok(7);
for (const value of x.iter()) {
console.log(value);
}
// Logs 7
const x = err('Nothing!');
for (const value of x.iter()) {
console.log(value);
}
// Doesn't log

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.iter

Defined in

projects/utilities/packages/result/src/lib/Result.ts:452


map()

map<OutputValue>(cb: (value: T) => OutputValue): If<Success, Ok<OutputValue, E>, Err<E, any>>

Maps a Result<T, E> to Result<U, E> by applying a function to a contained Ok value, leaving an Err value untouched.

Type Parameters

Type Parameter
OutputValue

Parameters

ParameterTypeDescription
cb(value: T) => OutputValueThe predicate.

Returns

If<Success, Ok<OutputValue, E>, Err<E, any>>

Examples

const x: Result<number, string> = ok(2);
assert.equal(x.map((value) => value * 2), ok(4));
const x: Result<number, string> = err('Some error message');
assert.equal(x.map((value) => value * 2), err('Some error message'));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.map

Defined in

projects/utilities/packages/result/src/lib/Result.ts:190


mapErr()

mapErr<OutputError>(cb: (error: E) => OutputError): If<Success, Ok<T, any>, Err<OutputError, any>>

Maps a Result<T, E> to Result<T, F> by applying a function to a contained Err value, leaving an Ok value untouched.

This function can be used to pass through a successful result while handling an error.

Type Parameters

Type Parameter
OutputError

Parameters

ParameterTypeDescription
cb(error: E) => OutputErrorThe predicate.

Returns

If<Success, Ok<T, any>, Err<OutputError, any>>

Examples

const x: Result<number, Error> = ok(2);
assert.equal(x.mapErr((error) => error.message), ok(2));
const x: Result<number, Error> = err(new Error('Some error message'));
assert.equal(x.mapErr((error) => error.message), err('Some error message'));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.map_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:300


mapErrInto()

mapErrInto<OutputResult>(cb: (error: E) => OutputResult): If<Success, Ok<T, any>, OutputResult>

Maps a Result<T, E> to Result<T, F> by applying a function to a contained Err value, leaving an Ok value untouched.

This function can be used to pass through a successful result while handling an error.

Unlike mapErr, this method does not wrap the returned value inside Err, but instead, it returns the returned value.

Type Parameters

Type Parameter
OutputResult extends Any

Parameters

ParameterTypeDescription
cb(error: E) => OutputResultThe predicate.

Returns

If<Success, Ok<T, any>, OutputResult>

Examples

const x: Result<number, Error> = ok(2);
assert.equal(x.mapErrInto((error) => err(error.message)), ok(2));
const x: Result<number, Error> = err(new Error('Some error message'));
assert.equal(x.mapErrInto((error) => err(error.message)), err('Some error message'));
const x: Result<number, Error> = err(new Error('Some error message'));
assert.equal(x.mapErrInto((error) => ok(4)), ok(4));

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Result.ts:332


mapInto()

mapInto<OutputResult>(cb: (value: T) => OutputResult): If<Success, OutputResult, Err<E, any>>

Maps a Result<T, E> to Result<T, F> by applying a function to a contained Ok value, leaving an Err value untouched.

Unlike map, this method does not wrap the returned value inside Ok, but instead, it returns the returned value.

Type Parameters

Type Parameter
OutputResult extends Any

Parameters

ParameterTypeDescription
cb(value: T) => OutputResultThe predicate.

Returns

If<Success, OutputResult, Err<E, any>>

Examples

const x: Result<number, string> = ok(2);
assert.equal(x.mapInto((value) => ok(value * value)), ok(4));
const x: Result<number, string> = ok(0);
assert.equal(
x.mapInto((value) => (value === 0 ? err('zero is not divisible') : ok(1 / value))),
err('zero is not divisible')
);
const x: Result<number, string> = err('Some error message');
assert.equal(x.mapInto((value) => ok(4)), err('Some error message'));

Note

This is an extension not supported in Rust

Defined in

projects/utilities/packages/result/src/lib/Result.ts:223


mapOr()

mapOr<MappedOutputValue, DefaultOutputValue>(defaultValue: DefaultOutputValue, cb: (value: T) => MappedOutputValue): If<Success, MappedOutputValue, DefaultOutputValue>

Returns the provided default (if Err), or applies a function to the contained value (if Ok),

Arguments passed to mapOr are eagerly evaluated; if you are passing the result of a function call, it is recommended to use mapOrElse, which is lazily evaluated.

Type Parameters

Type Parameter
MappedOutputValue
DefaultOutputValue

Parameters

ParameterTypeDescription
defaultValueDefaultOutputValueThe default value to use.
cb(value: T) => MappedOutputValueThe predicate.

Returns

If<Success, MappedOutputValue, DefaultOutputValue>

Examples

const x = ok('hello');
assert.equal(x.mapOr(42, (value) => value.length), 5);
const x = err('Some error message');
assert.equal(x.mapOr(42, (value) => value.length), 42);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.map_or

Defined in

projects/utilities/packages/result/src/lib/Result.ts:248


mapOrElse()

mapOrElse<OutputValue, OutputError>(op: (error: E) => OutputError, cb: (value: T) => OutputValue): If<Success, OutputValue, OutputError>

Maps a Result<T, E> to U by applying fallback function default to a contained Err value, or function cb to a contained Ok value.

This function can be used to unpack a successful result while handling an error.

Type Parameters

Type Parameter
OutputValue
OutputError

Parameters

ParameterTypeDescription
op(error: E) => OutputErrorThe predicate that is run on Err.
cb(value: T) => OutputValueThe predicate that is run on Ok.

Returns

If<Success, OutputValue, OutputError>

Examples

const x: Result<string, string> = ok('hello');
assert.equal(x.mapOrElse((error) => error.length, (value) => value.length), 5);
const x: Result<string, string> = err('Some error message');
assert.equal(x.mapOrElse((error) => error.length, (value) => value.length), 18);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.map_or_else

Defined in

projects/utilities/packages/result/src/lib/Result.ts:276


match()

match<OkValue, ErrValue>(branches: object): If<Success, OkValue, ErrValue>

Runs ok function if self is Ok, otherwise runs err function.

Type Parameters

Type Parameter
OkValue
ErrValue

Parameters

ParameterTypeDescription
branchesobjectThe branches to match.
branches.err-
branches.ok-

Returns

If<Success, OkValue, ErrValue>

Examples

const result = ok(4).match({
ok: (v) => v,
err: () => 0
});
assert.equal(result, 4);
const result = err('Hello').match({
ok: (v) => v,
err: () => 0
});
assert.equal(result, 0);

Defined in

projects/utilities/packages/result/src/lib/Result.ts:956


ne()

ne(other: Result<T, E, boolean>): boolean

Checks whether or not other doesn't equal with self.

Parameters

ParameterTypeDescription
otherResult<T, E, boolean>The other result to compare.

Returns

boolean

See

https://doc.rust-lang.org/std/cmp/trait.PartialEq.html#method.ne

Defined in

projects/utilities/packages/result/src/lib/Result.ts:931


ok()

ok(): If<Success, Some<T>, None>

Converts from Result<T, E> to Option<T>.

Converts itself into an Option<T>, and discarding the error, if any.

Returns

If<Success, Some<T>, None>

Examples

const x: Result<number, string> = ok(2);
assert.equal(x.ok(), some(2));
const x: Result<number, string> = err('Some error message');
assert.equal(x.ok(), none);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.ok

Defined in

projects/utilities/packages/result/src/lib/Result.ts:146


or()

or<OutputResult>(result: OutputResult): If<Success, Ok<T, any>, OutputResult>

Return result if the result is Err, otherwise returns the Ok value of self.

Arguments passed to or are eagerly evaluated; if you are passing the result of a function call, it is recommended to use orElse, which is lazily evaluated.

Type Parameters

Type Parameter
OutputResult extends Any

Parameters

ParameterTypeDescription
resultOutputResultThe result to check.

Returns

If<Success, Ok<T, any>, OutputResult>

Examples

const x: Result<number, string> = ok(2);
const y: Result<number, string> = err('Late error');
assert.equal(x.or(y), ok(2));
const x: Result<number, string> = err('Early error');
const y: Result<number, string> = ok(2);
assert.equal(x.or(y), ok(2));
const x: Result<number, string> = err('Early error');
const y: Result<number, string> = err('Late error');
assert.equal(x.or(y), err('Late error'));
const x: Result<number, string> = ok(2);
const y: Result<number, string> = ok(100);
assert.equal(x.or(y), ok(2));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.or

Defined in

projects/utilities/packages/result/src/lib/Result.ts:743


orElse()

orElse<OutputResult>(cb: (error: E) => OutputResult): If<Success, Ok<T, any>, OutputResult>

Calls cb if the result is Err, otherwise returns the Ok value of self.

This function can be used for control flow based on result values.

Type Parameters

Type Parameter
OutputResult extends Any

Parameters

ParameterTypeDescription
cb(error: E) => OutputResultThe predicate.

Returns

If<Success, Ok<T, any>, OutputResult>

Example

const square = (x: number): Result<number, string> => ok(x * x);
const wrapErr = (x: number): Result<number, string> => err(x);

assert.equal(ok(2).orElse(square).orElse(square), ok(2));
assert.equal(ok(2).orElse(wrapErr).orElse(square), ok(2));
assert.equal(err(3).orElse(square).orElse(wrapErr), ok(9));
assert.equal(err(3).orElse(wrapErr).orElse(wrapErr), err(3));

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.or_else

Defined in

projects/utilities/packages/result/src/lib/Result.ts:766


transpose()

transpose<InnerValue>(this: Result<Option<InnerValue, boolean>, E, Success>): If<Success, Option<Ok<InnerValue, any>, boolean>, Some<Err<E, any>>>

Transposes a Result of an Option into an Option of a Result.

ok(none) will be mapped to none. ok(some(v)) and err(e) will be mapped to some(ok(v)) and some(err(e)).

Type Parameters

Type Parameter
InnerValue

Parameters

ParameterType
thisResult<Option<InnerValue, boolean>, E, Success>

Returns

If<Success, Option<Ok<InnerValue, any>, boolean>, Some<Err<E, any>>>

Example

const x: Result<Option<number>, Error> = ok(some(5));
const y: Option<Result<number, Error>> = some(ok(5));
assert.equal(x.transpose(), y);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.transpose

Defined in

projects/utilities/packages/result/src/lib/Result.ts:840


unwrap()

unwrap(): If<Success, T, never>

Returns the contained Ok value.

If the value is an Err, it throws a ResultError with the message, and the content of the Err.

Returns

If<Success, T, never>

Seealso

unwrapOr

Seealso

unwrapOrElse

Seealso

unwrapErr

Seealso

unwrapRaw

Examples

const x = ok(2);
assert.equal(x.unwrap(), 2);
const x = err('Emergency failure');
assert.throws(() => x.unwrap(), {
name: 'ResultError',
message: 'Unwrap failed',
value: 'Emergency failure'
});

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap

Defined in

projects/utilities/packages/result/src/lib/Result.ts:538


unwrapErr()

unwrapErr(): If<Success, never, E>

Returns the contained Err value.

If the value is an Ok, it throws a ResultError with the message, and the content of the Ok.

Returns

If<Success, never, E>

Seealso

unwrap

Seealso

unwrapOr

Seealso

unwrapOrElse

Seealso

unwrapRaw

Examples

const x = ok(2);
assert.throws(() => x.unwrapErr(), {
name: 'ResultError',
message: 'Unwrap failed',
value: 2
});
const x = err('Emergency failure');
assert.equal(x.unwrapErr(), 'Emergency failure');

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_err

Defined in

projects/utilities/packages/result/src/lib/Result.ts:569


unwrapOr()

unwrapOr<OutputValue>(defaultValue: OutputValue): If<Success, T, OutputValue>

Returns the contained Ok value or the provided default.

Arguments passed to unwrapOr are eagerly evaluated; if you are passing the result of a function call, it is recommended to use unwrapOrElse, which is lazily evaluated.

Type Parameters

Type Parameter
OutputValue

Parameters

ParameterTypeDescription
defaultValueOutputValueThe default value.

Returns

If<Success, T, OutputValue>

Seealso

unwrap

Seealso

unwrapOrElse

Seealso

unwrapErr

Seealso

unwrapRaw

Examples

const x: Result<number, string> = ok(9);
assert.equal(x.unwrapOr(2), 9);
const x: Result<number, string> = err('Error');
assert.equal(x.unwrapOr(2), 2);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_or

Defined in

projects/utilities/packages/result/src/lib/Result.ts:599


unwrapOrElse()

unwrapOrElse<OutputValue>(op: (error: E) => OutputValue): If<Success, T, OutputValue>

Returns the contained Ok value or computes it from a closure.

Type Parameters

Type Parameter
OutputValue

Parameters

ParameterTypeDescription
op(error: E) => OutputValueThe predicate.

Returns

If<Success, T, OutputValue>

Seealso

unwrap

Seealso

unwrapOr

Seealso

unwrapErr

Seealso

unwrapRaw

Example

const count = (x: string) => x.length;

assert.equal(ok(2).unwrapOrElse(count), 2);
assert.equal(err('hello').unwrapOrElse(count), 5);

See

https://doc.rust-lang.org/std/result/enum.Result.html#method.unwrap_or_else

Defined in

projects/utilities/packages/result/src/lib/Result.ts:622


unwrapRaw()

unwrapRaw(): If<Success, T, never>

Returns the contained Ok value.

If the value is an Err, it throws the contained error.

Returns

If<Success, T, never>

Seealso

unwrap

Seealso

unwrapOr

Seealso

unwrapOrElse

Seealso

unwrapErr

Examples

const x = ok(2);
assert.equal(x.unwrapRaw(), 2);
const x = err('Emergency failure');
assert.throws(() => x.unwrapRaw(), {
name: 'Error',
message: 'Unwrap failed',
value: 'Emergency failure'
});

Defined in

projects/utilities/packages/result/src/lib/Result.ts:650


[hasInstance]()

static [hasInstance](instance: unknown): boolean

Checks if the instance object is an instance of Result, or if it is a Result-like object. This override exists to interoperate with other versions of this class, such as the one coming from another version of this library or from a different build.

Parameters

ParameterTypeDescription
instanceunknownThe instance to check.

Returns

boolean

Whether or not the instance is a Result.

Example

import { Result } from '@sapphire/result';
const { ok } = require('@sapphire/result');

ok(2) instanceof Result; // true

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1027


all()

static all<Entries>(this: void, results: Entries): Result<UnwrapOkArray<Entries>, UnwrapErrArray<Entries>[number], boolean>

Creates an Ok that is the combination of all collected Ok values as an array, or the first Err encountered.

Type Parameters

Type Parameter
Entries extends readonly Any[]

Parameters

ParameterTypeDescription
thisvoid-
resultsEntriesAn array of Results.

Returns

Result<UnwrapOkArray<Entries>, UnwrapErrArray<Entries>[number], boolean>

A new Result.

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1109


any()

static any<Entries>(this: void, results: Entries): Result<UnwrapOk<Entries[number]>, UnwrapErrArray<Entries>, boolean>

Returns the first encountered Ok, or an Err that is the combination of all collected error values.

Type Parameters

Type Parameter
Entries extends readonly Any[]

Parameters

ParameterTypeDescription
thisvoid-
resultsEntriesAn array of Results.

Returns

Result<UnwrapOk<Entries[number]>, UnwrapErrArray<Entries>, boolean>

A new Result.

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1130


err()

static err<E, T>(this: void, value?: E): Err<E, T>

Type Parameters

Type ParameterDefault type
Eundefined
Tany

Parameters

ParameterType
thisvoid
value?E

Returns

Err<E, T>

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1005


from()

static from<T, E>(this: void, op: ResultResolvable<T, E, boolean> | () => ResultResolvable<T, E, boolean>): Result<T, E, boolean>

Creates a Result out of a callback.

Type Parameters

Type ParameterDefault type
T-
Eunknown

Parameters

ParameterType
thisvoid
opResultResolvable<T, E, boolean> | () => ResultResolvable<T, E, boolean>

Returns

Result<T, E, boolean>

Typeparam

T The result's type.

Typeparam

E The error's type.

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1076


fromAsync()

static fromAsync<T, E>(this: void, op: Awaitable<ResultResolvable<T, E, boolean>> | () => Awaitable<ResultResolvable<T, E, boolean>>): Promise<Result<T, E, boolean>>

Creates a Result out of a promise or async callback.

Type Parameters

Type ParameterDefault type
T-
Eunknown

Parameters

ParameterType
thisvoid
opAwaitable<ResultResolvable<T, E, boolean>> | () => Awaitable<ResultResolvable<T, E, boolean>>

Returns

Promise<Result<T, E, boolean>>

Typeparam

T The result's type.

Typeparam

E The error's type.

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1090


is()

static is(instance: unknown): instance is Any

Parameters

ParameterTypeDescription
instanceunknownThe instance to check.

Returns

instance is Any

true if the instance is a Result or a Result-like object, false otherwise.

Deprecated

Use Result.isResult instead.

Checks if the instance object is an instance of Result, or if it is a Result-like object.

Example

import { Result } from '@sapphire/result';
const { ok } = require('@sapphire/result');

Result.isResult(ok(2)); // true

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1047


isResult()

static isResult(instance: unknown): instance is Any

Checks if the instance object is an instance of Result, or if it is a Result-like object.

Parameters

ParameterTypeDescription
instanceunknownThe instance to check.

Returns

instance is Any

true if the instance is a Result or a Result-like object, false otherwise.

Example

import { Result } from '@sapphire/result';
const { ok } = require('@sapphire/result');

Result.isResult(ok(2)); // true

Defined in

projects/utilities/packages/result/src/lib/Result.ts:1065


ok()

static ok<T, E>(this: void, value?: T): Ok<T, E>

Type Parameters

Type ParameterDefault type
Tundefined
Eany

Parameters

ParameterType
thisvoid
value?T

Returns

Ok<T, E>

Defined in

projects/utilities/packages/result/src/lib/Result.ts:998