├── .gitignore ├── src ├── lib.rs └── bin │ ├── client.rs │ └── server.rs ├── README.md ├── Cargo.toml ├── zombies.proto └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | **/*.rs.bk 3 | .idea/ 4 | src/zombies.rs 5 | src/zombies_grpc.rs 6 | .vscode/ 7 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate futures; 2 | extern crate futures_cpupool; 3 | extern crate protobuf; 4 | extern crate grpc; 5 | extern crate tls_api; 6 | 7 | pub mod zombies; 8 | pub mod zombies_grpc; 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rust Zombies 2 | In the upcoming zombie apocalypse, we're all going to need to be prepared. This is a sample gRPC 3 | service that simulates tracking and analyzing zombie sightings. It's mainly just a thing for me to play 4 | with while I learn Rust. 5 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "rs-zombies" 3 | version = "0.2.0" 4 | authors = ["autodidaddict "] 5 | 6 | [dependencies] 7 | protobuf = "1.4.*" 8 | futures = "0.*" 9 | futures-cpupool = "0.1.*" 10 | tls-api = "0.1.*" 11 | grpc = "0.2.1" 12 | 13 | [build-dependencies] 14 | protoc-rust-grpc = "0.2.1" -------------------------------------------------------------------------------- /zombies.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package zombies; 4 | 5 | service Zombies { 6 | rpc report_sighting(SightingReportRequest) returns (SightingReportResponse); 7 | rpc zombies_nearby(ProximityRequest) returns (ProximityResponse); 8 | } 9 | 10 | message SightingReportRequest { 11 | string name = 1; 12 | Location location = 2; 13 | } 14 | 15 | message SightingReportResponse { 16 | bool accepted = 1; 17 | } 18 | 19 | message ProximityRequest { 20 | Location location = 1; 21 | } 22 | 23 | message ProximityResponse { 24 | repeated Zombie zombies = 1; 25 | } 26 | 27 | message Zombie { 28 | string name = 1; 29 | Location location = 2; 30 | } 31 | 32 | message Location { 33 | float latitude = 1; 34 | float longitude = 2; 35 | } -------------------------------------------------------------------------------- /src/bin/client.rs: -------------------------------------------------------------------------------- 1 | extern crate futures; 2 | extern crate grpc; 3 | extern crate rs_zombies; 4 | 5 | use rs_zombies::zombies_grpc::*; 6 | use rs_zombies::zombies::*; 7 | 8 | 9 | fn main() { 10 | let client = ZombiesClient::new_plain("localhost", 8080, Default::default()).unwrap(); 11 | 12 | let mut req = SightingReportRequest::new(); 13 | req.set_name("bob".to_string()); 14 | 15 | let mut location = Location::new(); 16 | location.latitude = 40.730610; 17 | location.longitude = -73.935242; 18 | req.set_location(location); 19 | 20 | let resp = client.report_sighting(grpc::RequestOptions::new(), req); 21 | println!("{:?}", resp.wait()); 22 | 23 | let mut nearby_req = ProximityRequest::new(); 24 | let mut location = Location::new(); 25 | location.latitude = 40.730610; 26 | location.longitude = -73.935242; 27 | nearby_req.set_location(location); 28 | 29 | let nearby_resp = client.zombies_nearby(grpc::RequestOptions::new(), nearby_req); 30 | match nearby_resp.wait() { 31 | Err(e) => panic!("{:?}", e), 32 | Ok((_, zombies, _)) => println!("{:?}", zombies), 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/bin/server.rs: -------------------------------------------------------------------------------- 1 | extern crate futures; 2 | extern crate futures_cpupool; 3 | 4 | extern crate grpc; 5 | extern crate protobuf; 6 | extern crate rs_zombies; 7 | 8 | use std::thread; 9 | 10 | use rs_zombies::zombies_grpc::*; 11 | use rs_zombies::zombies::*; 12 | 13 | struct ZombiesServiceImpl; 14 | 15 | impl Zombies for ZombiesServiceImpl { 16 | fn report_sighting( 17 | &self, 18 | _m: grpc::RequestOptions, 19 | req: SightingReportRequest, 20 | ) -> grpc::SingleResponse { 21 | let mut r = SightingReportResponse::new(); 22 | 23 | println!( 24 | "Received zombie sighting report of {} at {}, {}", 25 | req.get_name(), 26 | req.get_location().latitude, 27 | req.get_location().longitude 28 | ); 29 | 30 | r.set_accepted(true); 31 | grpc::SingleResponse::completed(r) 32 | } 33 | 34 | fn zombies_nearby( 35 | &self, 36 | _m: grpc::RequestOptions, 37 | _req: ProximityRequest, 38 | ) -> grpc::SingleResponse { 39 | let mut r = ProximityResponse::new(); 40 | 41 | let mut location = Location::new(); 42 | location.latitude = 40.730610; 43 | location.longitude = -73.935242; 44 | 45 | let mut al = Zombie::new(); 46 | al.set_name("Alfred".to_owned()); 47 | al.set_location(location.clone()); 48 | 49 | let mut bob = Zombie::new(); 50 | bob.set_name("Bob".to_owned()); 51 | bob.set_location(location.clone()); 52 | 53 | let vec = vec![al, bob]; 54 | let zombie_list = ::protobuf::RepeatedField::from_vec(vec); 55 | 56 | r.set_zombies(zombie_list); 57 | 58 | grpc::SingleResponse::completed(r) 59 | } 60 | } 61 | 62 | fn main() { 63 | let mut server = grpc::ServerBuilder::new_plain(); 64 | server.http.set_port(8080); 65 | server.add_service(ZombiesServer::new_service_def(ZombiesServiceImpl)); 66 | server.http.set_cpu_pool_threads(4); 67 | let _server = server.build().expect("server"); 68 | 69 | loop { 70 | thread::park(); 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "base64" 3 | version = "0.6.0" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | dependencies = [ 6 | "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 7 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 8 | ] 9 | 10 | [[package]] 11 | name = "byteorder" 12 | version = "1.0.0" 13 | source = "registry+https://github.com/rust-lang/crates.io-index" 14 | 15 | [[package]] 16 | name = "bytes" 17 | version = "0.4.4" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | dependencies = [ 20 | "byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 21 | "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 22 | ] 23 | 24 | [[package]] 25 | name = "cfg-if" 26 | version = "0.1.1" 27 | source = "registry+https://github.com/rust-lang/crates.io-index" 28 | 29 | [[package]] 30 | name = "futures" 31 | version = "0.1.14" 32 | source = "registry+https://github.com/rust-lang/crates.io-index" 33 | 34 | [[package]] 35 | name = "futures-cpupool" 36 | version = "0.1.5" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | dependencies = [ 39 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 40 | "num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 41 | ] 42 | 43 | [[package]] 44 | name = "grpc" 45 | version = "0.2.1" 46 | source = "registry+https://github.com/rust-lang/crates.io-index" 47 | dependencies = [ 48 | "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 49 | "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 50 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 51 | "futures-cpupool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 52 | "httpbis 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 53 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 54 | "protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 55 | "tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 56 | "tls-api-stub 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 57 | "tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 58 | "tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 59 | "tokio-tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 60 | ] 61 | 62 | [[package]] 63 | name = "grpc-compiler" 64 | version = "0.2.1" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | dependencies = [ 67 | "protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 68 | ] 69 | 70 | [[package]] 71 | name = "httpbis" 72 | version = "0.4.1" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | dependencies = [ 75 | "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 76 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 77 | "futures-cpupool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 78 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 79 | "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)", 80 | "tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 81 | "tls-api-stub 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 82 | "tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 83 | "tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 84 | "tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 85 | "tokio-tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 86 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 87 | ] 88 | 89 | [[package]] 90 | name = "iovec" 91 | version = "0.1.0" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | dependencies = [ 94 | "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", 95 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 96 | ] 97 | 98 | [[package]] 99 | name = "kernel32-sys" 100 | version = "0.2.2" 101 | source = "registry+https://github.com/rust-lang/crates.io-index" 102 | dependencies = [ 103 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 104 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 105 | ] 106 | 107 | [[package]] 108 | name = "lazycell" 109 | version = "0.4.0" 110 | source = "registry+https://github.com/rust-lang/crates.io-index" 111 | 112 | [[package]] 113 | name = "libc" 114 | version = "0.2.24" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | 117 | [[package]] 118 | name = "log" 119 | version = "0.3.8" 120 | source = "registry+https://github.com/rust-lang/crates.io-index" 121 | 122 | [[package]] 123 | name = "mio" 124 | version = "0.6.9" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | dependencies = [ 127 | "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 128 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 129 | "lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 130 | "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", 131 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 132 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)", 134 | "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 135 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 136 | ] 137 | 138 | [[package]] 139 | name = "miow" 140 | version = "0.2.1" 141 | source = "registry+https://github.com/rust-lang/crates.io-index" 142 | dependencies = [ 143 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 144 | "net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)", 145 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 146 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 147 | ] 148 | 149 | [[package]] 150 | name = "net2" 151 | version = "0.2.29" 152 | source = "registry+https://github.com/rust-lang/crates.io-index" 153 | dependencies = [ 154 | "cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 155 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 156 | "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", 157 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 158 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 159 | ] 160 | 161 | [[package]] 162 | name = "num_cpus" 163 | version = "1.6.2" 164 | source = "registry+https://github.com/rust-lang/crates.io-index" 165 | dependencies = [ 166 | "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", 167 | ] 168 | 169 | [[package]] 170 | name = "protobuf" 171 | version = "1.4.1" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | dependencies = [ 174 | "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 175 | ] 176 | 177 | [[package]] 178 | name = "protoc" 179 | version = "1.4.1" 180 | source = "registry+https://github.com/rust-lang/crates.io-index" 181 | dependencies = [ 182 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 183 | ] 184 | 185 | [[package]] 186 | name = "protoc-rust" 187 | version = "1.4.1" 188 | source = "registry+https://github.com/rust-lang/crates.io-index" 189 | dependencies = [ 190 | "protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 191 | "protoc 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 192 | "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 193 | ] 194 | 195 | [[package]] 196 | name = "protoc-rust-grpc" 197 | version = "0.2.1" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | dependencies = [ 200 | "grpc-compiler 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 201 | "protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 202 | "protoc 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 203 | "protoc-rust 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 204 | "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 205 | ] 206 | 207 | [[package]] 208 | name = "rand" 209 | version = "0.3.15" 210 | source = "registry+https://github.com/rust-lang/crates.io-index" 211 | dependencies = [ 212 | "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", 213 | ] 214 | 215 | [[package]] 216 | name = "rs-zombies" 217 | version = "0.2.0" 218 | dependencies = [ 219 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 220 | "futures-cpupool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 221 | "grpc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 222 | "protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 223 | "protoc-rust-grpc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 224 | "tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 225 | ] 226 | 227 | [[package]] 228 | name = "safemem" 229 | version = "0.2.0" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | 232 | [[package]] 233 | name = "scoped-tls" 234 | version = "0.1.0" 235 | source = "registry+https://github.com/rust-lang/crates.io-index" 236 | 237 | [[package]] 238 | name = "slab" 239 | version = "0.3.0" 240 | source = "registry+https://github.com/rust-lang/crates.io-index" 241 | 242 | [[package]] 243 | name = "tempdir" 244 | version = "0.3.5" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | dependencies = [ 247 | "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 248 | ] 249 | 250 | [[package]] 251 | name = "tls-api" 252 | version = "0.1.8" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | dependencies = [ 255 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 256 | ] 257 | 258 | [[package]] 259 | name = "tls-api-stub" 260 | version = "0.1.8" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | dependencies = [ 263 | "tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 264 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 265 | ] 266 | 267 | [[package]] 268 | name = "tokio-core" 269 | version = "0.1.8" 270 | source = "registry+https://github.com/rust-lang/crates.io-index" 271 | dependencies = [ 272 | "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 273 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 274 | "iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 275 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 276 | "mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)", 277 | "scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 278 | "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 279 | "tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 280 | ] 281 | 282 | [[package]] 283 | name = "tokio-io" 284 | version = "0.1.2" 285 | source = "registry+https://github.com/rust-lang/crates.io-index" 286 | dependencies = [ 287 | "bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 288 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 289 | "log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 290 | ] 291 | 292 | [[package]] 293 | name = "tokio-timer" 294 | version = "0.1.2" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | dependencies = [ 297 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 298 | "slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 299 | ] 300 | 301 | [[package]] 302 | name = "tokio-tls-api" 303 | version = "0.1.8" 304 | source = "registry+https://github.com/rust-lang/crates.io-index" 305 | dependencies = [ 306 | "futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)", 307 | "tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 308 | "tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 309 | "tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 310 | ] 311 | 312 | [[package]] 313 | name = "void" 314 | version = "1.0.2" 315 | source = "registry+https://github.com/rust-lang/crates.io-index" 316 | 317 | [[package]] 318 | name = "winapi" 319 | version = "0.2.8" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | 322 | [[package]] 323 | name = "winapi-build" 324 | version = "0.1.1" 325 | source = "registry+https://github.com/rust-lang/crates.io-index" 326 | 327 | [[package]] 328 | name = "ws2_32-sys" 329 | version = "0.2.1" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | dependencies = [ 332 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 333 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 334 | ] 335 | 336 | [metadata] 337 | "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" 338 | "checksum byteorder 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c40977b0ee6b9885c9013cd41d9feffdd22deb3bb4dc3a71d901cc7a77de18c8" 339 | "checksum bytes 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8b24f16593f445422331a5eed46b72f7f171f910fead4f2ea8f17e727e9c5c14" 340 | "checksum cfg-if 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c47d456a36ebf0536a6705c83c1cbbcb9255fbc1d905a6ded104f479268a29" 341 | "checksum futures 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4b63a4792d4f8f686defe3b39b92127fea6344de5d38202b2ee5a11bbbf29d6a" 342 | "checksum futures-cpupool 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a283c84501e92cade5ea673a2a7ca44f71f209ccdd302a3e0896f50083d2c5ff" 343 | "checksum grpc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fc6251c5d191eb0d122a4b4fdc24dfa0095b4f54e1f70de5c3913e0332054662" 344 | "checksum grpc-compiler 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b80ef06aa3e174f24eb688358e83afc50e328798de258b29e8abd27d6b9fc3c" 345 | "checksum httpbis 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "73dde194d197eaa5b49bb58d212ed4a99a713cf47fc77a9d0471b76c0f73fcf0" 346 | "checksum iovec 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "29d062ee61fccdf25be172e70f34c9f6efc597e1fb8f6526e8437b2046ab26be" 347 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 348 | "checksum lazycell 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce12306c4739d86ee97c23139f3a34ddf0387bbf181bc7929d287025a8c3ef6b" 349 | "checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc" 350 | "checksum log 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "880f77541efa6e5cc74e76910c9884d9859683118839d6a1dc3b11e63512565b" 351 | "checksum mio 0.6.9 (registry+https://github.com/rust-lang/crates.io-index)" = "9e965267d4d58496fc4f740e9861118367f13570cadf66316ed2c3f2f14d87c7" 352 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 353 | "checksum net2 0.2.29 (registry+https://github.com/rust-lang/crates.io-index)" = "bc01404e7568680f1259aa5729539f221cb1e6d047a0d9053cab4be8a73b5d67" 354 | "checksum num_cpus 1.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "aec53c34f2d0247c5ca5d32cca1478762f301740468ee9ee6dcb7a0dd7a0c584" 355 | "checksum protobuf 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "568a15e4d572d9a5e63ae3a55f84328c984842887db179b40b4cc6a608bac6a4" 356 | "checksum protoc 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88248d7f27c9b434339e2f233f25a651dd51933e58cfeb3d550949561f796738" 357 | "checksum protoc-rust 1.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6d89c8451ff27077342128810e2a0e3fbf1940ac088f1bb35ad07009395381ea" 358 | "checksum protoc-rust-grpc 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "68bc8fa6685f274fe41d6d47e3c7d702662ff7c268e5bfa8d5e7a809784418c6" 359 | "checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" 360 | "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" 361 | "checksum scoped-tls 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f417c22df063e9450888a7561788e9bd46d3bb3c1466435b4eccb903807f147d" 362 | "checksum slab 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b4fcaed89ab08ef143da37bc52adbcc04d4a69014f4c1208d6b51f0c47bc23" 363 | "checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" 364 | "checksum tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "80fe001fae047bec908b0299fae208afddcb70b2cac2411487ba7db7da4ab966" 365 | "checksum tls-api-stub 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3d9050335baf0b7896e6fa82d7f57200ebd75fabfb4e6058bd3f7bcd0885202d" 366 | "checksum tokio-core 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6a20ba4738d283cac7495ca36e045c80c2a8df3e05dd0909b17a06646af5a7ed" 367 | "checksum tokio-io 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c2c3ce9739f7387a0fa65b5421e81feae92e04d603f008898f4257790ce8c2db" 368 | "checksum tokio-timer 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6131e780037787ff1b3f8aad9da83bca02438b72277850dd6ad0d455e0e20efc" 369 | "checksum tokio-tls-api 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "319c56c76edd75bb6c9115dc6a9682d29ddf4a0eb929a5b9aeea4ee3980c95aa" 370 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 371 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 372 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 373 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 374 | --------------------------------------------------------------------------------