grpc-rust

Rust implementation of gRPC

Github stars Tracking Chart

grpc-rust

Build Status
License
crates.io

Rust implementation of gRPC protocol, under development.

Some development questions in FAQ.

Current status

It basically works. See grpc-examples/src/bin/greeter_{client,server}.rs. It can be tested
for example with go client:

# start greeter server implemented in rust
$ cargo run --bin greeter_server

# ... or start greeter server implemented in go
$ go get -u google.golang.org/grpc/examples/helloworld/greeter_client
$ greeter_server

# start greeter client implemented in rust
$ cargo run --bin greeter_client rust
> message: "Hello rust"

# ... or start greeter client implemented in go
$ go get -u google.golang.org/grpc/examples/helloworld/greeter_client
$ greeter_client rust
> 2016/08/19 05:44:45 Greeting: Hello rust

Client and server are implemented asynchronously.

How to generate rust code

There are two ways to generate rust code from .proto files

Invoke protoc programmatically with protoc-rust-grpc crate

(Recommended)

Have a look at readme in
protoc-rust-grpc crate.

With protoc command and protoc-gen-rust-grpc plugin

Readme

Use generated protos in your project:

In Cargo.toml:

[dependencies]
grpc            = "~0.6"
protobuf        = "~2"
futures         = "~0.1"
futures-cpupool = "~0.1"

[build-dependencies]
protoc-rust-grpc = "0.6.1"

In lib.rs or main.rs (or any other submodule):

extern crate protobuf;
extern crate grpc;
extern crate futures;
extern crate futures_cpupool;

pub mod myproto;
pub mod myproto_grpc;

TODO

  • Fix performance
  • More tests
  • In particular, add more compatibility tests, they live in interop directory
  • Fix all TODO in sources
  • grpc-rs — alternative implementation of gRPC in Rust,
    a wrapper to C++ implementation
  • httpbis — implementation of HTTP/2,
    which is used by this implementation of gRPC
  • rust-protobuf — implementation of Google Protocol Buffers

Main metrics

Overview
Name With Ownerstepancheg/grpc-rust
Primary LanguageRust
Program languageRust (Language Count: 3)
Platform
License:MIT License
所有者活动
Created At2015-06-28 19:26:35
Pushed At2024-04-08 23:37:29
Last Commit At2024-04-09 00:37:29
Release Count24
Last Release Namev0.8.3 (Posted on )
First Release Namev0.1.2 (Posted on )
用户参与
Stargazers Count1.4k
Watchers Count31
Fork Count124
Commits Count682
Has Issues Enabled
Issues Count138
Issue Open Count59
Pull Requests Count33
Pull Requests Open Count1
Pull Requests Close Count28
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private