├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md ├── default.nix ├── example_projects ├── echotest │ ├── Cargo.lock │ ├── Cargo.toml │ ├── echoguiconfig.json │ ├── readme.txt │ ├── runit.sh │ └── src │ │ ├── main.rs │ │ ├── stringerror.rs │ │ └── tryopt.rs ├── genericconfig.json ├── guisend │ ├── Cargo.lock │ ├── Cargo.toml │ ├── readme.txt │ └── src │ │ ├── main.rs │ │ ├── stringerror.rs │ │ └── tryopt.rs ├── localconfig.json ├── sampleconfig.json └── samplegui.json ├── ns.sh ├── runit.sh ├── rustfmt.toml ├── shell.nix └── src ├── main.rs ├── stringerror.rs └── tryopt.rs /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | elm-stuff 3 | *.swp 4 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "actix" 5 | version = "0.7.9" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | dependencies = [ 8 | "actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 9 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 10 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 11 | "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 12 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 13 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 14 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 15 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 16 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 17 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 18 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 19 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 20 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 21 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 23 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 24 | "tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 25 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 26 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 27 | "trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 28 | "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", 29 | "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 30 | ] 31 | 32 | [[package]] 33 | name = "actix-net" 34 | version = "0.2.6" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | dependencies = [ 37 | "actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", 38 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 39 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 40 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 41 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 42 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 44 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 45 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 46 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 47 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 48 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 49 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 50 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 51 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 52 | "tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 53 | "trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", 54 | ] 55 | 56 | [[package]] 57 | name = "actix-web" 58 | version = "0.7.19" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | dependencies = [ 61 | "actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", 62 | "actix-net 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", 63 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 64 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 65 | "brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 66 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 67 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 68 | "cookie 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", 69 | "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 70 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 71 | "flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)", 72 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 73 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 74 | "h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)", 75 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 76 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 77 | "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 78 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 79 | "lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 80 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 81 | "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 84 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 85 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 86 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 87 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 88 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 89 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 90 | "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", 91 | "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 92 | "serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 93 | "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 94 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 96 | "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 97 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 98 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 99 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 100 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 101 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 102 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 103 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 104 | "v_htmlescape 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", 105 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 106 | ] 107 | 108 | [[package]] 109 | name = "actix_derive" 110 | version = "0.3.2" 111 | source = "registry+https://github.com/rust-lang/crates.io-index" 112 | dependencies = [ 113 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 114 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 115 | "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", 116 | ] 117 | 118 | [[package]] 119 | name = "adler32" 120 | version = "1.0.3" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | 123 | [[package]] 124 | name = "aho-corasick" 125 | version = "0.7.6" 126 | source = "registry+https://github.com/rust-lang/crates.io-index" 127 | dependencies = [ 128 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 129 | ] 130 | 131 | [[package]] 132 | name = "arc-swap" 133 | version = "0.4.2" 134 | source = "registry+https://github.com/rust-lang/crates.io-index" 135 | 136 | [[package]] 137 | name = "arrayvec" 138 | version = "0.4.11" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | dependencies = [ 141 | "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 142 | ] 143 | 144 | [[package]] 145 | name = "atty" 146 | version = "0.2.13" 147 | source = "registry+https://github.com/rust-lang/crates.io-index" 148 | dependencies = [ 149 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 150 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 151 | ] 152 | 153 | [[package]] 154 | name = "autocfg" 155 | version = "0.1.6" 156 | source = "registry+https://github.com/rust-lang/crates.io-index" 157 | 158 | [[package]] 159 | name = "backtrace" 160 | version = "0.3.5" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | dependencies = [ 163 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 164 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 165 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 166 | "rustc-demangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 167 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 168 | ] 169 | 170 | [[package]] 171 | name = "backtrace-sys" 172 | version = "0.1.16" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | dependencies = [ 175 | "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 176 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 177 | ] 178 | 179 | [[package]] 180 | name = "base64" 181 | version = "0.6.0" 182 | source = "registry+https://github.com/rust-lang/crates.io-index" 183 | dependencies = [ 184 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 185 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 186 | ] 187 | 188 | [[package]] 189 | name = "base64" 190 | version = "0.9.3" 191 | source = "registry+https://github.com/rust-lang/crates.io-index" 192 | dependencies = [ 193 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 194 | "safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 195 | ] 196 | 197 | [[package]] 198 | name = "base64" 199 | version = "0.10.1" 200 | source = "registry+https://github.com/rust-lang/crates.io-index" 201 | dependencies = [ 202 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 203 | ] 204 | 205 | [[package]] 206 | name = "bitflags" 207 | version = "1.1.0" 208 | source = "registry+https://github.com/rust-lang/crates.io-index" 209 | 210 | [[package]] 211 | name = "brotli-sys" 212 | version = "0.3.2" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | dependencies = [ 215 | "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 216 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 217 | ] 218 | 219 | [[package]] 220 | name = "brotli2" 221 | version = "0.3.2" 222 | source = "registry+https://github.com/rust-lang/crates.io-index" 223 | dependencies = [ 224 | "brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 225 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 226 | ] 227 | 228 | [[package]] 229 | name = "byteorder" 230 | version = "0.5.3" 231 | source = "registry+https://github.com/rust-lang/crates.io-index" 232 | 233 | [[package]] 234 | name = "byteorder" 235 | version = "1.3.2" 236 | source = "registry+https://github.com/rust-lang/crates.io-index" 237 | 238 | [[package]] 239 | name = "bytes" 240 | version = "0.4.12" 241 | source = "registry+https://github.com/rust-lang/crates.io-index" 242 | dependencies = [ 243 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 244 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 245 | ] 246 | 247 | [[package]] 248 | name = "c2-chacha" 249 | version = "0.2.2" 250 | source = "registry+https://github.com/rust-lang/crates.io-index" 251 | dependencies = [ 252 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 253 | "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 254 | ] 255 | 256 | [[package]] 257 | name = "cc" 258 | version = "1.0.45" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | 261 | [[package]] 262 | name = "cfg-if" 263 | version = "0.1.9" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | 266 | [[package]] 267 | name = "cloudabi" 268 | version = "0.0.3" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | dependencies = [ 271 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 272 | ] 273 | 274 | [[package]] 275 | name = "cookie" 276 | version = "0.11.1" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | dependencies = [ 279 | "base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", 280 | "ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)", 281 | "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 282 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 283 | ] 284 | 285 | [[package]] 286 | name = "core-foundation" 287 | version = "0.6.4" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | dependencies = [ 290 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 291 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 292 | ] 293 | 294 | [[package]] 295 | name = "core-foundation-sys" 296 | version = "0.6.2" 297 | source = "registry+https://github.com/rust-lang/crates.io-index" 298 | 299 | [[package]] 300 | name = "crc32fast" 301 | version = "1.2.0" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | dependencies = [ 304 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 305 | ] 306 | 307 | [[package]] 308 | name = "crossbeam-channel" 309 | version = "0.3.9" 310 | source = "registry+https://github.com/rust-lang/crates.io-index" 311 | dependencies = [ 312 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 313 | ] 314 | 315 | [[package]] 316 | name = "crossbeam-deque" 317 | version = "0.7.1" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | dependencies = [ 320 | "crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 321 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 322 | ] 323 | 324 | [[package]] 325 | name = "crossbeam-epoch" 326 | version = "0.7.2" 327 | source = "registry+https://github.com/rust-lang/crates.io-index" 328 | dependencies = [ 329 | "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 330 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 331 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 332 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 333 | "memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 334 | "scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 335 | ] 336 | 337 | [[package]] 338 | name = "crossbeam-queue" 339 | version = "0.1.2" 340 | source = "registry+https://github.com/rust-lang/crates.io-index" 341 | dependencies = [ 342 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 343 | ] 344 | 345 | [[package]] 346 | name = "crossbeam-utils" 347 | version = "0.6.6" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | dependencies = [ 350 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 351 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 352 | ] 353 | 354 | [[package]] 355 | name = "dtoa" 356 | version = "0.4.4" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | 359 | [[package]] 360 | name = "encoding" 361 | version = "0.2.33" 362 | source = "registry+https://github.com/rust-lang/crates.io-index" 363 | dependencies = [ 364 | "encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 365 | "encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 366 | "encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 367 | "encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 368 | "encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 369 | ] 370 | 371 | [[package]] 372 | name = "encoding-index-japanese" 373 | version = "1.20141219.5" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | dependencies = [ 376 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 377 | ] 378 | 379 | [[package]] 380 | name = "encoding-index-korean" 381 | version = "1.20141219.5" 382 | source = "registry+https://github.com/rust-lang/crates.io-index" 383 | dependencies = [ 384 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 385 | ] 386 | 387 | [[package]] 388 | name = "encoding-index-simpchinese" 389 | version = "1.20141219.5" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | dependencies = [ 392 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 393 | ] 394 | 395 | [[package]] 396 | name = "encoding-index-singlebyte" 397 | version = "1.20141219.5" 398 | source = "registry+https://github.com/rust-lang/crates.io-index" 399 | dependencies = [ 400 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 401 | ] 402 | 403 | [[package]] 404 | name = "encoding-index-tradchinese" 405 | version = "1.20141219.5" 406 | source = "registry+https://github.com/rust-lang/crates.io-index" 407 | dependencies = [ 408 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 409 | ] 410 | 411 | [[package]] 412 | name = "encoding_index_tests" 413 | version = "0.1.4" 414 | source = "registry+https://github.com/rust-lang/crates.io-index" 415 | 416 | [[package]] 417 | name = "env_logger" 418 | version = "0.5.13" 419 | source = "registry+https://github.com/rust-lang/crates.io-index" 420 | dependencies = [ 421 | "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 422 | "humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 423 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 424 | "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 425 | "termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 426 | ] 427 | 428 | [[package]] 429 | name = "error-chain" 430 | version = "0.8.1" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | dependencies = [ 433 | "backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 434 | ] 435 | 436 | [[package]] 437 | name = "failure" 438 | version = "0.1.5" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | dependencies = [ 441 | "backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 442 | "failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 443 | ] 444 | 445 | [[package]] 446 | name = "failure_derive" 447 | version = "0.1.5" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | dependencies = [ 450 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 451 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 452 | "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", 453 | "synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)", 454 | ] 455 | 456 | [[package]] 457 | name = "flate2" 458 | version = "1.0.11" 459 | source = "registry+https://github.com/rust-lang/crates.io-index" 460 | dependencies = [ 461 | "crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 462 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 463 | "miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 464 | "miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 465 | ] 466 | 467 | [[package]] 468 | name = "fnv" 469 | version = "1.0.6" 470 | source = "registry+https://github.com/rust-lang/crates.io-index" 471 | 472 | [[package]] 473 | name = "foreign-types" 474 | version = "0.3.2" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | dependencies = [ 477 | "foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 478 | ] 479 | 480 | [[package]] 481 | name = "foreign-types-shared" 482 | version = "0.1.1" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | 485 | [[package]] 486 | name = "fuchsia-cprng" 487 | version = "0.1.1" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | 490 | [[package]] 491 | name = "fuchsia-zircon" 492 | version = "0.3.3" 493 | source = "registry+https://github.com/rust-lang/crates.io-index" 494 | dependencies = [ 495 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 496 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 497 | ] 498 | 499 | [[package]] 500 | name = "fuchsia-zircon-sys" 501 | version = "0.3.3" 502 | source = "registry+https://github.com/rust-lang/crates.io-index" 503 | 504 | [[package]] 505 | name = "futures" 506 | version = "0.1.29" 507 | source = "registry+https://github.com/rust-lang/crates.io-index" 508 | 509 | [[package]] 510 | name = "futures-cpupool" 511 | version = "0.1.8" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | dependencies = [ 514 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 515 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 516 | ] 517 | 518 | [[package]] 519 | name = "getrandom" 520 | version = "0.1.12" 521 | source = "registry+https://github.com/rust-lang/crates.io-index" 522 | dependencies = [ 523 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 524 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 525 | "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 526 | ] 527 | 528 | [[package]] 529 | name = "h2" 530 | version = "0.1.26" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | dependencies = [ 533 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 534 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 535 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 536 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 537 | "http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", 538 | "indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 539 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 540 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 541 | "string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 542 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 543 | ] 544 | 545 | [[package]] 546 | name = "hostname" 547 | version = "0.1.5" 548 | source = "registry+https://github.com/rust-lang/crates.io-index" 549 | dependencies = [ 550 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 551 | "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 552 | ] 553 | 554 | [[package]] 555 | name = "http" 556 | version = "0.1.18" 557 | source = "registry+https://github.com/rust-lang/crates.io-index" 558 | dependencies = [ 559 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 560 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 561 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 562 | ] 563 | 564 | [[package]] 565 | name = "httparse" 566 | version = "1.3.4" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | 569 | [[package]] 570 | name = "humantime" 571 | version = "1.3.0" 572 | source = "registry+https://github.com/rust-lang/crates.io-index" 573 | dependencies = [ 574 | "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 575 | ] 576 | 577 | [[package]] 578 | name = "hyper" 579 | version = "0.10.13" 580 | source = "registry+https://github.com/rust-lang/crates.io-index" 581 | dependencies = [ 582 | "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 583 | "httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 584 | "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 585 | "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 586 | "mime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 587 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 588 | "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 589 | "traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 590 | "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 591 | "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 592 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 593 | ] 594 | 595 | [[package]] 596 | name = "idna" 597 | version = "0.1.5" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | dependencies = [ 600 | "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 602 | "unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 603 | ] 604 | 605 | [[package]] 606 | name = "indexmap" 607 | version = "1.2.0" 608 | source = "registry+https://github.com/rust-lang/crates.io-index" 609 | 610 | [[package]] 611 | name = "iovec" 612 | version = "0.1.2" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | dependencies = [ 615 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 616 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 617 | ] 618 | 619 | [[package]] 620 | name = "ipconfig" 621 | version = "0.1.9" 622 | source = "registry+https://github.com/rust-lang/crates.io-index" 623 | dependencies = [ 624 | "error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 625 | "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", 626 | "widestring 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 627 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 628 | "winreg 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 629 | ] 630 | 631 | [[package]] 632 | name = "itoa" 633 | version = "0.1.1" 634 | source = "registry+https://github.com/rust-lang/crates.io-index" 635 | 636 | [[package]] 637 | name = "itoa" 638 | version = "0.4.4" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | 641 | [[package]] 642 | name = "kernel32-sys" 643 | version = "0.2.2" 644 | source = "registry+https://github.com/rust-lang/crates.io-index" 645 | dependencies = [ 646 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 647 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 648 | ] 649 | 650 | [[package]] 651 | name = "language-tags" 652 | version = "0.2.2" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | 655 | [[package]] 656 | name = "lazy_static" 657 | version = "1.4.0" 658 | source = "registry+https://github.com/rust-lang/crates.io-index" 659 | 660 | [[package]] 661 | name = "lazycell" 662 | version = "1.2.1" 663 | source = "registry+https://github.com/rust-lang/crates.io-index" 664 | 665 | [[package]] 666 | name = "libc" 667 | version = "0.2.62" 668 | source = "registry+https://github.com/rust-lang/crates.io-index" 669 | 670 | [[package]] 671 | name = "linked-hash-map" 672 | version = "0.5.2" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | 675 | [[package]] 676 | name = "lock_api" 677 | version = "0.1.5" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | dependencies = [ 680 | "owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 681 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 682 | ] 683 | 684 | [[package]] 685 | name = "log" 686 | version = "0.3.6" 687 | source = "registry+https://github.com/rust-lang/crates.io-index" 688 | 689 | [[package]] 690 | name = "log" 691 | version = "0.4.8" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | dependencies = [ 694 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 695 | ] 696 | 697 | [[package]] 698 | name = "lru-cache" 699 | version = "0.1.2" 700 | source = "registry+https://github.com/rust-lang/crates.io-index" 701 | dependencies = [ 702 | "linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 703 | ] 704 | 705 | [[package]] 706 | name = "matches" 707 | version = "0.1.4" 708 | source = "registry+https://github.com/rust-lang/crates.io-index" 709 | 710 | [[package]] 711 | name = "memchr" 712 | version = "2.2.1" 713 | source = "registry+https://github.com/rust-lang/crates.io-index" 714 | 715 | [[package]] 716 | name = "memoffset" 717 | version = "0.5.1" 718 | source = "registry+https://github.com/rust-lang/crates.io-index" 719 | dependencies = [ 720 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 721 | ] 722 | 723 | [[package]] 724 | name = "mime" 725 | version = "0.2.2" 726 | source = "registry+https://github.com/rust-lang/crates.io-index" 727 | dependencies = [ 728 | "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 729 | ] 730 | 731 | [[package]] 732 | name = "mime" 733 | version = "0.3.14" 734 | source = "registry+https://github.com/rust-lang/crates.io-index" 735 | 736 | [[package]] 737 | name = "mime_guess" 738 | version = "2.0.1" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | dependencies = [ 741 | "mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)", 742 | "unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 743 | ] 744 | 745 | [[package]] 746 | name = "miniz-sys" 747 | version = "0.1.12" 748 | source = "registry+https://github.com/rust-lang/crates.io-index" 749 | dependencies = [ 750 | "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 751 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 752 | ] 753 | 754 | [[package]] 755 | name = "miniz_oxide" 756 | version = "0.3.2" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | dependencies = [ 759 | "adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 760 | ] 761 | 762 | [[package]] 763 | name = "mio" 764 | version = "0.6.19" 765 | source = "registry+https://github.com/rust-lang/crates.io-index" 766 | dependencies = [ 767 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 768 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 769 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 770 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 771 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 772 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 774 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 775 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 776 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 777 | ] 778 | 779 | [[package]] 780 | name = "mio-uds" 781 | version = "0.6.7" 782 | source = "registry+https://github.com/rust-lang/crates.io-index" 783 | dependencies = [ 784 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 785 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 786 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 787 | ] 788 | 789 | [[package]] 790 | name = "miow" 791 | version = "0.2.1" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | dependencies = [ 794 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 795 | "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 796 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 797 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 798 | ] 799 | 800 | [[package]] 801 | name = "native-tls" 802 | version = "0.2.3" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | dependencies = [ 805 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 806 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 807 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 808 | "openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)", 809 | "openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 810 | "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)", 811 | "schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 812 | "security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 813 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 814 | "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 815 | ] 816 | 817 | [[package]] 818 | name = "net2" 819 | version = "0.2.33" 820 | source = "registry+https://github.com/rust-lang/crates.io-index" 821 | dependencies = [ 822 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 823 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 824 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 825 | ] 826 | 827 | [[package]] 828 | name = "nodrop" 829 | version = "0.1.13" 830 | source = "registry+https://github.com/rust-lang/crates.io-index" 831 | 832 | [[package]] 833 | name = "nom" 834 | version = "4.2.3" 835 | source = "registry+https://github.com/rust-lang/crates.io-index" 836 | dependencies = [ 837 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 838 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 839 | ] 840 | 841 | [[package]] 842 | name = "num" 843 | version = "0.1.36" 844 | source = "registry+https://github.com/rust-lang/crates.io-index" 845 | dependencies = [ 846 | "num-bigint 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 847 | "num-complex 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 848 | "num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 849 | "num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 850 | "num-rational 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 851 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 852 | ] 853 | 854 | [[package]] 855 | name = "num-bigint" 856 | version = "0.1.35" 857 | source = "registry+https://github.com/rust-lang/crates.io-index" 858 | dependencies = [ 859 | "num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 860 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 861 | "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 862 | "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 863 | ] 864 | 865 | [[package]] 866 | name = "num-complex" 867 | version = "0.1.35" 868 | source = "registry+https://github.com/rust-lang/crates.io-index" 869 | dependencies = [ 870 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 872 | ] 873 | 874 | [[package]] 875 | name = "num-integer" 876 | version = "0.1.32" 877 | source = "registry+https://github.com/rust-lang/crates.io-index" 878 | dependencies = [ 879 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 880 | ] 881 | 882 | [[package]] 883 | name = "num-iter" 884 | version = "0.1.32" 885 | source = "registry+https://github.com/rust-lang/crates.io-index" 886 | dependencies = [ 887 | "num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 888 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 889 | ] 890 | 891 | [[package]] 892 | name = "num-rational" 893 | version = "0.1.35" 894 | source = "registry+https://github.com/rust-lang/crates.io-index" 895 | dependencies = [ 896 | "num-bigint 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", 897 | "num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)", 898 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 899 | "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 900 | ] 901 | 902 | [[package]] 903 | name = "num-traits" 904 | version = "0.1.36" 905 | source = "registry+https://github.com/rust-lang/crates.io-index" 906 | 907 | [[package]] 908 | name = "num_cpus" 909 | version = "1.10.1" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | dependencies = [ 912 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 913 | ] 914 | 915 | [[package]] 916 | name = "openssl" 917 | version = "0.10.24" 918 | source = "registry+https://github.com/rust-lang/crates.io-index" 919 | dependencies = [ 920 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 921 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 922 | "foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 923 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 924 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 925 | "openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)", 926 | ] 927 | 928 | [[package]] 929 | name = "openssl-probe" 930 | version = "0.1.2" 931 | source = "registry+https://github.com/rust-lang/crates.io-index" 932 | 933 | [[package]] 934 | name = "openssl-sys" 935 | version = "0.9.49" 936 | source = "registry+https://github.com/rust-lang/crates.io-index" 937 | dependencies = [ 938 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 939 | "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 940 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 941 | "pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", 942 | "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 943 | ] 944 | 945 | [[package]] 946 | name = "oscpad" 947 | version = "0.2.3" 948 | dependencies = [ 949 | "serde 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 950 | "serde_json 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 951 | "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 952 | "tinyosc 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 953 | "touchpage 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 954 | ] 955 | 956 | [[package]] 957 | name = "owning_ref" 958 | version = "0.4.0" 959 | source = "registry+https://github.com/rust-lang/crates.io-index" 960 | dependencies = [ 961 | "stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 962 | ] 963 | 964 | [[package]] 965 | name = "parking_lot" 966 | version = "0.7.1" 967 | source = "registry+https://github.com/rust-lang/crates.io-index" 968 | dependencies = [ 969 | "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 970 | "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 971 | ] 972 | 973 | [[package]] 974 | name = "parking_lot_core" 975 | version = "0.4.0" 976 | source = "registry+https://github.com/rust-lang/crates.io-index" 977 | dependencies = [ 978 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 979 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 980 | "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 981 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 982 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 983 | ] 984 | 985 | [[package]] 986 | name = "percent-encoding" 987 | version = "1.0.1" 988 | source = "registry+https://github.com/rust-lang/crates.io-index" 989 | 990 | [[package]] 991 | name = "pkg-config" 992 | version = "0.3.16" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | 995 | [[package]] 996 | name = "ppv-lite86" 997 | version = "0.2.5" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | 1000 | [[package]] 1001 | name = "proc-macro2" 1002 | version = "0.4.30" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | dependencies = [ 1005 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1006 | ] 1007 | 1008 | [[package]] 1009 | name = "quick-error" 1010 | version = "1.2.2" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | 1013 | [[package]] 1014 | name = "quote" 1015 | version = "0.6.13" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | dependencies = [ 1018 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1019 | ] 1020 | 1021 | [[package]] 1022 | name = "rand" 1023 | version = "0.3.15" 1024 | source = "registry+https://github.com/rust-lang/crates.io-index" 1025 | dependencies = [ 1026 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1027 | ] 1028 | 1029 | [[package]] 1030 | name = "rand" 1031 | version = "0.5.6" 1032 | source = "registry+https://github.com/rust-lang/crates.io-index" 1033 | dependencies = [ 1034 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1035 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1036 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1037 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1038 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1039 | ] 1040 | 1041 | [[package]] 1042 | name = "rand" 1043 | version = "0.6.5" 1044 | source = "registry+https://github.com/rust-lang/crates.io-index" 1045 | dependencies = [ 1046 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1047 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1048 | "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1049 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1050 | "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1051 | "rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1052 | "rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1053 | "rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1054 | "rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1055 | "rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1056 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1057 | ] 1058 | 1059 | [[package]] 1060 | name = "rand" 1061 | version = "0.7.0" 1062 | source = "registry+https://github.com/rust-lang/crates.io-index" 1063 | dependencies = [ 1064 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1065 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1066 | "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1067 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1068 | "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1069 | ] 1070 | 1071 | [[package]] 1072 | name = "rand_chacha" 1073 | version = "0.1.1" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | dependencies = [ 1076 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1077 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1078 | ] 1079 | 1080 | [[package]] 1081 | name = "rand_chacha" 1082 | version = "0.2.1" 1083 | source = "registry+https://github.com/rust-lang/crates.io-index" 1084 | dependencies = [ 1085 | "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1086 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1087 | ] 1088 | 1089 | [[package]] 1090 | name = "rand_core" 1091 | version = "0.3.1" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | dependencies = [ 1094 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1095 | ] 1096 | 1097 | [[package]] 1098 | name = "rand_core" 1099 | version = "0.4.2" 1100 | source = "registry+https://github.com/rust-lang/crates.io-index" 1101 | 1102 | [[package]] 1103 | name = "rand_core" 1104 | version = "0.5.1" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | dependencies = [ 1107 | "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1108 | ] 1109 | 1110 | [[package]] 1111 | name = "rand_hc" 1112 | version = "0.1.0" 1113 | source = "registry+https://github.com/rust-lang/crates.io-index" 1114 | dependencies = [ 1115 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1116 | ] 1117 | 1118 | [[package]] 1119 | name = "rand_hc" 1120 | version = "0.2.0" 1121 | source = "registry+https://github.com/rust-lang/crates.io-index" 1122 | dependencies = [ 1123 | "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1124 | ] 1125 | 1126 | [[package]] 1127 | name = "rand_isaac" 1128 | version = "0.1.1" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | dependencies = [ 1131 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1132 | ] 1133 | 1134 | [[package]] 1135 | name = "rand_jitter" 1136 | version = "0.1.4" 1137 | source = "registry+https://github.com/rust-lang/crates.io-index" 1138 | dependencies = [ 1139 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1140 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1141 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1142 | ] 1143 | 1144 | [[package]] 1145 | name = "rand_os" 1146 | version = "0.1.3" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | dependencies = [ 1149 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1150 | "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1151 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1152 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1153 | "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1154 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "rand_pcg" 1159 | version = "0.1.2" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | dependencies = [ 1162 | "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1163 | "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1164 | ] 1165 | 1166 | [[package]] 1167 | name = "rand_xorshift" 1168 | version = "0.1.1" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | dependencies = [ 1171 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1172 | ] 1173 | 1174 | [[package]] 1175 | name = "rdrand" 1176 | version = "0.4.0" 1177 | source = "registry+https://github.com/rust-lang/crates.io-index" 1178 | dependencies = [ 1179 | "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1180 | ] 1181 | 1182 | [[package]] 1183 | name = "redox_syscall" 1184 | version = "0.1.56" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | 1187 | [[package]] 1188 | name = "regex" 1189 | version = "1.3.1" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | dependencies = [ 1192 | "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", 1193 | "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1194 | "regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", 1195 | "thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 1196 | ] 1197 | 1198 | [[package]] 1199 | name = "regex-syntax" 1200 | version = "0.6.12" 1201 | source = "registry+https://github.com/rust-lang/crates.io-index" 1202 | 1203 | [[package]] 1204 | name = "remove_dir_all" 1205 | version = "0.5.2" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | dependencies = [ 1208 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1209 | ] 1210 | 1211 | [[package]] 1212 | name = "resolv-conf" 1213 | version = "0.6.2" 1214 | source = "registry+https://github.com/rust-lang/crates.io-index" 1215 | dependencies = [ 1216 | "hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1217 | "quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1218 | ] 1219 | 1220 | [[package]] 1221 | name = "ring" 1222 | version = "0.13.5" 1223 | source = "registry+https://github.com/rust-lang/crates.io-index" 1224 | dependencies = [ 1225 | "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 1226 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1227 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1228 | "untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1229 | ] 1230 | 1231 | [[package]] 1232 | name = "rustc-demangle" 1233 | version = "0.1.6" 1234 | source = "registry+https://github.com/rust-lang/crates.io-index" 1235 | 1236 | [[package]] 1237 | name = "rustc-serialize" 1238 | version = "0.3.22" 1239 | source = "registry+https://github.com/rust-lang/crates.io-index" 1240 | 1241 | [[package]] 1242 | name = "rustc_version" 1243 | version = "0.1.7" 1244 | source = "registry+https://github.com/rust-lang/crates.io-index" 1245 | dependencies = [ 1246 | "semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)", 1247 | ] 1248 | 1249 | [[package]] 1250 | name = "rustc_version" 1251 | version = "0.2.3" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | dependencies = [ 1254 | "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1255 | ] 1256 | 1257 | [[package]] 1258 | name = "ryu" 1259 | version = "1.0.0" 1260 | source = "registry+https://github.com/rust-lang/crates.io-index" 1261 | 1262 | [[package]] 1263 | name = "safemem" 1264 | version = "0.2.0" 1265 | source = "registry+https://github.com/rust-lang/crates.io-index" 1266 | 1267 | [[package]] 1268 | name = "safemem" 1269 | version = "0.3.2" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | 1272 | [[package]] 1273 | name = "schannel" 1274 | version = "0.1.15" 1275 | source = "registry+https://github.com/rust-lang/crates.io-index" 1276 | dependencies = [ 1277 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1278 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1279 | ] 1280 | 1281 | [[package]] 1282 | name = "scopeguard" 1283 | version = "0.3.3" 1284 | source = "registry+https://github.com/rust-lang/crates.io-index" 1285 | 1286 | [[package]] 1287 | name = "scopeguard" 1288 | version = "1.0.0" 1289 | source = "registry+https://github.com/rust-lang/crates.io-index" 1290 | 1291 | [[package]] 1292 | name = "security-framework" 1293 | version = "0.3.1" 1294 | source = "registry+https://github.com/rust-lang/crates.io-index" 1295 | dependencies = [ 1296 | "core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1297 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1298 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1299 | "security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1300 | ] 1301 | 1302 | [[package]] 1303 | name = "security-framework-sys" 1304 | version = "0.3.1" 1305 | source = "registry+https://github.com/rust-lang/crates.io-index" 1306 | dependencies = [ 1307 | "core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1308 | ] 1309 | 1310 | [[package]] 1311 | name = "semver" 1312 | version = "0.1.20" 1313 | source = "registry+https://github.com/rust-lang/crates.io-index" 1314 | 1315 | [[package]] 1316 | name = "semver" 1317 | version = "0.9.0" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | dependencies = [ 1320 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1321 | ] 1322 | 1323 | [[package]] 1324 | name = "semver-parser" 1325 | version = "0.7.0" 1326 | source = "registry+https://github.com/rust-lang/crates.io-index" 1327 | 1328 | [[package]] 1329 | name = "serde" 1330 | version = "0.5.3" 1331 | source = "registry+https://github.com/rust-lang/crates.io-index" 1332 | dependencies = [ 1333 | "num 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 1334 | ] 1335 | 1336 | [[package]] 1337 | name = "serde" 1338 | version = "0.7.15" 1339 | source = "registry+https://github.com/rust-lang/crates.io-index" 1340 | 1341 | [[package]] 1342 | name = "serde" 1343 | version = "1.0.100" 1344 | source = "registry+https://github.com/rust-lang/crates.io-index" 1345 | 1346 | [[package]] 1347 | name = "serde_json" 1348 | version = "0.7.4" 1349 | source = "registry+https://github.com/rust-lang/crates.io-index" 1350 | dependencies = [ 1351 | "itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1352 | "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 1353 | "serde 0.7.15 (registry+https://github.com/rust-lang/crates.io-index)", 1354 | ] 1355 | 1356 | [[package]] 1357 | name = "serde_json" 1358 | version = "1.0.40" 1359 | source = "registry+https://github.com/rust-lang/crates.io-index" 1360 | dependencies = [ 1361 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1362 | "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1363 | "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", 1364 | ] 1365 | 1366 | [[package]] 1367 | name = "serde_urlencoded" 1368 | version = "0.5.5" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | dependencies = [ 1371 | "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1372 | "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1373 | "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", 1374 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1375 | ] 1376 | 1377 | [[package]] 1378 | name = "sha1" 1379 | version = "0.6.0" 1380 | source = "registry+https://github.com/rust-lang/crates.io-index" 1381 | 1382 | [[package]] 1383 | name = "signal-hook" 1384 | version = "0.1.10" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | dependencies = [ 1387 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1388 | "signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1389 | ] 1390 | 1391 | [[package]] 1392 | name = "signal-hook-registry" 1393 | version = "1.1.1" 1394 | source = "registry+https://github.com/rust-lang/crates.io-index" 1395 | dependencies = [ 1396 | "arc-swap 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1397 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1398 | ] 1399 | 1400 | [[package]] 1401 | name = "slab" 1402 | version = "0.4.2" 1403 | source = "registry+https://github.com/rust-lang/crates.io-index" 1404 | 1405 | [[package]] 1406 | name = "smallvec" 1407 | version = "0.6.10" 1408 | source = "registry+https://github.com/rust-lang/crates.io-index" 1409 | 1410 | [[package]] 1411 | name = "socket2" 1412 | version = "0.3.11" 1413 | source = "registry+https://github.com/rust-lang/crates.io-index" 1414 | dependencies = [ 1415 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1416 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1417 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1418 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1419 | ] 1420 | 1421 | [[package]] 1422 | name = "stable_deref_trait" 1423 | version = "1.1.1" 1424 | source = "registry+https://github.com/rust-lang/crates.io-index" 1425 | 1426 | [[package]] 1427 | name = "string" 1428 | version = "0.2.1" 1429 | source = "registry+https://github.com/rust-lang/crates.io-index" 1430 | dependencies = [ 1431 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1432 | ] 1433 | 1434 | [[package]] 1435 | name = "syn" 1436 | version = "0.15.44" 1437 | source = "registry+https://github.com/rust-lang/crates.io-index" 1438 | dependencies = [ 1439 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1440 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1441 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1442 | ] 1443 | 1444 | [[package]] 1445 | name = "synstructure" 1446 | version = "0.10.2" 1447 | source = "registry+https://github.com/rust-lang/crates.io-index" 1448 | dependencies = [ 1449 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1450 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1451 | "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", 1452 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1453 | ] 1454 | 1455 | [[package]] 1456 | name = "tempfile" 1457 | version = "3.1.0" 1458 | source = "registry+https://github.com/rust-lang/crates.io-index" 1459 | dependencies = [ 1460 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1461 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1462 | "rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1463 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1464 | "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1465 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1466 | ] 1467 | 1468 | [[package]] 1469 | name = "termcolor" 1470 | version = "1.0.5" 1471 | source = "registry+https://github.com/rust-lang/crates.io-index" 1472 | dependencies = [ 1473 | "wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1474 | ] 1475 | 1476 | [[package]] 1477 | name = "thread_local" 1478 | version = "0.3.6" 1479 | source = "registry+https://github.com/rust-lang/crates.io-index" 1480 | dependencies = [ 1481 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1482 | ] 1483 | 1484 | [[package]] 1485 | name = "time" 1486 | version = "0.1.36" 1487 | source = "registry+https://github.com/rust-lang/crates.io-index" 1488 | dependencies = [ 1489 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1490 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1491 | "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1492 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1493 | ] 1494 | 1495 | [[package]] 1496 | name = "tinyosc" 1497 | version = "0.0.3" 1498 | source = "registry+https://github.com/rust-lang/crates.io-index" 1499 | dependencies = [ 1500 | "byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1501 | ] 1502 | 1503 | [[package]] 1504 | name = "tokio" 1505 | version = "0.1.22" 1506 | source = "registry+https://github.com/rust-lang/crates.io-index" 1507 | dependencies = [ 1508 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1509 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1510 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1511 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1512 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1513 | "tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1514 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1515 | "tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1516 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1517 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1518 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1519 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1520 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 1521 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1522 | "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1523 | "tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", 1524 | ] 1525 | 1526 | [[package]] 1527 | name = "tokio-codec" 1528 | version = "0.1.1" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | dependencies = [ 1531 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1532 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1533 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1534 | ] 1535 | 1536 | [[package]] 1537 | name = "tokio-current-thread" 1538 | version = "0.1.6" 1539 | source = "registry+https://github.com/rust-lang/crates.io-index" 1540 | dependencies = [ 1541 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1542 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1543 | ] 1544 | 1545 | [[package]] 1546 | name = "tokio-executor" 1547 | version = "0.1.8" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | dependencies = [ 1550 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1551 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "tokio-fs" 1556 | version = "0.1.6" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | dependencies = [ 1559 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1560 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1561 | "tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", 1562 | ] 1563 | 1564 | [[package]] 1565 | name = "tokio-io" 1566 | version = "0.1.12" 1567 | source = "registry+https://github.com/rust-lang/crates.io-index" 1568 | dependencies = [ 1569 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1570 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1571 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1572 | ] 1573 | 1574 | [[package]] 1575 | name = "tokio-reactor" 1576 | version = "0.1.9" 1577 | source = "registry+https://github.com/rust-lang/crates.io-index" 1578 | dependencies = [ 1579 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1580 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1581 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1582 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1583 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1584 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1585 | "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1586 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1587 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1588 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1589 | "tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1590 | ] 1591 | 1592 | [[package]] 1593 | name = "tokio-signal" 1594 | version = "0.2.7" 1595 | source = "registry+https://github.com/rust-lang/crates.io-index" 1596 | dependencies = [ 1597 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1598 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1599 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1600 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1601 | "signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1602 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1603 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1604 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1605 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1606 | ] 1607 | 1608 | [[package]] 1609 | name = "tokio-sync" 1610 | version = "0.1.6" 1611 | source = "registry+https://github.com/rust-lang/crates.io-index" 1612 | dependencies = [ 1613 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 1614 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1615 | ] 1616 | 1617 | [[package]] 1618 | name = "tokio-tcp" 1619 | version = "0.1.3" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | dependencies = [ 1622 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1623 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1624 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1625 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1626 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1627 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1628 | ] 1629 | 1630 | [[package]] 1631 | name = "tokio-threadpool" 1632 | version = "0.1.15" 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" 1634 | dependencies = [ 1635 | "crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1636 | "crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1637 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1638 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1639 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1640 | "num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1641 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1642 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1643 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1644 | ] 1645 | 1646 | [[package]] 1647 | name = "tokio-timer" 1648 | version = "0.2.11" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | dependencies = [ 1651 | "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 1652 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1653 | "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1654 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1655 | ] 1656 | 1657 | [[package]] 1658 | name = "tokio-tls" 1659 | version = "0.2.1" 1660 | source = "registry+https://github.com/rust-lang/crates.io-index" 1661 | dependencies = [ 1662 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1663 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1664 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1665 | ] 1666 | 1667 | [[package]] 1668 | name = "tokio-udp" 1669 | version = "0.1.5" 1670 | source = "registry+https://github.com/rust-lang/crates.io-index" 1671 | dependencies = [ 1672 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1673 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1674 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1675 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1676 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1677 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1678 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1679 | ] 1680 | 1681 | [[package]] 1682 | name = "tokio-uds" 1683 | version = "0.2.5" 1684 | source = "registry+https://github.com/rust-lang/crates.io-index" 1685 | dependencies = [ 1686 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1687 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1688 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1689 | "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1690 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1691 | "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 1692 | "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", 1693 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1694 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1695 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1696 | ] 1697 | 1698 | [[package]] 1699 | name = "toml" 1700 | version = "0.4.10" 1701 | source = "registry+https://github.com/rust-lang/crates.io-index" 1702 | dependencies = [ 1703 | "serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "touchpage" 1708 | version = "0.2.0" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | dependencies = [ 1711 | "actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)", 1712 | "actix-web 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)", 1713 | "env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)", 1714 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1715 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1716 | "serde 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", 1717 | "serde_json 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1718 | "time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", 1719 | "tinyosc 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1720 | "toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)", 1721 | "websocket 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)", 1722 | ] 1723 | 1724 | [[package]] 1725 | name = "tower-service" 1726 | version = "0.1.0" 1727 | source = "registry+https://github.com/rust-lang/crates.io-index" 1728 | dependencies = [ 1729 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1730 | ] 1731 | 1732 | [[package]] 1733 | name = "traitobject" 1734 | version = "0.1.0" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | 1737 | [[package]] 1738 | name = "trust-dns-proto" 1739 | version = "0.5.0" 1740 | source = "registry+https://github.com/rust-lang/crates.io-index" 1741 | dependencies = [ 1742 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1743 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1744 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1745 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1746 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1747 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1748 | "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 1749 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1750 | "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", 1751 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1752 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1753 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1754 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1755 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1756 | "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1757 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1758 | ] 1759 | 1760 | [[package]] 1761 | name = "trust-dns-proto" 1762 | version = "0.6.3" 1763 | source = "registry+https://github.com/rust-lang/crates.io-index" 1764 | dependencies = [ 1765 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1766 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1767 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1768 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1769 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1770 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1771 | "rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 1772 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1773 | "socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)", 1774 | "tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 1775 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1776 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1777 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1778 | "tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1779 | "tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1780 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1781 | ] 1782 | 1783 | [[package]] 1784 | name = "trust-dns-resolver" 1785 | version = "0.10.3" 1786 | source = "registry+https://github.com/rust-lang/crates.io-index" 1787 | dependencies = [ 1788 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1789 | "failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1790 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1791 | "ipconfig 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1792 | "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1793 | "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1794 | "lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1795 | "resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1796 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1797 | "tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", 1798 | "trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 1799 | ] 1800 | 1801 | [[package]] 1802 | name = "typeable" 1803 | version = "0.1.2" 1804 | source = "registry+https://github.com/rust-lang/crates.io-index" 1805 | 1806 | [[package]] 1807 | name = "unicase" 1808 | version = "1.4.0" 1809 | source = "registry+https://github.com/rust-lang/crates.io-index" 1810 | dependencies = [ 1811 | "rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", 1812 | ] 1813 | 1814 | [[package]] 1815 | name = "unicase" 1816 | version = "2.5.1" 1817 | source = "registry+https://github.com/rust-lang/crates.io-index" 1818 | dependencies = [ 1819 | "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1820 | ] 1821 | 1822 | [[package]] 1823 | name = "unicode-bidi" 1824 | version = "0.3.4" 1825 | source = "registry+https://github.com/rust-lang/crates.io-index" 1826 | dependencies = [ 1827 | "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1828 | ] 1829 | 1830 | [[package]] 1831 | name = "unicode-normalization" 1832 | version = "0.1.8" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | dependencies = [ 1835 | "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1836 | ] 1837 | 1838 | [[package]] 1839 | name = "unicode-xid" 1840 | version = "0.1.0" 1841 | source = "registry+https://github.com/rust-lang/crates.io-index" 1842 | 1843 | [[package]] 1844 | name = "untrusted" 1845 | version = "0.6.2" 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" 1847 | 1848 | [[package]] 1849 | name = "url" 1850 | version = "1.7.2" 1851 | source = "registry+https://github.com/rust-lang/crates.io-index" 1852 | dependencies = [ 1853 | "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 1854 | "idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 1855 | "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1856 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1857 | ] 1858 | 1859 | [[package]] 1860 | name = "uuid" 1861 | version = "0.7.4" 1862 | source = "registry+https://github.com/rust-lang/crates.io-index" 1863 | dependencies = [ 1864 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1865 | ] 1866 | 1867 | [[package]] 1868 | name = "v_escape" 1869 | version = "0.7.4" 1870 | source = "registry+https://github.com/rust-lang/crates.io-index" 1871 | dependencies = [ 1872 | "v_escape_derive 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", 1873 | ] 1874 | 1875 | [[package]] 1876 | name = "v_escape_derive" 1877 | version = "0.5.5" 1878 | source = "registry+https://github.com/rust-lang/crates.io-index" 1879 | dependencies = [ 1880 | "nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1881 | "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", 1882 | "quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", 1883 | "syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)", 1884 | ] 1885 | 1886 | [[package]] 1887 | name = "v_htmlescape" 1888 | version = "0.4.5" 1889 | source = "registry+https://github.com/rust-lang/crates.io-index" 1890 | dependencies = [ 1891 | "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1892 | "v_escape 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 1893 | ] 1894 | 1895 | [[package]] 1896 | name = "vcpkg" 1897 | version = "0.2.7" 1898 | source = "registry+https://github.com/rust-lang/crates.io-index" 1899 | 1900 | [[package]] 1901 | name = "version_check" 1902 | version = "0.1.5" 1903 | source = "registry+https://github.com/rust-lang/crates.io-index" 1904 | 1905 | [[package]] 1906 | name = "wasi" 1907 | version = "0.7.0" 1908 | source = "registry+https://github.com/rust-lang/crates.io-index" 1909 | 1910 | [[package]] 1911 | name = "websocket" 1912 | version = "0.23.0" 1913 | source = "registry+https://github.com/rust-lang/crates.io-index" 1914 | dependencies = [ 1915 | "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1916 | "bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1917 | "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1918 | "bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)", 1919 | "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", 1920 | "hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)", 1921 | "native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1922 | "rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1923 | "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 1924 | "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1925 | "tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1926 | "tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1927 | "tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1928 | "tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1929 | "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1930 | "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1931 | ] 1932 | 1933 | [[package]] 1934 | name = "widestring" 1935 | version = "0.2.2" 1936 | source = "registry+https://github.com/rust-lang/crates.io-index" 1937 | 1938 | [[package]] 1939 | name = "winapi" 1940 | version = "0.2.8" 1941 | source = "registry+https://github.com/rust-lang/crates.io-index" 1942 | 1943 | [[package]] 1944 | name = "winapi" 1945 | version = "0.3.4" 1946 | source = "registry+https://github.com/rust-lang/crates.io-index" 1947 | dependencies = [ 1948 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1949 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1950 | ] 1951 | 1952 | [[package]] 1953 | name = "winapi-build" 1954 | version = "0.1.1" 1955 | source = "registry+https://github.com/rust-lang/crates.io-index" 1956 | 1957 | [[package]] 1958 | name = "winapi-i686-pc-windows-gnu" 1959 | version = "0.4.0" 1960 | source = "registry+https://github.com/rust-lang/crates.io-index" 1961 | 1962 | [[package]] 1963 | name = "winapi-util" 1964 | version = "0.1.2" 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" 1966 | dependencies = [ 1967 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1968 | ] 1969 | 1970 | [[package]] 1971 | name = "winapi-x86_64-pc-windows-gnu" 1972 | version = "0.4.0" 1973 | source = "registry+https://github.com/rust-lang/crates.io-index" 1974 | 1975 | [[package]] 1976 | name = "wincolor" 1977 | version = "1.0.2" 1978 | source = "registry+https://github.com/rust-lang/crates.io-index" 1979 | dependencies = [ 1980 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1981 | "winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1982 | ] 1983 | 1984 | [[package]] 1985 | name = "winreg" 1986 | version = "0.5.1" 1987 | source = "registry+https://github.com/rust-lang/crates.io-index" 1988 | dependencies = [ 1989 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1990 | ] 1991 | 1992 | [[package]] 1993 | name = "winutil" 1994 | version = "0.1.1" 1995 | source = "registry+https://github.com/rust-lang/crates.io-index" 1996 | dependencies = [ 1997 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1998 | ] 1999 | 2000 | [[package]] 2001 | name = "ws2_32-sys" 2002 | version = "0.2.1" 2003 | source = "registry+https://github.com/rust-lang/crates.io-index" 2004 | dependencies = [ 2005 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 2006 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 2007 | ] 2008 | 2009 | [metadata] 2010 | "checksum actix 0.7.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6c616db5fa4b0c40702fb75201c2af7f8aa8f3a2e2c1dda3b0655772aa949666" 2011 | "checksum actix-net 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8bebfbe6629e0131730746718c9e032b58f02c6ce06ed7c982b9fef6c8545acd" 2012 | "checksum actix-web 0.7.19 (registry+https://github.com/rust-lang/crates.io-index)" = "b0ac60f86c65a50b140139f499f4f7c6e49e4b5d88fbfba08e4e3975991f7bf4" 2013 | "checksum actix_derive 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4300e9431455322ae393d43a2ba1ef96b8080573c0fc23b196219efedfb6ba69" 2014 | "checksum adler32 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7e522997b529f05601e05166c07ed17789691f562762c7f3b987263d2dedee5c" 2015 | "checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" 2016 | "checksum arc-swap 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "854ede29f7a0ce90519fb2439d030320c6201119b87dab0ee96044603e1130b9" 2017 | "checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" 2018 | "checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" 2019 | "checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" 2020 | "checksum backtrace 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ebbbf59b1c43eefa8c3ede390fcc36820b4999f7914104015be25025e0d62af2" 2021 | "checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" 2022 | "checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 2023 | "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" 2024 | "checksum base64 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "489d6c0ed21b11d038c31b6ceccca973e65d73ba3bd8ecb9a2babf5546164643" 2025 | "checksum bitflags 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d155346769a6855b86399e9bc3814ab343cd3d62c7e985113d46a0ec3c281fd" 2026 | "checksum brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4445dea95f4c2b41cde57cc9fee236ae4dbae88d8fcbdb4750fc1bb5d86aaecd" 2027 | "checksum brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0cb036c3eade309815c15ddbacec5b22c4d1f3983a774ab2eac2e3e9ea85568e" 2028 | "checksum byteorder 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc10e8cc6b2580fda3f36eb6dc5316657f812a3df879a44a66fc9f0fdbc4855" 2029 | "checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 2030 | "checksum bytes 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 2031 | "checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" 2032 | "checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" 2033 | "checksum cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "b486ce3ccf7ffd79fdeb678eac06a9e6c09fc88d33836340becb8fffe87c5e33" 2034 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 2035 | "checksum cookie 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "99be24cfcf40d56ed37fd11c2123be833959bbc5bddecb46e1c2e442e15fa3e0" 2036 | "checksum core-foundation 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "25b9e03f145fd4f2bf705e07b900cd41fc636598fe5dc452fd0db1441c3f496d" 2037 | "checksum core-foundation-sys 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "e7ca8a5221364ef15ce201e8ed2f609fc312682a8f4e0e3d4aa5879764e0fa3b" 2038 | "checksum crc32fast 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ba125de2af0df55319f41944744ad91c71113bf74a4646efff39afe1f6842db1" 2039 | "checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" 2040 | "checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" 2041 | "checksum crossbeam-epoch 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" 2042 | "checksum crossbeam-queue 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" 2043 | "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" 2044 | "checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" 2045 | "checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" 2046 | "checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" 2047 | "checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" 2048 | "checksum encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" 2049 | "checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" 2050 | "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" 2051 | "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" 2052 | "checksum env_logger 0.5.13 (registry+https://github.com/rust-lang/crates.io-index)" = "15b0a4d2e39f8420210be8b27eeda28029729e2fd4291019455016c348240c38" 2053 | "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" 2054 | "checksum failure 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "795bd83d3abeb9220f257e597aa0080a508b27533824adf336529648f6abf7e2" 2055 | "checksum failure_derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ea1063915fd7ef4309e222a5a07cf9c319fb9c7836b1f89b85458672dbb127e1" 2056 | "checksum flate2 1.0.11 (registry+https://github.com/rust-lang/crates.io-index)" = "2adaffba6388640136149e18ed080b77a78611c1e1d6de75aedcdf78df5d4682" 2057 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 2058 | "checksum foreign-types 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 2059 | "checksum foreign-types-shared 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 2060 | "checksum fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" 2061 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 2062 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 2063 | "checksum futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)" = "1b980f2816d6ee8673b6517b52cb0e808a180efc92e5c19d02cdda79066703ef" 2064 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 2065 | "checksum getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "473a1265acc8ff1e808cd0a1af8cee3c2ee5200916058a2ca113c29f2d903571" 2066 | "checksum h2 0.1.26 (registry+https://github.com/rust-lang/crates.io-index)" = "a5b34c246847f938a410a03c5458c7fee2274436675e76d8b903c08efc29c462" 2067 | "checksum hostname 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "21ceb46a83a85e824ef93669c8b390009623863b5c195d1ba747292c0c72f94e" 2068 | "checksum http 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "372bcb56f939e449117fb0869c2e8fd8753a8223d92a172c6e808cf123a5b6e4" 2069 | "checksum httparse 1.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cd179ae861f0c2e53da70d892f5f3029f9594be0c41dc5269cd371691b1dc2f9" 2070 | "checksum humantime 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" 2071 | "checksum hyper 0.10.13 (registry+https://github.com/rust-lang/crates.io-index)" = "368cb56b2740ebf4230520e2b90ebb0461e69034d85d1945febd9b3971426db2" 2072 | "checksum idna 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "38f09e0f0b1fb55fdee1f17470ad800da77af5186a1a76c026b679358b7e844e" 2073 | "checksum indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a61202fbe46c4a951e9404a720a0180bcf3212c750d735cb5c4ba4dc551299f3" 2074 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 2075 | "checksum ipconfig 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "08f7eadeaf4b52700de180d147c4805f199854600b36faa963d91114827b2ffc" 2076 | "checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1" 2077 | "checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 2078 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 2079 | "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" 2080 | "checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 2081 | "checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" 2082 | "checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" 2083 | "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" 2084 | "checksum lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "62ebf1391f6acad60e5c8b43706dde4582df75c06698ab44511d15016bc2442c" 2085 | "checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054" 2086 | "checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 2087 | "checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" 2088 | "checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1" 2089 | "checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" 2090 | "checksum memoffset 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce6075db033bbbb7ee5a0bbd3a3186bbae616f57fb001c485c7ff77955f8177f" 2091 | "checksum mime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5c93a4bd787ddc6e7833c519b73a50883deb5863d76d9b71eb8216fb7f94e66" 2092 | "checksum mime 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "dd1d63acd1b78403cc0c325605908475dd9b9a3acbf65ed8bcab97e27014afcf" 2093 | "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" 2094 | "checksum miniz-sys 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "1e9e3ae51cea1576ceba0dde3d484d30e6e5b86dee0b2d412fe3a16a15c98202" 2095 | "checksum miniz_oxide 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7108aff85b876d06f22503dcce091e29f76733b2bfdd91eebce81f5e68203a10" 2096 | "checksum mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)" = "83f51996a3ed004ef184e16818edc51fadffe8e7ca68be67f9dee67d84d0ff23" 2097 | "checksum mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "966257a94e196b11bb43aca423754d87429960a768de9414f3691d6957abf125" 2098 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 2099 | "checksum native-tls 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4b2df1a4c22fd44a62147fd8f13dd0f95c9d8ca7b2610299b2a2f9cf8964274e" 2100 | "checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 2101 | "checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 2102 | "checksum nom 4.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2ad2a91a8e869eeb30b9cb3119ae87773a8f4ae617f41b1eb9c154b2905f7bd6" 2103 | "checksum num 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "bde7c03b09e7c6a301ee81f6ddf66d7a28ec305699e3d3b056d2fc56470e3120" 2104 | "checksum num-bigint 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "88b14378471f7c2adc5262f05b4701ef53e8da376453a8d8fee48e51db745e49" 2105 | "checksum num-complex 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "f0c78e054dd19c3fd03419ade63fa661e9c49bb890ce3beb4eee5b7baf93f92f" 2106 | "checksum num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "fb24d9bfb3f222010df27995441ded1e954f8f69cd35021f6bef02ca9552fb92" 2107 | "checksum num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "287a1c9969a847055e1122ec0ea7a5c5d6f72aad97934e131c83d5c08ab4e45c" 2108 | "checksum num-rational 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)" = "54ff603b8334a72fbb27fe66948aac0abaaa40231b3cecd189e76162f6f38aaf" 2109 | "checksum num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "a16a42856a256b39c6d3484f097f6713e14feacd9bfb02290917904fae46c81c" 2110 | "checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 2111 | "checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" 2112 | "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" 2113 | "checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884" 2114 | "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" 2115 | "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" 2116 | "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" 2117 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 2118 | "checksum pkg-config 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)" = "72d5370d90f49f70bd033c3d75e87fc529fbfff9d6f7cccef07d6170079d91ea" 2119 | "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" 2120 | "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 2121 | "checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 2122 | "checksum quote 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)" = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 2123 | "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" 2124 | "checksum rand 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c618c47cd3ebd209790115ab837de41425723956ad3ce2e6a7f09890947cacb9" 2125 | "checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 2126 | "checksum rand 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d47eab0e83d9693d40f825f86948aa16eff6750ead4bdffc4ab95b8b3a7f052c" 2127 | "checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 2128 | "checksum rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853" 2129 | "checksum rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" 2130 | "checksum rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" 2131 | "checksum rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 2132 | "checksum rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" 2133 | "checksum rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 2134 | "checksum rand_isaac 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" 2135 | "checksum rand_jitter 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" 2136 | "checksum rand_os 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" 2137 | "checksum rand_pcg 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" 2138 | "checksum rand_xorshift 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" 2139 | "checksum rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" 2140 | "checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 2141 | "checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" 2142 | "checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" 2143 | "checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 2144 | "checksum resolv-conf 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b263b4aa1b5de9ffc0054a2386f96992058bb6870aab516f8cdeb8a667d56dcb" 2145 | "checksum ring 0.13.5 (registry+https://github.com/rust-lang/crates.io-index)" = "2c4db68a2e35f3497146b7e4563df7d4773a2433230c5e4b448328e31740458a" 2146 | "checksum rustc-demangle 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "f312457f8a4fa31d3581a6f423a70d6c33a10b95291985df55f1ff670ec10ce8" 2147 | "checksum rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "237546c689f20bb44980270c73c3b9edd0891c1be49cc1274406134a66d3957b" 2148 | "checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" 2149 | "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 2150 | "checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" 2151 | "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" 2152 | "checksum safemem 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d2b08423011dae9a5ca23f07cf57dac3857f5c885d352b76f6d95f4aea9434d0" 2153 | "checksum schannel 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "f2f6abf258d99c3c1c5c2131d99d064e94b7b3dd5f416483057f308fea253339" 2154 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 2155 | "checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 2156 | "checksum security-framework 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eee63d0f4a9ec776eeb30e220f0bc1e092c3ad744b2a379e3993070364d3adc2" 2157 | "checksum security-framework-sys 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9636f8989cbf61385ae4824b98c1aaa54c994d7d8b41f11c601ed799f0549a56" 2158 | "checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" 2159 | "checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2160 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2161 | "checksum serde 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "90c46c664d99b1607b9719eaea982a6e8419f926acbf204b88513d16b742e78d" 2162 | "checksum serde 0.7.15 (registry+https://github.com/rust-lang/crates.io-index)" = "1b0e0732aa8ec4267f61815a396a942ba3525062e3bd5520aa8419927cfc0a92" 2163 | "checksum serde 1.0.100 (registry+https://github.com/rust-lang/crates.io-index)" = "f4473e8506b213730ff2061073b48fa51dcc66349219e2e7c5608f0296a1d95a" 2164 | "checksum serde_json 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b22e8a0554f31cb0f501e027de07b253553b308124f61c57598b9678dba35c0b" 2165 | "checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" 2166 | "checksum serde_urlencoded 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "642dd69105886af2efd227f75a520ec9b44a820d65bc133a9131f7d229fd165a" 2167 | "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" 2168 | "checksum signal-hook 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4f61c4d59f3aaa9f61bba6450a9b80ba48362fd7d651689e7a10c453b1f6dc68" 2169 | "checksum signal-hook-registry 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1797d48f38f91643908bb14e35e79928f9f4b3cefb2420a564dde0991b4358dc" 2170 | "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 2171 | "checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 2172 | "checksum socket2 0.3.11 (registry+https://github.com/rust-lang/crates.io-index)" = "e8b74de517221a2cb01a53349cf54182acdc31a074727d3079068448c0676d85" 2173 | "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" 2174 | "checksum string 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d24114bfcceb867ca7f71a0d3fe45d45619ec47a6fbfa98cb14e14250bfa5d6d" 2175 | "checksum syn 0.15.44 (registry+https://github.com/rust-lang/crates.io-index)" = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" 2176 | "checksum synstructure 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "02353edf96d6e4dc81aea2d8490a7e9db177bf8acb0e951c24940bf866cb313f" 2177 | "checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 2178 | "checksum termcolor 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "96d6098003bde162e4277c70665bd87c326f5a0c3f3fbfb285787fa482d54e6e" 2179 | "checksum thread_local 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b53e329000edc2b34dbe8545fd20e55a333362d0a321909685a19bd28c3f1b" 2180 | "checksum time 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "211b63c112206356ef1ff9b19355f43740fc3f85960c598a93d3a3d3ba7beade" 2181 | "checksum tinyosc 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ec7bbcaf5c3c7db1211cae48a143eea53c2adee8b72286adb688665516da6373" 2182 | "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" 2183 | "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" 2184 | "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" 2185 | "checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" 2186 | "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" 2187 | "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" 2188 | "checksum tokio-reactor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "6af16bfac7e112bea8b0442542161bfc41cbfa4466b580bdda7d18cb88b911ce" 2189 | "checksum tokio-signal 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "dd6dc5276ea05ce379a16de90083ec80836440d5ef8a6a39545a3207373b8296" 2190 | "checksum tokio-sync 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2162248ff317e2bc713b261f242b69dbb838b85248ed20bb21df56d60ea4cae7" 2191 | "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" 2192 | "checksum tokio-threadpool 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "90ca01319dea1e376a001e8dc192d42ebde6dd532532a5bad988ac37db365b19" 2193 | "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" 2194 | "checksum tokio-tls 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "354b8cd83825b3c20217a9dc174d6a0c67441a2fae5c41bcb1ea6679f6ae0f7c" 2195 | "checksum tokio-udp 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f02298505547f73e60f568359ef0d016d5acd6e830ab9bc7c4a5b3403440121b" 2196 | "checksum tokio-uds 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "037ffc3ba0e12a0ab4aca92e5234e0dedeb48fddf6ccd260f1f150a36a9f2445" 2197 | "checksum toml 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "758664fc71a3a69038656bee8b6be6477d2a6c315a6b81f7081f591bffa4111f" 2198 | "checksum touchpage 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1f33094fbbd4af3bdb57fe959b9b07b5a73562240ccf76dbbea07778df0d37c7" 2199 | "checksum tower-service 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b32f72af77f1bfe3d3d4da8516a238ebe7039b51dd8637a09841ac7f16d2c987" 2200 | "checksum traitobject 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "efd1f82c56340fdf16f2a953d7bda4f8fdffba13d93b00844c25572110b26079" 2201 | "checksum trust-dns-proto 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0838272e89f1c693b4df38dc353412e389cf548ceed6f9fd1af5a8d6e0e7cf74" 2202 | "checksum trust-dns-proto 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "09144f0992b0870fa8d2972cc069cbf1e3c0fda64d1f3d45c4d68d0e0b52ad4e" 2203 | "checksum trust-dns-resolver 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8a9f877f7a1ad821ab350505e1f1b146a4960402991787191d6d8cab2ce2de2c" 2204 | "checksum typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1410f6f91f21d1612654e7cc69193b0334f909dcf2c790c4826254fbb86f8887" 2205 | "checksum unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "13a5906ca2b98c799f4b1ab4557b76367ebd6ae5ef14930ec841c74aed5f3764" 2206 | "checksum unicase 2.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2e2e6bd1e59e56598518beb94fd6db628ded570326f0a98c679a304bd9f00150" 2207 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 2208 | "checksum unicode-normalization 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "141339a08b982d942be2ca06ff8b076563cbe223d1befd5450716790d44e2426" 2209 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 2210 | "checksum untrusted 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55cd1f4b4e96b46aeb8d4855db4a7a9bd96eeeb5c6a1ab54593328761642ce2f" 2211 | "checksum url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dd4e7c0d531266369519a4aa4f399d748bd37043b00bde1e4ff1f60a120b355a" 2212 | "checksum uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90dbc611eb48397705a6b0f6e917da23ae517e4d127123d2cf7674206627d32a" 2213 | "checksum v_escape 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)" = "660b101c07b5d0863deb9e7fb3138777e858d6d2a79f9e6049a27d1cc77c6da6" 2214 | "checksum v_escape_derive 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)" = "75b2dc50d1c14d7b4488bf34263140a3827d8ca4f4265411e4784ac262382276" 2215 | "checksum v_htmlescape 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e33e939c0d8cf047514fb6ba7d5aac78bc56677a6938b2ee67000b91f2e97e41" 2216 | "checksum vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "33dd455d0f96e90a75803cfeb7f948768c08d70a6de9a8d2362461935698bf95" 2217 | "checksum version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914b1a6776c4c929a602fafd8bc742e06365d4bcbe48c30f9cca5824f70dc9dd" 2218 | "checksum wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b89c3ce4ce14bdc6fb6beaf9ec7928ca331de5df7e5ea278375642a2f478570d" 2219 | "checksum websocket 0.23.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b255b190f412e45000c35be7fe9b48b39a2ac5eb90d093d421694e5dae8b335c" 2220 | "checksum widestring 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7157704c2e12e3d2189c507b7482c52820a16dfa4465ba91add92f266667cadb" 2221 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 2222 | "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" 2223 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 2224 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2225 | "checksum winapi-util 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7168bab6e1daee33b4557efd0e95d5ca70a03706d39fa5f3fe7a236f584b03c9" 2226 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2227 | "checksum wincolor 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "96f5016b18804d24db43cebf3c77269e7569b8954a8464501c216cc5e070eaa9" 2228 | "checksum winreg 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a27a759395c1195c4cc5cda607ef6f8f6498f64e78f7900f5de0a127a424704a" 2229 | "checksum winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" 2230 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 2231 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "oscpad" 3 | version = "0.2.3" 4 | authors = ["Ben Burdette "] 5 | description = "OSC 'control panel' server with shared-state web controls" 6 | documentation = "https://github.com/bburdette/oscpad/wiki/Get-started-with-oscpad" 7 | homepage = "https://github.com/bburdette/oscpad" 8 | repository = "https://github.com/bburdette/oscpad.git" 9 | readme = "README.md" 10 | keywords = ["osc", "audio", "opensoundcontrol"] 11 | license = "MIT" 12 | include = [ "src/**/*", 13 | "example_projects/**/*", 14 | "example_projects/guisend/**/*", 15 | "example_projects/echotest/**/*", 16 | "elm/**/*", 17 | "Cargo.toml", 18 | "Cargo.lock", 19 | "README.md", 20 | "LICENSE", 21 | "runit.sh", 22 | "default.nix", 23 | "ns.sh"] 24 | 25 | [dependencies] 26 | # touchpage = { path = "../touchpage" } 27 | touchpage = "0.2.0" 28 | serde_json = "0.7.0" 29 | serde = "0.5.3" 30 | time = "0.1.34" 31 | tinyosc = "0.0.3" 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 Ben Burdette 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # oscpad 2 | Configurable web controls with shared state, which send OSC messages. [Overview/tutorial here](https://github.com/bburdette/oscpad/wiki/Get-started-with-oscpad) 3 | 4 | This is my 'getting to know you' project for elm and rust. 5 | 6 | The idea is to have a simple way to configure a set of touch enabled buttons, sliders, and labels, which are presented on a web page. When the user manipulates the controls, websocket messages are sent to the server, which in turn sends out OSC messages to one or more target IP addresses. Incoming OSC messages can also change the control state, which is reflected in the clients. OSC is an easy protocol to support, good for 'internet of things' activities, such as robots, lamps, electronic instruments, etc. 7 | 8 | Right now the controls are working for the most part. There is a label, button, slider, and sizer. There's an example project, echotest, which changes numbers in labels based on slider movement. There's also guisend, which reads a json control configuration file and sends it to oscpad, replacing whatever controls were there before. 9 | 10 | Ultimately I'll make oscpad into a rust library as well as an application, for single-executable projects. 11 | 12 | ### Some notes on elm compiling. 13 | 14 | The elm build requires ambr, part of the amber cargo package. Install that with cargo install amber. 15 | 16 | From the project directory, use ./build-elm.sh to build the elm and merge the js into stringDefaults.rs. Then do cargo build to get the rust server. Run the rust server with ./runit.sh. So to sum up: 17 | 18 | 0) cargo install amber 19 | 1) ./build-elm.sh 20 | 2) cargo build 21 | 3) ./runit.sh 22 | -------------------------------------------------------------------------------- /default.nix: -------------------------------------------------------------------------------- 1 | { stdenv, openssl }: 2 | 3 | stdenv.mkDerivation rec { 4 | name = "meh-1.0"; 5 | version = "1.0"; 6 | rev = "1"; 7 | src = "."; 8 | buildInputs = [openssl]; 9 | meta = with stdenv.lib; { 10 | description = "An interactive Gtk canvas widget for graph-based interfaces"; 11 | homepage = http://drobilla.net; 12 | license = licenses.gpl3; 13 | maintainers = [ maintainers.goibhniu ]; 14 | platforms = platforms.linux; 15 | }; 16 | } 17 | -------------------------------------------------------------------------------- /example_projects/echotest/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "byteorder" 5 | version = "0.3.13" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | 8 | [[package]] 9 | name = "echotest" 10 | version = "0.1.0" 11 | dependencies = [ 12 | "tinyosc 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 13 | ] 14 | 15 | [[package]] 16 | name = "tinyosc" 17 | version = "0.0.2" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | dependencies = [ 20 | "byteorder 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", 21 | ] 22 | 23 | [metadata] 24 | "checksum byteorder 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "29b2aa490a8f546381308d68fc79e6bd753cd3ad839f7a7172897f1feedfa175" 25 | "checksum tinyosc 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc383a13f4acf1352ac59b2e90d8bd1cf989f4cc44f0a21197e57d689c89aee" 26 | -------------------------------------------------------------------------------- /example_projects/echotest/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "echotest" 3 | version = "0.1.0" 4 | authors = ["Ben B "] 5 | 6 | [dependencies] 7 | tinyosc = "0.0.2" 8 | -------------------------------------------------------------------------------- /example_projects/echotest/echoguiconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "rustmeh", 3 | "rootControl": 4 | { 5 | "type": "sizer", 6 | "orientation": "vertical", 7 | "controls": [ 8 | { 9 | "type": "sizer", 10 | "orientation": "horizontal", 11 | "controls": [ 12 | { "type": "slider" 13 | , "orientation": "horizontal" 14 | , "name": "hs1" 15 | } 16 | ,{ "type": "slider" 17 | , "label": "hs2" 18 | , "orientation": "horizontal" 19 | , "name": "hs2" 20 | } 21 | ] 22 | } 23 | , { 24 | "type": "sizer", 25 | "orientation": "horizontal", 26 | "controls": [ 27 | { "type": "label" 28 | , "name": "lb1" 29 | , "label": "blah" 30 | } 31 | , { "type": "label" 32 | , "name": "lb2" 33 | , "label": "blah" 34 | } 35 | ] 36 | } 37 | , { "type": "label" 38 | , "name": "lb3" 39 | , "label": "blah" 40 | } 41 | , { "type": "button" 42 | , "name": "b1" 43 | , "label": "b1" 44 | } 45 | , { "type": "button" 46 | , "name": "b2" 47 | , "label": "b2" 48 | , "latch": true 49 | } 50 | , { "type": "button" 51 | , "name": "b3" 52 | , "label": "b3" 53 | , "latch": true 54 | } 55 | ] 56 | } 57 | } 58 | 59 | 60 | 61 | -------------------------------------------------------------------------------- /example_projects/echotest/readme.txt: -------------------------------------------------------------------------------- 1 | this program receives OSC messages from the oscpad server, looks for slider messages from those, and sends back label messages. 2 | 3 | The result should be that as you slide the sliders around, label text is updated. 4 | 5 | for example, if oscpad is sending out message on port 7070 and receiving message on 9000, then run echotest like this: 6 | 7 | ./target/debug/echotest localhost:7070 localhost:9000 8 | -------------------------------------------------------------------------------- /example_projects/echotest/runit.sh: -------------------------------------------------------------------------------- 1 | ./target/debug/echotest 127.0.0.1:7070 127.0.0.1:9000 2 | -------------------------------------------------------------------------------- /example_projects/echotest/src/main.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | mod tryopt; 3 | mod stringerror; 4 | 5 | use std::net::UdpSocket; 6 | use std::string::String; 7 | use std::env; 8 | 9 | extern crate tinyosc; 10 | use tinyosc as osc; 11 | 12 | 13 | use std::fmt::format; 14 | 15 | fn main() { 16 | 17 | match rmain() { 18 | Ok(s) => println!("ok: {}", s), 19 | Err(e) => println!("error: {} ", e), 20 | } 21 | } 22 | 23 | fn rmain() -> Result > { 24 | let args = env::args(); 25 | let mut iter = args.skip(1); // skip the program name 26 | 27 | let syntax = "syntax: \n echotest "; 28 | 29 | let recvip = try_opt_resbox!(iter.next(), syntax); 30 | let sendip = try_opt_resbox!(iter.next(), syntax); 31 | 32 | let recvsocket = try!(UdpSocket::bind(&recvip[..])); 33 | // for sending, bind to this. if we bind to localhost, we can't 34 | // send messages to other machines. for that reason, don't reuse the 35 | // recvsocket for sending. 36 | let sendsocket = try!(UdpSocket::bind("0.0.0.0:0")); 37 | let mut buf = [0; 100]; 38 | 39 | println!("echotest"); 40 | println!("sending to: {}", sendip); 41 | println!("receiving from: {}", recvip); 42 | 43 | loop { 44 | let (amt, _) = try!(recvsocket.recv_from(&mut buf)); 45 | 46 | println!("length: {}", amt); 47 | let inmsg = match osc::Message::deserialize(&buf[.. amt]) { 48 | Ok(m) => m, 49 | Err(e) => return Err(stringerror::string_box_err( 50 | &format(format_args!("OSC deserialize error {:?}", e)))), 51 | }; 52 | 53 | println!("message recieved {} {:?}", inmsg.path, inmsg.arguments ); 54 | 55 | match inmsg { 56 | osc::Message { path: ref inpath, arguments: ref args } => { 57 | 58 | if &inpath[0..2] == "hs" 59 | { 60 | // look for a "location" update, ie 61 | // an arg "location" followed by a float. 62 | let mut arg_iter = args.into_iter(); 63 | let mut arg = arg_iter.next(); 64 | 65 | while arg.is_some() 66 | { 67 | match arg 68 | { 69 | Some(&osc::Argument::s("location")) => { 70 | arg = arg_iter.next(); 71 | match arg { 72 | Some(&osc::Argument::f(loc)) => { 73 | let outpath = format(format_args!("hs{}", &inpath[2..])); 74 | // let outpath = format(format_args!("lb{}", &inpath[2..])); 75 | let labtext = format(format_args!("{}", loc)); 76 | let mut arghs = Vec::new(); 77 | // arghs.push(osc::Argument::f(b * 100.0 - 100.0)); 78 | arghs.push(osc::Argument::s("label")); 79 | arghs.push(osc::Argument::s(&labtext)); 80 | let outmsg = osc::Message { path: &outpath, arguments: arghs }; 81 | match outmsg.serialize() { 82 | Ok(v) => { 83 | println!("sending {} {:?}", outmsg.path, outmsg.arguments ); 84 | match sendsocket.send_to(&v, &sendip[..]) { 85 | Ok(_) => (), 86 | Err(e) => println!("error sending osc message: {:?}", e), 87 | } 88 | }, 89 | Err(e) => { println!("error: {:?}", e) }, 90 | } 91 | break; 92 | }, 93 | _ => { 94 | continue; 95 | } 96 | } 97 | } 98 | _ => { 99 | arg = arg_iter.next(); 100 | continue; 101 | } 102 | } 103 | } 104 | Ok(0) 105 | } 106 | else if &inpath[0..1] == "b" 107 | { 108 | // for any kind of button message, update the label. 109 | // amounts to update the label to the last pressed (or released) button. 110 | match &args[0] { 111 | &osc::Argument::s(_) => { 112 | let outpath = "lb3"; 113 | let mut arghs = Vec::new(); 114 | arghs.push(osc::Argument::s("label")); 115 | arghs.push(osc::Argument::s(&inpath)); 116 | let outmsg = osc::Message { path: &outpath, arguments: arghs }; 117 | match outmsg.serialize() { 118 | Ok(v) => { 119 | println!("sending {} {:?}", outmsg.path, outmsg.arguments ); 120 | sendsocket.send_to(&v, &sendip[..]) 121 | }, 122 | Err(e) => return Err(Box::new(e)), 123 | } 124 | }, 125 | _ => { 126 | println!("ignore args: {:?}", args); 127 | // return Err(Error::new(ErrorKind::Other, "unexpected osc args!")); 128 | Ok(0) 129 | }, 130 | } 131 | } 132 | else 133 | { 134 | println!("ignore args 2: {:?}", args); 135 | // println!("ignore"); 136 | Ok(0) 137 | } 138 | }, 139 | }; 140 | }; 141 | 142 | 143 | // drop(socket); // close the socket 144 | // Ok(String::from("meh")) 145 | } 146 | 147 | -------------------------------------------------------------------------------- /example_projects/echotest/src/stringerror.rs: -------------------------------------------------------------------------------- 1 | use std::fmt; 2 | use std::error::Error as StdError; 3 | 4 | #[derive(Debug)] 5 | pub struct Error { 6 | message: String 7 | } 8 | 9 | impl Error { 10 | pub fn new(msg: &str) -> Error { 11 | Error { message: msg.to_string() } 12 | } 13 | } 14 | 15 | pub fn string_box_err(s: &str) -> Box { 16 | Box::new(Error::new(s)) 17 | } 18 | 19 | impl fmt::Display for Error { 20 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 21 | self.description().fmt(f) 22 | } 23 | } 24 | 25 | impl StdError for Error { 26 | fn description(&self) -> &str { 27 | &self.message[..] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /example_projects/echotest/src/tryopt.rs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #[macro_export] 5 | macro_rules! try_opt { 6 | ($e: expr) => { 7 | match $e { 8 | Some(x) => x, 9 | None => return None 10 | } 11 | } 12 | } 13 | 14 | #[macro_export] 15 | macro_rules! try_opt_resbox { 16 | 17 | ($e: expr, $s: expr) => { 18 | match $e { 19 | Some(x) => x, 20 | None => return Err(stringerror::string_box_err($s)), 21 | // None => return Err(Box::new(stringerror::Error::new($s))), 22 | } 23 | } 24 | } 25 | 26 | /* 27 | #[macro_export] 28 | macro_rules! try_opt_res { 29 | ($e: expr, $s: expr) => 30 | (match $e { 31 | Some(val) => val, 32 | None => { 33 | let err = Error::new($s) ; 34 | return Err(std::convert::From::from(err)) 35 | }, 36 | }) 37 | } 38 | */ 39 | /* 40 | hmmm not getting why this doesn't work... want it to be like the try! macro. 41 | 42 | macro_rules! try_opt_res { 43 | ($e: expr, $s: expr) => 44 | (match $e { 45 | Some(val) => val, 46 | None => { 47 | let err = Err(Error::new(ErrorKind::Other, $s)) ; 48 | return $crate::result::Result::Err($crate::convert::From::from(err)) 49 | }, 50 | }) 51 | } 52 | */ 53 | 54 | 55 | -------------------------------------------------------------------------------- /example_projects/genericconfig.json: -------------------------------------------------------------------------------- 1 | { "guifile": "example_projects/echotest/echoguiconfig.json", 2 | "htmlfile": "../touchpage/example/index.html", 3 | "ip": "0.0.0.0", 4 | "http-port": "3030", 5 | "websockets-port": "1234", 6 | "oscrecvip": "127.0.0.1:9000", 7 | "oscsendip": "127.0.0.1:7070" 8 | } 9 | -------------------------------------------------------------------------------- /example_projects/guisend/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "byteorder" 5 | version = "0.3.13" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | 8 | [[package]] 9 | name = "guisend" 10 | version = "0.1.0" 11 | dependencies = [ 12 | "tinyosc 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 13 | ] 14 | 15 | [[package]] 16 | name = "tinyosc" 17 | version = "0.0.2" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | dependencies = [ 20 | "byteorder 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", 21 | ] 22 | 23 | [metadata] 24 | "checksum byteorder 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "29b2aa490a8f546381308d68fc79e6bd753cd3ad839f7a7172897f1feedfa175" 25 | "checksum tinyosc 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0fc383a13f4acf1352ac59b2e90d8bd1cf989f4cc44f0a21197e57d689c89aee" 26 | -------------------------------------------------------------------------------- /example_projects/guisend/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "guisend" 3 | version = "0.1.0" 4 | authors = ["Ben B "] 5 | 6 | [dependencies] 7 | tinyosc = "0.0.2" 8 | -------------------------------------------------------------------------------- /example_projects/guisend/readme.txt: -------------------------------------------------------------------------------- 1 | this program sends a gui config file to the oscpad server in an osc message. 2 | 3 | make sure the osc buffer in oscpad is large enough to accomodate the file size, otherwise you'll get an 'invalid osc message' error. 4 | 5 | ./target/debug/guisend 127.0.0.1:9000 ../samplegui.json 6 | -------------------------------------------------------------------------------- /example_projects/guisend/src/main.rs: -------------------------------------------------------------------------------- 1 | 2 | #[macro_use] 3 | mod tryopt; 4 | mod stringerror; 5 | 6 | use std::net::UdpSocket; 7 | use std::string::String; 8 | use std::env; 9 | use std::fs::File; 10 | use std::path::Path; 11 | use std::io::Read; 12 | 13 | extern crate tinyosc; 14 | use tinyosc as osc; 15 | 16 | 17 | fn main() { 18 | 19 | match resmain() { 20 | Ok(s) => println!("ok: {}", s), 21 | Err(e) => println!("error: {} ", e), 22 | } 23 | } 24 | 25 | fn resmain() -> Result > { 26 | let args = env::args(); 27 | let mut iter = args.skip(1); // skip the program name 28 | 29 | let syntax = "syntax: \n guisend "; 30 | 31 | let sendip = try_opt_resbox!(iter.next(), syntax); 32 | let guifilename = try_opt_resbox!(iter.next(), syntax); 33 | let guistring = try!(load_string(&guifilename)); 34 | 35 | let socket = try!(UdpSocket::bind("0.0.0.0:0")); 36 | println!("guisend"); 37 | 38 | let mut arghs = Vec::new(); 39 | arghs.push(osc::Argument::s(&guistring)); 40 | 41 | let outmsg = osc::Message { path: "guiconfig", arguments: arghs }; 42 | let v = try!(outmsg.serialize()); 43 | 44 | println!("sending {} {:?}", outmsg.path, outmsg.arguments ); 45 | try!(socket.send_to(&v, &sendip[..])); 46 | 47 | Ok("success".to_string()) 48 | } 49 | 50 | 51 | fn load_string(file_name: &str) -> Result > 52 | { 53 | let path = &Path::new(&file_name); 54 | let mut inf = try!(File::open(path)); 55 | let mut result = String::new(); 56 | let len = try!(inf.read_to_string(&mut result)); 57 | println!("read {} bytes", len); 58 | Ok(result) 59 | } 60 | 61 | -------------------------------------------------------------------------------- /example_projects/guisend/src/stringerror.rs: -------------------------------------------------------------------------------- 1 | use std::fmt; 2 | use std::error::Error as StdError; 3 | 4 | #[derive(Debug)] 5 | pub struct Error { 6 | message: String 7 | } 8 | 9 | impl Error { 10 | pub fn new(msg: &str) -> Error { 11 | Error { message: msg.to_string() } 12 | } 13 | } 14 | 15 | pub fn string_box_err(s: &str) -> Box { 16 | Box::new(Error::new(s)) 17 | } 18 | 19 | impl fmt::Display for Error { 20 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 21 | self.description().fmt(f) 22 | } 23 | } 24 | 25 | impl StdError for Error { 26 | fn description(&self) -> &str { 27 | &self.message[..] 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /example_projects/guisend/src/tryopt.rs: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | #[macro_export] 5 | macro_rules! try_opt { 6 | ($e: expr) => { 7 | match $e { 8 | Some(x) => x, 9 | None => return None 10 | } 11 | } 12 | } 13 | 14 | #[macro_export] 15 | macro_rules! try_opt_resbox { 16 | 17 | ($e: expr, $s: expr) => { 18 | match $e { 19 | Some(x) => x, 20 | None => return Err(stringerror::string_box_err($s)), 21 | // None => return Err(Box::new(stringerror::Error::new($s))), 22 | } 23 | } 24 | } 25 | 26 | /* 27 | #[macro_export] 28 | macro_rules! try_opt_res { 29 | ($e: expr, $s: expr) => 30 | (match $e { 31 | Some(val) => val, 32 | None => { 33 | let err = Error::new($s) ; 34 | return Err(std::convert::From::from(err)) 35 | }, 36 | }) 37 | } 38 | */ 39 | /* 40 | hmmm not getting why this doesn't work... want it to be like the try! macro. 41 | 42 | macro_rules! try_opt_res { 43 | ($e: expr, $s: expr) => 44 | (match $e { 45 | Some(val) => val, 46 | None => { 47 | let err = Err(Error::new(ErrorKind::Other, $s)) ; 48 | return $crate::result::Result::Err($crate::convert::From::from(err)) 49 | }, 50 | }) 51 | } 52 | */ 53 | 54 | 55 | -------------------------------------------------------------------------------- /example_projects/localconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "htmlfile": "elm/Main.html", 3 | "guifile": "example_projects/echotest/echoguiconfig.json", 4 | "ip": "0.0.0.0:3030", 5 | "wip": "0.0.0.0:1234", 6 | "client-wip": "ws://localhost:1234", 7 | "oscrecvip": "localhost:9000", 8 | "oscsendip": "localhost:7070" 9 | } 10 | -------------------------------------------------------------------------------- /example_projects/sampleconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "guifile": "example_projects/samplegui.json", 3 | "ip": "0.0.0.0:3030", 4 | "wip": "0.0.0.0:1234", 5 | "http-port": "3030", 6 | "websockets-port": "1234", 7 | "client-wip": "ws://localhost:1234", 8 | "oscrecvip": "127.0.0.1:9000", 9 | "oscsendip": "127.0.0.1:7070" 10 | } 11 | -------------------------------------------------------------------------------- /example_projects/samplegui.json: -------------------------------------------------------------------------------- 1 | { 2 | "title": "test", 3 | "textColor": "1F00F0", 4 | "controlsColor": "FFFFFF" , 5 | "unpressedColor": "F0F0FF", 6 | "rootControl": 7 | { "type": "sizer", 8 | "orientation": "vertical", 9 | "proportions": [0.1,0.3,0.6], 10 | "controls": [ 11 | { "type": "label" 12 | , "name": "lb3" 13 | , "label": "blah" 14 | } 15 | ,{ "type": "button" 16 | , "name": "b1" 17 | } 18 | ,{ "type": "slider" 19 | , "orientation": "horizontal" 20 | , "name": "hs2" 21 | } 22 | ] 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /ns.sh: -------------------------------------------------------------------------------- 1 | nix-shell 2 | -------------------------------------------------------------------------------- /runit.sh: -------------------------------------------------------------------------------- 1 | 2 | ./target/debug/oscpad example_projects/genericconfig.json 3 | 4 | -------------------------------------------------------------------------------- /rustfmt.toml: -------------------------------------------------------------------------------- 1 | tab_spaces = 2 2 | verbose = "Verbose" 3 | -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | let 2 | moz_overlay = import (builtins.fetchTarball https://github.com/mozilla/nixpkgs-mozilla/archive/master.tar.gz); 3 | nixpkgs = import { overlays = [ moz_overlay ]; }; 4 | in 5 | with nixpkgs; 6 | stdenv.mkDerivation { 7 | name = "moz_overlay_shell"; 8 | buildInputs = [ 9 | nixpkgs.latest.rustChannels.stable.rust 10 | openssl.dev 11 | pkgconfig 12 | nix 13 | ]; 14 | OPENSSL_LIB_DIR=openssl.dev; 15 | } 16 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | use std::collections::BTreeMap; 2 | use std::env; 3 | use std::fmt::format; 4 | use std::fs::File; 5 | use std::io::Read; 6 | use std::io::Write; 7 | use std::io::{Error, ErrorKind}; 8 | use std::path::Path; 9 | use std::string::*; 10 | // use std::thread; 11 | 12 | use std::net::UdpSocket; 13 | 14 | // use touchpage::startserver; 15 | use touchpage as tp; 16 | use touchpage::control_nexus as cn; 17 | use touchpage::control_updates as cu; 18 | extern crate touchpage; 19 | 20 | #[macro_use] 21 | mod tryopt; 22 | mod stringerror; 23 | 24 | extern crate tinyosc; 25 | use tinyosc as osc; 26 | 27 | extern crate serde_json; 28 | use serde_json::Value; 29 | 30 | fn load_string(file_name: &str) -> Result> { 31 | let path = &Path::new(&file_name); 32 | let mut inf = try!(File::open(path)); 33 | let mut result = String::new(); 34 | try!(inf.read_to_string(&mut result)); 35 | Ok(result) 36 | } 37 | 38 | fn write_string(text: &str, file_name: &str) -> Result<(), Box> { 39 | let path = &Path::new(&file_name); 40 | let mut inf = try!(File::create(path)); 41 | match inf.write(text.as_bytes()) { 42 | Ok(_) => Ok(()), 43 | Err(e) => Err(Box::new(e)), 44 | } 45 | } 46 | 47 | fn make_default_prefs(guifile: &str) -> BTreeMap { 48 | let mut map = BTreeMap::new(); 49 | map.insert(String::from("guifile"), Value::String(guifile.to_string())); 50 | map.insert(String::from("ip"), Value::String("0.0.0.0".to_string())); 51 | map.insert(String::from("http-port"), Value::String("3030".to_string())); 52 | map.insert( 53 | String::from("websockets-port"), 54 | Value::String("1234".to_string()), 55 | ); 56 | map.insert( 57 | String::from("oscrecvip"), 58 | Value::String("localhost:9000".to_string()), 59 | ); 60 | map.insert( 61 | String::from("oscsendip"), 62 | Value::String("127.0.0.1:7070".to_string()), 63 | ); 64 | 65 | map 66 | } 67 | 68 | fn main() { 69 | // read in the settings json. 70 | let args = env::args(); 71 | let mut iter = args.skip(1); // skip the program name 72 | match iter.next() { 73 | Some(file_name) => { 74 | if file_name == "-mkconfigs" { 75 | let a = iter.next(); 76 | let b = iter.next(); 77 | match (a, b) { 78 | (Some(prefs_filename), Some(gui_filename)) => { 79 | let value = Value::Object(make_default_prefs(&gui_filename[..])); 80 | 81 | if let Ok(sv) = serde_json::to_string_pretty(&value) { 82 | match write_string(&sv[..], &prefs_filename[..]) { 83 | Ok(()) => println!("wrote example server config to file: {}", prefs_filename), 84 | Err(e) => println!("error writing default config file: {:?}", e), 85 | } 86 | match write_string(touchpage::json::sample_gui_config(), &gui_filename[..]) { 87 | Ok(()) => println!("wrote example gui config to file: {}", gui_filename), 88 | Err(e) => println!("error writing default config file: {:?}", e), 89 | } 90 | } 91 | } 92 | (Some(prefs_filename), _) => { 93 | let value = Value::Object(make_default_prefs("gui.conf")); 94 | 95 | if let Ok(sv) = serde_json::to_string_pretty(&value) { 96 | match write_string(&sv[..], &prefs_filename[..]) { 97 | Ok(()) => println!("wrote server config to file: {}", prefs_filename), 98 | Err(e) => println!("error writing default config file: {:?}", e), 99 | } 100 | } 101 | } 102 | _ => println!("no config filenames!"), 103 | } 104 | } else { 105 | match startserver_w_config(&file_name) { 106 | Err(e) => println!("error starting server: {:?}", e), 107 | _ => (), 108 | } 109 | } 110 | } 111 | None => { 112 | println!("oscpad syntax: "); 113 | println!("oscpad "); 114 | println!("oscpad -mkconfigs "); 115 | } 116 | } 117 | } 118 | 119 | pub struct SendOscMsg { 120 | oscsendsocket: UdpSocket, 121 | oscsendip: String, 122 | } 123 | 124 | impl cn::ControlUpdateProcessor for SendOscMsg { 125 | fn on_update_received(&mut self, update: &cu::UpdateMsg, cn: &mut cn::ControlNexus) -> () { 126 | println!("on_update_receivedi {:?}", update); 127 | match cn.ci.lock() { 128 | Ok(ci) => match ctrl_update_to_osc(update, &ci) { 129 | Ok(v) => match self.oscsendsocket.send_to(&v, &self.oscsendip[..]) { 130 | Ok(_) => { 131 | println!("osc message sent : {:?}, {:?}", v, self.oscsendip); 132 | () 133 | } 134 | Err(e) => { 135 | println!("oscsendip: {:?}", self.oscsendip); 136 | println!("error sending osc message: {:?}", e) 137 | } 138 | }, 139 | Err(e) => println!("error building osc message: {:?}", e), 140 | }, 141 | Err(e) => println!("error with locK: {}", e), 142 | }; 143 | 144 | println!("update callback called! {:?}", update); 145 | } 146 | } 147 | 148 | fn startserver_w_config(file_name: &String) -> Result<(), Box> { 149 | println!("loading config file: {}", file_name); 150 | let configstring = try!(load_string(&file_name)); 151 | 152 | // read config file as json 153 | let configval: Value = try!(serde_json::from_str(&configstring[..])); 154 | 155 | let oobj = try_opt_resbox!(configval.as_object(), "config file is not a json object!"); 156 | let obj = oobj.clone(); 157 | 158 | let guifilename = try_opt_resbox!( 159 | try_opt_resbox!(obj.get("guifile"), "'guifile' not found in config file").as_string(), 160 | "failed to convert to string" 161 | ); 162 | let guistring = try!(load_string(&guifilename[..])); 163 | 164 | let htmlfilename = match obj.get("htmlfile") { 165 | Some(val) => { 166 | println!("loading htmlfile: {:?}", val.as_string()); 167 | val.as_string() 168 | } 169 | None => None, 170 | }; 171 | 172 | let ip = String::new() 173 | + try_opt_resbox!( 174 | try_opt_resbox!(obj.get("ip"), "'ip' not found!").as_string(), 175 | "'ip' not a string!" 176 | ); 177 | 178 | let http_port = String::new() 179 | + try_opt_resbox!( 180 | try_opt_resbox!(obj.get("http-port"), "'http-port' not found!").as_string(), 181 | "'http-port' not a string!" 182 | ); 183 | 184 | let mut http_ip = String::from(ip.as_str()); 185 | http_ip.push_str(":"); 186 | http_ip.push_str(&http_port); 187 | 188 | let websockets_port = String::new() 189 | + try_opt_resbox!( 190 | try_opt_resbox!(obj.get("websockets-port"), "'websockets-port' not found!").as_string(), 191 | "'websockets-port' not a string!" 192 | ); 193 | 194 | let oscrecvip = String::new() 195 | + try_opt_resbox!( 196 | try_opt_resbox!(obj.get("oscrecvip"), "'oscrecvip' not found!").as_string(), 197 | "'oscrecvip' not a string!" 198 | ); 199 | 200 | let oscsendip = String::new() 201 | + try_opt_resbox!( 202 | try_opt_resbox!(obj.get("oscsendip"), "'oscsendip' not found!").as_string(), 203 | "'oscsendip' not a string!" 204 | ); 205 | 206 | let oscsocket = try!(UdpSocket::bind(&oscrecvip[..])); 207 | 208 | // for sending, bind to this. if we bind to localhost, we can't 209 | // send messages to other machines. 210 | 211 | let oscsendsocket = try!(UdpSocket::bind("0.0.0.0:0")); 212 | let wsos = try!(oscsendsocket.try_clone()); 213 | let wsoscsendip = oscsendip.clone(); 214 | 215 | let cup = Box::new(SendOscMsg { 216 | oscsendsocket: wsos, 217 | oscsendip: wsoscsendip, 218 | }); 219 | 220 | println!("websockets port: {}", websockets_port); 221 | let control_server = try!(tp::websocketserver::start( 222 | guistring.as_str(), 223 | cup, 224 | ip.as_str(), 225 | websockets_port.as_str(), 226 | false, 227 | )); 228 | 229 | //"../touchpage/example/index.html" 230 | let htmltemplate = match htmlfilename { 231 | Some(fname) => match load_string(fname) { 232 | Ok(s) => Some(s), 233 | Err(_) => { 234 | println!("no html template, using default."); 235 | None 236 | } 237 | }, 238 | None => None, 239 | }; 240 | 241 | tp::webserver::start( 242 | "localhost", 243 | http_port.as_str(), 244 | websockets_port.as_str(), 245 | htmltemplate, 246 | false, 247 | ); 248 | 249 | println!("after startwebserver"); 250 | match oscmain(oscsocket, &control_server) { 251 | Err(e) => println!("oscmain exited with error: {:?}", e), 252 | Ok(_) => (), 253 | }; 254 | 255 | Ok(()) 256 | } 257 | 258 | // TODO: 259 | // how should osc messages be structured? 260 | // - seperate messages for each control attribute? 261 | // - named pairs, attrib + amount 262 | // - positional: 263 | // I'm tending towards the named pairs. But, look at the client code and 264 | // see if that would be an undue hardship. 265 | 266 | fn ctrl_update_to_osc(um: &cu::UpdateMsg, ci: &cn::ControlInfo) -> Result, Error> { 267 | match um { 268 | &cu::UpdateMsg::Button { 269 | control_id: ref id, 270 | label: ref opt_lab, 271 | state: ref st, 272 | } => { 273 | // find the control in the map. 274 | match ci.get_name(&id) { 275 | Some(oscname) => { 276 | let mut args = Vec::new(); 277 | if let &Some(ref state) = st { 278 | args.push(match state { 279 | &cu::PressState::Pressed => osc::Argument::s("pressed"), 280 | &cu::PressState::Unpressed => osc::Argument::s("unpressed"), 281 | }) 282 | }; 283 | 284 | if let &Some(ref lb) = opt_lab { 285 | args.push(osc::Argument::s("label")); 286 | args.push(osc::Argument::s(&lb[..])); 287 | }; 288 | 289 | let msg = osc::Message { 290 | path: oscname.as_str(), 291 | arguments: args, 292 | }; 293 | msg.serialize() 294 | } 295 | None => Err(Error::new(ErrorKind::NotFound, "osc id not found!")), 296 | } 297 | } 298 | &cu::UpdateMsg::Slider { 299 | control_id: ref id, 300 | label: ref lb, 301 | state: ref st, 302 | location: ref loc, 303 | } => match ci.get_name(&id) { 304 | Some(oscname) => { 305 | let mut args = Vec::new(); 306 | if let &Some(ref state) = st { 307 | args.push(match state { 308 | &cu::PressState::Pressed => osc::Argument::s("pressed"), 309 | &cu::PressState::Unpressed => osc::Argument::s("unpressed"), 310 | }); 311 | }; 312 | if let &Some(ref location) = loc { 313 | let l = *location as f32; 314 | args.push(osc::Argument::s("location")); 315 | args.push(osc::Argument::f(l)); 316 | }; 317 | if let &Some(ref label) = lb { 318 | args.push(osc::Argument::s("label")); 319 | args.push(osc::Argument::s(&label[..])); 320 | }; 321 | 322 | let msg = osc::Message { 323 | path: oscname.as_str(), 324 | arguments: args, 325 | }; 326 | msg.serialize() 327 | } 328 | None => Err(Error::new(ErrorKind::NotFound, "osc id not found!")), 329 | }, 330 | &cu::UpdateMsg::XY { 331 | control_id: ref id, 332 | label: ref lb, 333 | state: ref st, 334 | location: ref loc, 335 | } => match ci.get_name(&id) { 336 | Some(oscname) => { 337 | let mut args = Vec::new(); 338 | if let &Some(ref state) = st { 339 | args.push(match state { 340 | &cu::PressState::Pressed => osc::Argument::s("pressed"), 341 | &cu::PressState::Unpressed => osc::Argument::s("unpressed"), 342 | }); 343 | }; 344 | if let &Some(ref location) = loc { 345 | let (lx, ly) = *location as (f32, f32); 346 | args.push(osc::Argument::s("locx")); 347 | args.push(osc::Argument::f(lx)); 348 | args.push(osc::Argument::s("locy")); 349 | args.push(osc::Argument::f(ly)); 350 | }; 351 | if let &Some(ref label) = lb { 352 | args.push(osc::Argument::s("label")); 353 | args.push(osc::Argument::s(&label[..])); 354 | }; 355 | 356 | let msg = osc::Message { 357 | path: oscname.as_str(), 358 | arguments: args, 359 | }; 360 | msg.serialize() 361 | } 362 | None => Err(Error::new(ErrorKind::NotFound, "osc id not found!")), 363 | }, 364 | &cu::UpdateMsg::Label { 365 | control_id: ref id, 366 | label: ref labtext, 367 | } => match ci.get_name(&id) { 368 | Some(oscname) => { 369 | let mut args = Vec::new(); 370 | args.push(osc::Argument::s("label")); 371 | args.push(osc::Argument::s(&labtext[..])); 372 | let msg = osc::Message { 373 | path: oscname.as_str(), 374 | arguments: args, 375 | }; 376 | msg.serialize() 377 | } 378 | None => Err(Error::new(ErrorKind::NotFound, "osc id not found!")), 379 | }, 380 | } 381 | } 382 | 383 | // TODO: find the control itself and check its type. 384 | // then build an update message based on that type. 385 | 386 | // building the update message based on type: 387 | // - create an update message with all None 388 | // - make a function that takes the args array and an index. 389 | // - check for the various things at the index. 390 | // - recursively call self with updated update message. 391 | 392 | // wow this code is hideous! do not look! 393 | fn parse_osc_control_update( 394 | om: &osc::Message, 395 | arg_index: usize, 396 | update: cu::UpdateMsg, 397 | ) -> Result> { 398 | if arg_index >= om.arguments.len() { 399 | Ok(update) 400 | } else { 401 | match om.arguments[arg_index] { 402 | osc::Argument::s("pressed") => { 403 | let mut newupd = update.clone(); 404 | match newupd { 405 | cu::UpdateMsg::Button { ref mut state, .. } => { 406 | *state = Some(cu::PressState::Pressed); 407 | } 408 | cu::UpdateMsg::Slider { ref mut state, .. } => { 409 | *state = Some(cu::PressState::Pressed); 410 | } 411 | _ => (), 412 | }; 413 | parse_osc_control_update(om, arg_index + 1, newupd) 414 | } 415 | osc::Argument::s("unpressed") => { 416 | let mut newupd = update.clone(); 417 | match newupd { 418 | cu::UpdateMsg::Button { ref mut state, .. } => { 419 | *state = Some(cu::PressState::Unpressed); 420 | } 421 | cu::UpdateMsg::Slider { ref mut state, .. } => { 422 | *state = Some(cu::PressState::Unpressed); 423 | } 424 | _ => (), 425 | }; 426 | parse_osc_control_update(om, arg_index + 1, newupd) 427 | } 428 | osc::Argument::s("location") => { 429 | if om.arguments.len() <= arg_index + 1 { 430 | Err(Box::new(Error::new( 431 | ErrorKind::Other, 432 | "location should be followed by a number between 0.0 and 1.0!", 433 | ))) 434 | } else { 435 | match &om.arguments[arg_index + 1] { 436 | &osc::Argument::f(loc) => { 437 | let mut newupd = update.clone(); 438 | match newupd { 439 | cu::UpdateMsg::Slider { 440 | ref mut location, .. 441 | } => { 442 | *location = Some(loc as f64); 443 | } 444 | _ => (), 445 | }; 446 | parse_osc_control_update(om, arg_index + 2, newupd) 447 | } 448 | _ => Err(Box::new(Error::new( 449 | ErrorKind::Other, 450 | "location should be followed by a number between 0.0 and 1.0!", 451 | ))), 452 | } 453 | } 454 | } 455 | osc::Argument::s("label") => { 456 | if om.arguments.len() <= arg_index + 1 { 457 | Err(Box::new(Error::new( 458 | ErrorKind::Other, 459 | "'label' should be followed by a string!", 460 | ))) 461 | } else { 462 | match &om.arguments[arg_index + 1] { 463 | &osc::Argument::s(txt) => { 464 | let mut newupd = update.clone(); 465 | match newupd { 466 | cu::UpdateMsg::Button { ref mut label, .. } => { 467 | *label = Some(txt.to_string()); 468 | } 469 | cu::UpdateMsg::Slider { ref mut label, .. } => { 470 | *label = Some(txt.to_string()); 471 | } 472 | cu::UpdateMsg::XY { ref mut label, .. } => { 473 | *label = Some(txt.to_string()); 474 | } 475 | cu::UpdateMsg::Label { ref mut label, .. } => { 476 | *label = txt.to_string(); 477 | } 478 | }; 479 | parse_osc_control_update(om, arg_index + 2, newupd) 480 | } 481 | _ => Err(Box::new(Error::new( 482 | ErrorKind::Other, 483 | "location should be followed by a number between 0.0 and 1.0!", 484 | ))), 485 | } 486 | } 487 | } 488 | _ => Err(Box::new(Error::new(ErrorKind::Other, "unknown keyword!"))), 489 | } 490 | } 491 | } 492 | 493 | fn osc_to_ctrl_update( 494 | om: &osc::Message, 495 | cserver: &cn::ControlNexus, 496 | ) -> Result> { 497 | // find the control by name. 498 | 499 | let updmsg = cserver.make_update_msg(om.path); 500 | 501 | match updmsg { 502 | Some(updmsg_yeah) => parse_osc_control_update(om, 0, updmsg_yeah), 503 | None => { 504 | let msg = format(format_args!("failed to update control: {:?}", om.path)); 505 | Err(Box::new(Error::new(ErrorKind::Other, msg))) 506 | } 507 | } 508 | } 509 | 510 | fn oscmain( 511 | recvsocket: UdpSocket, 512 | control_server: &cn::ControlNexus, 513 | ) -> Result> { 514 | let mut buf = [0; 10000]; 515 | 516 | loop { 517 | let (amt, _) = try!(recvsocket.recv_from(&mut buf)); 518 | 519 | match osc::Message::deserialize(&buf[..amt]) { 520 | Err(e) => println!("invalid osc messsage: {:?}", e), 521 | Ok(inmsg) => { 522 | match osc_to_ctrl_update(&inmsg, control_server) { 523 | Ok(updmsg) => control_server.update(&updmsg), 524 | Err(e) => { 525 | if inmsg.path == "guiconfig" && inmsg.arguments.len() > 0 { 526 | // is this a control config update instead? 527 | match &inmsg.arguments[0] { 528 | &osc::Argument::s(guistring) => { 529 | println!("new control layout recieved!"); 530 | match control_server.load_gui_string(guistring) { 531 | Ok(()) => (), 532 | Err(e) => println!("error loading control layout: {}", e), 533 | } 534 | } 535 | _ => println!("osc decode error: {:?}", e), 536 | } 537 | } 538 | } 539 | }; 540 | 541 | // print received afterwards, I guess for latency savings? 542 | println!("osc message received {} {:?}", inmsg.path, inmsg.arguments); 543 | } 544 | } 545 | } 546 | } 547 | -------------------------------------------------------------------------------- /src/stringerror.rs: -------------------------------------------------------------------------------- 1 | use std::error::Error as StdError; 2 | use std::fmt; 3 | 4 | #[derive(Debug)] 5 | pub struct Error { 6 | message: String, 7 | } 8 | 9 | impl Error { 10 | pub fn new(msg: &str) -> Error { 11 | Error { 12 | message: msg.to_string(), 13 | } 14 | } 15 | } 16 | 17 | pub fn string_box_err(s: &str) -> Box { 18 | Box::new(Error::new(s)) 19 | } 20 | 21 | impl fmt::Display for Error { 22 | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { 23 | self.description().fmt(f) 24 | } 25 | } 26 | 27 | impl StdError for Error { 28 | fn description(&self) -> &str { 29 | &self.message[..] 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/tryopt.rs: -------------------------------------------------------------------------------- 1 | // use std::error; 2 | // use stringerror; 3 | 4 | #[macro_export] 5 | macro_rules! try_opt { 6 | ($e: expr) => { 7 | match $e { 8 | Some(x) => x, 9 | None => return None, 10 | } 11 | }; 12 | } 13 | 14 | #[macro_export] 15 | macro_rules! try_opt_resbox { 16 | ($e: expr, $s: expr) => { 17 | match $e { 18 | Some(x) => x, 19 | None => return Err(stringerror::string_box_err($s)), 20 | // None => return Err(Box::new(stringerror::Error::new($s))), 21 | } 22 | }; 23 | } 24 | 25 | /* 26 | #[macro_export] 27 | macro_rules! try_opt_res { 28 | ($e: expr, $s: expr) => 29 | (match $e { 30 | Some(val) => val, 31 | None => { 32 | let err = Error::new($s) ; 33 | return Err(std::convert::From::from(err)) 34 | }, 35 | }) 36 | } 37 | */ 38 | /* 39 | hmmm not getting why this doesn't work... want it to be like the try! macro. 40 | 41 | macro_rules! try_opt_res { 42 | ($e: expr, $s: expr) => 43 | (match $e { 44 | Some(val) => val, 45 | None => { 46 | let err = Err(Error::new(ErrorKind::Other, $s)) ; 47 | return $crate::result::Result::Err($crate::convert::From::from(err)) 48 | }, 49 | }) 50 | } 51 | */ 52 | --------------------------------------------------------------------------------