There are still a few commands missing before we can see the files in the FTP client. Let's now add the command to print the current directory and to change it.
First of all, we'll need a new attribute for our Client
structure to specify what the current directory is:
use std::path::PathBuf; struct Client { cwd: PathBuf, writer: Writer, }
The cwd
attribute stands for current working directory. We also need to update the Client
constructor accordingly:
impl Client { fn new(writer: Writer) -> Client { Client { cwd: PathBuf::from("/"), writer, } } }
Now, we can add the handler for the PWD
command:
#[async] fn handle_cmd(mut self, cmd: Command) -> Result<Self> { println!("Received command: {:?}", cmd); match cmd { Command::Pwd => { let msg = format!("{}", self.cwd.to_str().unwrap_or("")); if !msg.is_empty() { ...