卡卷网
当前位置:卡卷网 / 每日看点 / 正文

Rust 语言未来会怎么样?

作者:卡卷网发布时间:2025-01-17 00:35浏览数量:99次评论数量:0次

今天试了试tokio和thread,对rust彻底失望了

rust无法优雅地实现一个MOBA游戏服务端

rust可以做web,但是做tcp和websocket的时候,无法优雅地“服务端主动向客户端发送消息”


其他语言都行,唯有rust语言实现不了的伪代码:

void Begin() { Socket socket = new Socket(ProtocolType.Tcp,ip, port); socket.Connect(); new Thread(() => { while (true) { byte[] bytes = new byte[1024]; int len = socket.Receive(bytes); } }).Start(); new Thread(() => { while (true) { Thread.Sleep(2000); socket.Send("Hello"); } }).Start(); }

以上为原回答

跑了评论区大佬的代码,没问题,确实实现了伪代码。我决定要学rust了。但我在读循环里加了个写,编译错误。确认了rust是个大坑。果断弃坑。

大佬代码:

use std::time::Duration; use tokio::io; use tokio::io::{AsyncReadExt, AsyncWriteExt}; use tokio::net::TcpStream; #[tokio::main] async fn main() { // 省略了所有错误处理 _ = begin().await; } async fn begin() -> io::Result<()> { let tcp_stream = TcpStream::connect("127.0.0.1:9999").await?; let (mut reader, mut writer) = tcp_stream.into_split(); let rt = tokio::spawn(async move { loop { let mut bs = [0u8; 1024]; _ = reader.read(&mut bs).await.unwrap(); // 省略读取后使用 } }); let st = tokio::spawn(async move { loop { tokio::time::sleep(Duration::from_secs(2)).await; writer.write_all("Hello".as_ref()).await.unwrap(); } }); _ = tokio::try_join!(rt, st)?; Ok(()) }


以上为原回答,半年后捡起rust,请教了知乎大佬后

发现rust没有那么难,应该和Java难度是一个级别的,只是语言太新,chatGPT给的代码都是编译错误的,网上现成代码太少

END

免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。

卡卷网

卡卷网 主页 联系他吧

请记住:卡卷网 Www.Kajuan.Net

欢迎 发表评论:

请填写验证码