use anyhow::{anyhow, Result}; use s2n_quic::Server;
const CERT_PEM: &str = include_str!("../fixtures/cert.pem"); const KEY_PEM: &str = include_str!("../fixtures/key.pem");
#[tokio::main] async fn main() -> Result<()> { let addr = "127.0.0.1:4433"; let mut server = Server::builder() .with_tls((CERT_PEM, KEY_PEM))? .with_io(addr)? .start() .map_err(|e| anyhow!("Failed to start server. Error:{e}"))?;
println!("Listening on {}", addr);
while let Some(mut conn) = server.accept().await {
println!("Accepted connection from {}", conn.remote_addr()?);
tokio::spawn(async move{
while let OK(Some(mut stream)) = conn.accept_bidirectional_stream().await {
println!("Accepted bidirectional stream from {}",stream.connection().remote_addr()?);
//echo back
tokio::spawn(async move {
while let OK(Some(data)) = stream.receive().await {
stream.send(data).await?;
}
OK::<(),anyhow::Error>(())
});
}
OK::<(),anyhow::Error>(())
});
}
}
报错信息:
error[E0670]: async fn
is not permitted in Rust 2015
--> server.rs:8:1
|
8 | async fn main() -> Result<()> {
| ^^^^^ to use async fn
, switch to Rust 2018 or later
|
= help: set edition = "2021"
in Cargo.toml
// 这个我更改了cargo版本也不行
= note: for more on editions, read https://doc.rust-lang.org/edition-guide
error: expected one of !
, )
, ,
, .
, ::
, ?
, {
, or an operator, found keyword move
--> server.rs:21:32
|
21 | tokio::spawn(async move{
| ^^^^ expected one of 8 possible tokens //是move有问题?
error: aborting due to 2 previous errors
评论区
写评论看上去像版本问题
为什么这么低的版本 是库的问题吗 正常来说 toml 里面的新建项目按现在来说都是2021才对