- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎无法让编译器让我包装 Tokio AsyncRead:
use std::io::Result;
use core::pin::Pin;
use core::task::{Context, Poll};
use tokio::io::AsyncRead;
struct Wrapper<T: AsyncRead>{
inner: T
}
impl<T: AsyncRead> AsyncRead for Wrapper<T> {
fn poll_read(
self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut [u8]
) -> Poll<Result<usize>> {
self.inner.poll_read(cx, buf)
}
}
这似乎应该编译,但编译器提示我没有包含正确的特征绑定(bind),即使 poll_read
可通过 AsyncRead 获得:Playground Link
error[E0599]: no method named `poll_read` found for type parameter `T` in the current scope
--> src/lib.rs:17:20
|
17 | self.inner.poll_read(cx, buf)
| ^^^^^^^^^ method not found in `T`
|
= help: items from traits can only be used if the type parameter is bounded by the trait
我做错了什么?
最佳答案
看self
在 poll_read
的签名中:
fn poll_read(
self: Pin<&mut Self>, // Self is pinned!
cx: &mut Context,
buf: &mut [u8]
) -> Poll<Result<usize>>
Self 是固定的,意思是 poll_read
只能在 Pin<&mut T>
上调用的! self.inner
类型为 T
这就是编译器找不到 poll_read
的原因在上面。要解决此问题,我们必须以某种方式固定访问该字段。
有一个 whole section rust Pin
关于此的文档和 whole crate致力于解决这个问题。
关于rust - 包装 AsyncRead,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62032153/
我似乎无法让编译器让我包装 Tokio AsyncRead: use std::io::Result; use core::pin::Pin; use core::task::{Context, Po
我正在运行一个 AsyncReader 来打开另一个应用程序正在下载的共享 MPG 文件(渐进式下载)。共享 MPG 文件是使用 FILE-SHARE-READ | 创建的文件共享删除 | FILE-
我正在尝试构建一个从 SFTP 服务器提取文件并将其上传到 S3 的服务。 对于 SFTP 部分,我使用 async-ssh2 ,这给了我一个实现 futures::AsyncRead 的文件处理程序
我正在尝试理解 Rust 中的异步 I/O。以下代码基于 Katharina Fey 的片段 Jan 2019 talk这对我有用: use futures::future::Future; use
我正在尝试包装 AsyncRead在另一个 AsyncRead (并对其进行一些数据处理)。但是,当尝试存储 Future 时的 .read()我遇到终身问题:self has an anonymou
我无法编译一个简单的应用程序来测试 tokio-codec。 tokio::net::tcp::stream::TcpStream 实现 AsyncRead 和 -Write。 但是当我尝试编译下面的
我是一名优秀的程序员,十分优秀!