Version 1
[yaffs-website] / node_modules / rust-result / README.md
diff --git a/node_modules/rust-result/README.md b/node_modules/rust-result/README.md
new file mode 100644 (file)
index 0000000..a2f03f5
--- /dev/null
@@ -0,0 +1,120 @@
+# rust-result.js
+
+Mimic Rust's [`std::result`][result].
+
+## Installation
+
+```sh
+npm install rust-result
+```
+
+## Usage
+
+```js
+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)
+}
+
+```
+
+## Documentation
+
+```jsig
+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.Ok`
+
+The `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.isOk`
+
+The `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.Err`
+
+The `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.isErr`
+
+The `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`
+
+## MIT Licenced.
+
+  [result]: http://doc.rust-lang.org/std/result/