Skip to main content

simploxide_api_types/
utils.rs

1pub trait CommandSyntax {
2    const COMMAND_BUF_SIZE: usize;
3
4    /// Generate a SimpleX command string from self
5    fn to_command_string(&self) -> String {
6        let mut buf = String::with_capacity(Self::COMMAND_BUF_SIZE);
7        self.append_command_syntax(&mut buf);
8        buf
9    }
10
11    fn append_command_syntax(&self, buf: &mut String);
12}
13
14// TODO: This is a workaround for some syntaxes that don't use optional values in square brackets.
15impl<T: CommandSyntax> CommandSyntax for Option<T> {
16    const COMMAND_BUF_SIZE: usize = T::COMMAND_BUF_SIZE;
17
18    fn append_command_syntax(&self, buf: &mut String) {
19        if let Some(command) = self {
20            command.append_command_syntax(buf);
21        }
22    }
23}