9个稳定版本

1.2.6 2022年10月17日
1.2.5 2022年10月16日
1.2.2 2022年9月13日
1.1.0 2022年9月13日
1.0.1 2022年9月13日

#388异步

Download history • Rust 包仓库 85/week @ 2024-03-11 • Rust 包仓库 56/week @ 2024-03-18 • Rust 包仓库 37/week @ 2024-03-25 • Rust 包仓库 87/week @ 2024-04-01 • Rust 包仓库 54/week @ 2024-04-08 • Rust 包仓库 37/week @ 2024-04-15 • Rust 包仓库 84/week @ 2024-04-22 • Rust 包仓库 73/week @ 2024-04-29 • Rust 包仓库 123/week @ 2024-05-06 • Rust 包仓库 122/week @ 2024-05-13 • Rust 包仓库 106/week @ 2024-05-20 • Rust 包仓库 74/week @ 2024-05-27 • Rust 包仓库 87/week @ 2024-06-03 • Rust 包仓库 83/week @ 2024-06-10 • Rust 包仓库 65/week @ 2024-06-17 • Rust 包仓库 54/week @ 2024-06-24 • Rust 包仓库

298 每月下载量
hyprsome 中使用

MIT 协议

82KB
1.5K SLoC

ipc-rpc

进程间通信远程过程调用

Crates.io

文档

这个Rust库是servo/ipc-channel的包装器,增加了许多新功能。

  • 默认双向通信。
  • 基于Future的回复机制允许轻松准确地匹配请求和响应。
  • (可选,默认启用)启动时验证服务器和客户端之间消息模式匹配。不再需要调试错误的反序列化。依赖于schemars
  • 简化IPC通道的初始化,适用于常见用例,同时仍允许在更独特的场景中进行更灵活和健壮的动态初始化。

与所有可以运行servo/ipc-channel的内容兼容,截至写作时包括

  • Windows
  • MacOS
  • Linux
  • FreeBSD
  • OpenBSD

此外,servo/ipc-channel支持以下平台,但仅在inprocess模式下,这不能在进程之间进行通信。

  • Android
  • iOS
  • WASI

tokio

此crate使用tokio运行时执行future,并且ipc-rpc的用户必须使用tokio。没有计划添加对其他执行器的支持,但如果对其他执行器的需求足够,可能会改变这一点。

Cargo功能

此crate公开一个功能,message-schema-validation,默认启用。这启用了与schemarscrate相关的功能。启用时,软件将尝试在连接初始化时验证用户消息模式。验证失败不是致命错误,不会导致程序崩溃。错误将在日志中发出,并且可以通过许多函数以编程方式检索此状态,所有函数均称为schema_validated()

如果您决定将无法验证模式视为严重故障,您可以在建立连接后执行程序中添加以下代码行。

服务器

server.schema_validated().await.unwrap().assert_success();

客户端

client.schema_validated().await.unwrap().assert_success();

运行示例

示例包括一个客户端和一个服务器,它们应一起运行。使用它们的顺序是

cargo build --examples
cargo run --example server

服务器在操作过程中启动客户端。

限制

servo/ipc-channel类似,服务器只能服务一个客户端。克服这一限制需要在servo/ipc-channel中进行工作。

依赖项

~8-19MB
~285K SLoC