У меня есть структура, которая инкапсулирует структуру File
, и я хочу, чтобы эта структура реализовала черту AsyncRead
, чтобы ее можно было использовать вместо File
в другой части кода:
struct TwoWayFile<'a> {
reader: &'a File,
}
impl<'a> AsyncRead for TwoWayFile<'a> {
fn poll_read(
mut self: Pin<&mut Self>,
cx: &mut Context<'_>,
buf: &mut [u8],
) -> Poll<io::Result<usize>> {
self.reader.poll_read(cx, buf)
}
}
Согласно документации tokio::fs::File
уже реализует tokio::io::AsyncRead
, но компилятор говорит обратное:
error[E0599]: no method named `poll_read` found for reference `&'a tokio::fs::file::File` in the current scope
--> src/main.rs:44:21
|
44 | self.reader.poll_read(cx, buf)
| ^^^^^^^^^ method not found in `&'a tokio::fs::file::File`
Чего здесь не хватает? Почему я не могу вызвать метод, который уже определен для File
?