Blame view

node_modules/rust-result/README.md 2.65 KB
2a09d1a4   liuqimichale   添加宜春 天水 宣化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
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/