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给的代码都是编译错误的,网上现成代码太少
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
相关推荐

你 发表评论:
欢迎