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