Привет
Я сделал простой парсер арифметических выражений https://github.com/anton-okolelov/simple-rust-ariphmetic-parser
Во-первых, большая просьба посмотреть код на предмет того, насколько он идеоматично написан с точки зрения Раста. Если не затруднит.
И вопрос еще есть.
для тренировки я бы хотел сделать функцию “parse” С-совместимой, чтобы использовать ее в скриптовых языках.
Функция возвращает результат типа Expression
pub enum Expression {
Add(Box<Expression>, Box<Expression>),
Subtract(Box<Expression>, Box<Expression>),
Multiply(Box<Expression>, Box<Expression>),
Divide(Box<Expression>, Box<Expression>),
UnaryMinus(Box<Expression>),
Value(i64),
}
Поигрался с cbindgen, енумы он подхватывает автоматом, но не знаю, как действовать в случае с Box. Надо копировать этот результат функции в сишную структуру с голыми указателями?