仕事で使うわけでは今のところないけど触ってみてる。コンパイルエラーが凄くてそれ通りに書いていくと動くというのが良かった。cargoコマンドも少ししか触っていないけど便利。マスコットキャラクターのカニが可愛い。
Linuxにも入っていてるらしいのでとても楽しみ。
LinuxカーネルのRustでは、C言語に慣れ親しんだ開発者にも理解しやすいようなスタイルが採用されています。例えば、関数型言語のスタイルは避けられていて、コードレビューで修正が求められたコードの例 pic.twitter.com/a1zFt4rYtv
— FUJITA Tomonori (@brewaddict) 2025年1月2日
ソースコード
AIが優秀というのもあるけど出てくるコード自体は理解がしやすくて書きやすかった。ただ所有権とか出てくる手前で多分ここから難しくなっていくんだろうなと思ったりした。 Firecrackerのコードを読めるくらいにはRustに慣れておきたいので読んで書いてをやっていく。
use std::net::{TcpListener, TcpStream}; use std::io::{Read, Write}; use std::thread; fn handle_client(mut stream: TcpStream) { let mut buffer = [0; 512]; loop { match stream.read(&mut buffer) { Ok(0) => { println!("Client disconnected"); break; } Ok(n) => { println!("Received: {}", String::from_utf8_lossy(&buffer[..n])); if let Err(e) = stream.write_all(&buffer[..n]) { eprintln!("Failed to send data: {}", e); break; } } Err(e) => { eprintln!("Error reading from stream: {}", e); break; } } } } fn main() -> std::io::Result<()> { let listener = TcpListener::bind("127.0.0.1:8080")?; println!("Server running on 127.0.0.1:8080"); for stream in listener.incoming() { match stream { Ok(stream) => { thread::spawn(move || handle_client(stream)); } Err(e) => { eprintln!("Connection failed: {}", e); } } } Ok(()) }