1 var Individual = require('individual')
4 var ERROR_CACHE_KEY = '__RUST_RESULT_ERROR_UUID@' + VERSION_KEY
5 var OK_CACHE_KEY = '__RUST_RESULT_OK_UUID@' + VERSION_KEY
7 var ERROR_UUID = Individual(ERROR_CACHE_KEY, fakeUUID('Error'))
8 var OK_UUID = Individual(OK_CACHE_KEY, fakeUUID('Ok'))
19 this[ERROR_UUID] = true
22 function createOk(v) {
23 if (isObject(v) && OK_UUID in v) {
25 } else if (isObject(v) && ERROR_UUID in v) {
28 if (v === undefined) {
29 throw Error('rust-result: Cannot box `undefined` in Result.Ok')
36 function createErr(err) {
37 if (isObject(err) && ERROR_UUID in err) {
39 } else if (isObject(err) && OK_UUID in err) {
43 throw Error('rust-result: Cannot box a non-error in Result.Err')
51 return createOk(v) !== undefined
55 return createErr(err) !== undefined
65 function fakeUUID(word) {
66 return 'rust-result:' + word + ':' +
67 Math.random().toString(32).slice(2) + ':' +
68 Math.random().toString(32).slice(2) + ':' +
69 Math.random().toString(32).slice(2) + ':' +
70 Math.random().toString(32).slice(2) + ':'
73 function isObject(o) {
74 return typeof o === 'object' && o !== null
79 (Object.prototype.toString.call(e) === '[object Error]' ||
80 /* istanbul ignore next */ e instanceof Error)