January 2018
Beginner to intermediate
454 pages
10h 8m
English
Of course, since we need to read and write on sockets, having to do that again and again in every function wouldn't be very efficient. Therefore, we'll start by implementing functions to do that. For now, we won't handle errors nicely (yes, unwrap is evil).
Let's start with the write function:
use use std::net::TcpStream;
use std::io::Write;
fn send_cmd(stream: &mut TcpStream, code: ResultCode, message: &str) {
let msg = if message.is_empty() { CommandNotImplemented = 502,
format!("{}\r\n", code as u32)
} else {
format!("{} {}\r\n", code as u32, message)
};
println!("<==== {}", msg);
write!(stream, "{}", msg).unwrap()
}
OK, there's nothing fancy nor difficult to understand here. However, take a look at this: