不使用tokio如何使用rust-s3?

3
我希望以最简单和轻量的方式(无需异步操作)使用 rust-s3 crate。默认情况下,此 crate 使用 tokio。因此,我按照 rust-s3README 中所写的做法执行:

使用 default-features = false

  • sync - 无异步运行时,使用 attohttpc 进行 HTTP 请求
因此,在我的 Cargo.toml 文件中,我添加了以下内容:
[dependencies]
rust-s3 = { version = "0.28.1", default-features = false, features = ["sync"] }

当我看到“没有异步运行时”时,我不希望看到tokio作为依赖项被添加。然而,tokio仍在被添加。查看该包的Cargo.toml文件,我发现它有一个(非可选)依赖关系tokio-stream,而tokio-stream又依赖于tokio。这是我项目中输出的结果:
├── tokio-stream v0.1.8
│   ├── futures-core v0.3.19
│   ├── pin-project-lite v0.2.8
│   └── tokio v1.15.0
│       └── pin-project-lite v0.2.8

在我看来,以这种方式编写的包似乎不可能避免将tokio添加为依赖项。我是正确的还是有什么地方我忽略了?


1
似乎是一个疏忽。tokio_stream 依赖似乎只在 src/request.rs 中使用,而该文件仅在启用特性 with-tokio 时才包含,而 sync 没有激活该特性。不过,您可能需要在他们的 Github 上开一个问题来确保。 - Filipe Rodrigues
1个回答

1

我得出的结论是,tokio在默认模式下几乎没有什么东西(没有运行时等),所以即使它作为依赖项被包含在内,它本身也不应该增加太多负担。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接