本文小編為大家詳細(xì)介紹“Rust中的smol使用實(shí)例分析”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Rust中的smol使用實(shí)例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

武平網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),武平網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為武平1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)網(wǎng)站制作要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的武平做網(wǎng)站的公司定做!
簡(jiǎn)介
use std::net::{TcpListener, TcpStream};use futures::io;use smol::{Async, Task};/// 原封不動(dòng)返回輸入流async fn echo(stream: Async<TcpStream>) -> io::Result<()> {io::copy(&stream, &mut &stream).await?;Ok(())}fn main() -> io::Result<()> {smol::run(async {// 創(chuàng)建listenerlet listener = Async::<TcpListener>::bind("127.0.0.1:7000")?;println!("Listening on {}", listener.get_ref().local_addr()?);println!("Now start a TCP client.");// 接受客戶端請(qǐng)求loop {let (stream, peer_addr) = listener.accept().await?;println!("Accepted client: {}", peer_addr);// 起一個(gè)task回應(yīng)客戶端Task::spawn(echo(stream)).unwrap().detach();}})}
然后是一個(gè)客戶端
use std::net::TcpStream;use futures::io;use futures::prelude::*;use smol::Async;fn main() -> io::Result<()> {smol::run(async {// 包裝出異步的標(biāo)準(zhǔn)輸入/輸出let stdin = smol::reader(std::io::stdin());let mut stdout = smol::writer(std::io::stdout());// 連接服務(wù)器端let stream = Async::<TcpStream>::connect("127.0.0.1:7000").await?;println!("Connected to {}", stream.get_ref().peer_addr()?);println!("Type a message and hit enter!\n");// stdin -> 服務(wù)器;服務(wù)器返回 -> stdoutfuture::try_join(io::copy(stdin, &mut &stream),io::copy(&stream, &mut stdout),).await?;Ok(())})}
use std::time::{Duration, Instant};use anyhow::{Error, Result};fn main() -> Result<()> {smol::run(async {// 使用async-std的sleeplet start = Instant::now();println!("Sleeping using async-std...");async_std::task::sleep(Duration::from_secs(1)).await;println!("Woke up after {:?}", start.elapsed());// 使用tokio的sleeplet start = Instant::now();println!("Sleeping using tokio...");tokio::time::delay_for(Duration::from_secs(1)).await;println!("Woke up after {:?}", start.elapsed());Ok(())})}
[dependencies]smol = { version = "0.1", features = ["tokio02"] }讀到這里,這篇“Rust中的smol使用實(shí)例分析”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞標(biāo)題:Rust中的smol使用實(shí)例分析
標(biāo)題URL:http://www.js-pz168.com/article2/jgdjic.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開(kāi)發(fā)、企業(yè)建站、自適應(yīng)網(wǎng)站、建站公司、搜索引擎優(yōu)化、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)