如何使用 Tokio 编写异步方法?

How do I write an async method with Tokio?

我正在尝试编写一个可以连接到远程服务器并交换数据的库。我在 C++ 中使用 Boost::Asio 做到了这一点,并且正在尝试对 Rust 做同样的事情。

我遇到的一个问题是将概念从 Asio 映射到 Tokio,例如 async_write/read,首先是似乎所有 Tokio 示例都要求我用 [=11 替换我的 main() =],而我想将所有异步代码封装在结构和相关实现中。

是否可以在不替换 main() 的情况下使用 Tokio? mio 可能是唯一的方法吗?

您可以使用 Runtime::new() 手动创建运行时,这是 tokio 主宏在幕后所做的事情。它只适用于非常多的应用程序,尤其是那些只是样板的示例。所以宏会自动处理简单的案例。

但是,根据您的库的上下文,提供基于未来的 API 可能更为惯用,然后让应用程序消费者设置运行时。