为何无法在Cloudflare Worker的Socket中使用BufReader?
解决Cloudflare Worker Rust中Socket无法与BufReader配合的问题
问题原因
workers-rs库中Socket对AsyncRead/AsyncWrite trait的实现默认不启用,需要通过feature flag开启对应功能。你看到的源码实现确实存在,但只有在启用io-util feature时才会被编译进项目。
解决方案
1. 修改Cargo.toml启用feature
在项目依赖中,给worker添加io-util feature:
[dependencies] worker = { version = "0.0.26", features = ["io-util"] } # 替换为你实际使用的worker版本号
2. 验证修改后的代码
原代码逻辑无需改动,依赖配置正确后即可正常编译:
use worker::*; use futures::io::BufReader; #[event(fetch)] async fn fetch( _req: Request, _env: Env, _ctx: Context, ) -> Result<Response> { console_error!("Start 1"); console_error_panic_hook::set_once(); // Connect using Worker Socket let soc = Socket::builder() .connect("example.com", 8080)?; let mut buf_reader = BufReader::new(soc); Response::ok("Hello World!") }
补充说明
workers-rs为了最小化编译产物,将非核心功能放在可选feature中,io-util包含了Socket的异步IO trait实现。启用该feature后,编译器就能识别Socket对AsyncRead的实现,从而可以配合futures::io::BufReader使用。
内容的提问来源于stack exchange,提问作者lopass
相关产品推荐
相关产品推荐

