Giordani L. Rust Projects. Write A Redis Clone.... Access

let key = match &args[0] RespValue::BulkString(Some(k)) => String::from_utf8_lossy(k).to_string(), _ => return RespValue::Error("ERR invalid key".to_string()), ;

pub async fn run(&self) -> Result<(), Box<dyn std::error::Error>> { loop { let (socket, addr) = self.listener.accept().await?; let store = self.store.clone(); tokio::spawn(async move { if let Err(e) = handle_client(socket, store).await { eprintln!("Error handling client {}: :?", addr, e); } }); } } } Giordani L. Rust Projects. Write a Redis Clone....

> SET mykey "Hello World" OK

fn read_until_crlf(&self, start: usize) -> Result<(String, usize), String> let mut pos = start; while pos + 1 < self.buffer.len() if self.buffer[pos] == b'\r' && self.buffer[pos + 1] == b'\n' let string = String::from_utf8_lossy(&self.buffer[start..pos]).to_string(); let bytes_read = pos + 2 - start; return Ok((string, bytes_read)); pos += 1; Err("Incomplete frame".to_string()) return RespValue::Error("ERR invalid key".to_string())