|
|
2 years ago | |
|---|---|---|
| .. | ||
| .editorconfig | 2 years ago | |
| .jshintrc | 2 years ago | |
| .npmignore | 2 years ago | |
| LICENSE | 2 years ago | |
| README.md | 2 years ago | |
| example.js | 2 years ago | |
| index.js | 2 years ago | |
| package.json | 2 years ago | |
| test.js | 2 years ago | |
Mimic Rust's std::result.
npm install rust-result
var fs = require('fs');
var Result = require('./');
// If you want async just get a promise or something.
var readFile = function (path, encoding) {
try {
return Result.Ok(fs.readFileSync(path, encoding))
}
catch (ex) {
return Result.Err(ex)
}
}
var result = readFile(__filename);
var v, err;
if (Result.isOk(result)) {
v = Result.Ok(result);
console.log('got ' + v.length + ' bytes')
}
else if (Result.isErr(result)) {
err = Result.Err(result);
console.error('oops!', err.message)
}
result = readFile(__filename + 'I do not exist')
if (Result.isOk(result)) {
v = Result.Ok(result)
console.log('got ' + v.length + ' bytes')
}
else if (Result.isErr(result)) {
err = Result.Err(result)
console.error('oops!', err.message)
}
type OkResult<T> : {
v: T
}
type ErrResult<E <: Error> : {
err: E
}
rust-result : {
Ok: ((T) => OkResult<T>) |
((OkResult<T>) => T) |
((ErrResult<E>) => void),
isOk: ((OkResult<T>) => true) |
((ErrResult<E>) => false)
Err: ((E <: Error) => ErrResult<E>) |
((ErrResult<E>) => E) |
((OkResult<T>) => void),
isErr: ((ErrResult<E>) => true) |
((OkResult<T>) => false)
}
Result.OkThe Result.Ok function is overloaded to do one of two things.
It can create a new Ok instance or it can check whether
the argument is an instance of Ok
If you call Result.Ok with a plain value it will return an
instance of Ok that boxes your plain value.
If you call Result.Ok with either an Err or an Ok instance
then it will return undefined for the Err and return the
value boxed in the Ok
Result.isOkThe Result.isOk function just checks whether the argument
is an instance of Ok.
This predicate function returns true if you pass it an Ok and
returns false if you pass it an Err
Result.ErrThe Result.Err function is overloaded to do one of two things.
It can create a new Err instance or it can check whether
the argument is an instance of Err
If you call Result.Err with a plain error it will return an
instance of Err that boxes your plain error.
If you call Result.Err with either an Err or an Ok instance
then it will return undefined for the Ok and return the
value err in the Err
Result.isErrThe Result.isErr function just checks whether the argument
is an instance of Err.
This predicate function returns true if you pass it an Err and
returns false if you pass it an Ok