2 个不稳定版本

0.2.0 2023 年 9 月 27 日
0.1.0 2023 年 9 月 1 日

#4 in #转子

MIT/Apache

7KB
102

Rotors

Latest Version Latest Version Apache 2.0 OR MIT licensed

Rust PROTOcols 没有那个 Pain

我为什么应该使用这个库?

你可能不应该,因为这个库还在开发中,还没有经过严格的审查。

然而,如果你希望有一种更简单的方法在 tonic 项目中使用原生 Rust 类型,这可能会对你有所帮助。

我应该如何使用这个库?

你不需要编写一个 gRPC xyz.proto 文件,也不需要在你的 build.rs 中使用 tonic-build 工具,你只需在代码中使用一个简单的宏,让宏做大部分繁重的工作!

use rotors::rotors;
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct HelloRequest {
    pub name: String,
}

#[derive(Clone, Debug, Deserialize, Serialize)]
pub struct HelloReply {
    pub message: String,
}

rotors! {
    package helloworld;

    service Greeter {
        rpc SayHello (super::HelloRequest) returns (super::HelloReply);
    }
}

rotors!() 宏将定义两个新的 Rust 模块,包含 tonic 客户端和服务器结构。从那时起,一切都将像你习惯的 tonic 一样,只不过你现在可以自由地编写自己的 enum,而不需要 gRPC 需要的繁琐样板代码。

我应该什么时候使用这个库?

当使用 rotors 创建一些现在 不兼容 gRPC 的 RPC 代码时,你应该使用这个库。

另一方面,如果你正在编写一个大型项目,或者想要在运行不同版本软件的实例之间进行通信,甚至是在不同语言中编写的软件,这个 crate 对你来说不会有太多帮助。

依赖项

~5–6.5MB
~118K SLoC