Rust 如何通过futures:stream::stream发送bytes::bytes::bytes?

Rust 如何通过futures:stream::stream发送bytes::bytes::bytes?,rust,future,rust-tokio,Rust,Future,Rust Tokio,我正在尝试基于编写TCP服务器 当我尝试发送缓冲区时,编译器返回错误0277 我的代码:() error[E0277]:绑定的特征“bytes::bytes::bytes:tokio::prelude::Stream”不满足 -->src/main.rs:25:28 | 25 | writer.send_all(&mut buf);//错误:E0277 |^^^^^^^^^特性“tokio::prelude::Stream”未为“bytes::bytes::bytes”实现` | =注意:由于“

我正在尝试基于编写TCP服务器

当我尝试发送缓冲区时,编译器返回错误0277

我的代码:()

error[E0277]:绑定的特征“bytes::bytes::bytes:tokio::prelude::Stream”不满足
-->src/main.rs:25:28
|
25 | writer.send_all(&mut buf);//错误:E0277
|^^^^^^^^^特性“tokio::prelude::Stream”未为“bytes::bytes::bytes”实现`
|
=注意:由于“&mut bytes::bytes::bytes::bytes”的“tokio::prelude::Stream”impl中的要求,因此需要`

我解决了这个问题

让我们。
extern crate tokio; // 0.1.22

use tokio::codec::{BytesCodec, Decoder};
use tokio::net::TcpListener;
use tokio::prelude::*;

use bytes::Bytes; // 0.4.12

fn main() {
    let addr = "0.0.0.0:1502".parse().unwrap();
    let mut socket = TcpListener::bind(&addr).unwrap();

    let done = socket
        .incoming()
        .map_err(|e| println!("failed to accept socket; error = {:?}", e))
        .for_each(move |socket| {
            let framed = BytesCodec::new().framed(socket);
            let (writer, reader) = framed.split();

            let processor = reader
                .for_each(move |bytes| {
                    println!("bytes: {:?}", bytes);
                    let mut data_to_send = [0 as u8; 1024];
                    let buf = Bytes::from(&data_to_send[..1024]);
                    writer.send_all(&mut buf);
                    Ok(())
                })
                .and_then(|()| Ok(()))
                .or_else(|err| Err(err))
                .then(|result| Ok(()));
            tokio::spawn(processor)
        });
    tokio::run(done);
}
extern crate tokio; // 0.1.22

use tokio::codec::{BytesCodec, Decoder};
use tokio::net::TcpListener;
use tokio::prelude::*;

use bytes::Bytes; // 0.4.12

fn main() {
    let addr = "0.0.0.0:1502".parse().unwrap();
    let mut socket = TcpListener::bind(&addr).unwrap();

    let done = socket
        .incoming()
        .map_err(|e| println!("failed to accept socket; error = {:?}", e))
        .for_each(move |socket| {
            let framed = BytesCodec::new().framed(socket);
            let (mut writer, reader) = framed.split();

            let processor = reader
                .for_each(move |bytes| {
                    println!("bytes: {:?}", bytes);
                    let mut data_to_send = [0 as u8; 1024];
                    let buf = Bytes::from(&data_to_send[..1024]);
                    writer.start_send(buf).unwrap();
                    writer.poll_complete().unwrap();
                    Ok(())
                })
                .and_then(|()| Ok(()))
                .or_else(|err| Err(err))
                .then(|result| Ok(()));

            tokio::spawn(processor)
        });

    tokio::run(done);
}