问题描述
我正在研究一个解析库,该库通过声明步骤然后获取数据来将文本转换为所需数据。
是否可以迭代地创建一个包含所有变量的(平面)元组?
(或者,如果您知道更好的解决方案,那也很好)
所需:
Parser::parse(my_string) // returns Parser<()>
.parse_int() // returns Parser<(i32)>
.parse_string() // returns Parser<(i32,&str)>
.parse_bool() // returns Parser<(i32,&str,bool)>
.finish(); // returns Result<(i32,bool),ParseError>
我能做的是通过将现有值包装在元组中来嵌套越来越深。 当前:
Parser::parse(my_string) // returns Parser<()>
.parse_int() // returns Parser<((),i32)>
.parse_string() // returns Parser<(((),i32),&str)>
.parse_bool() // returns Parser<((((),&str),bool)>
.finish(); // returns Result<((((),bool)),ParseError>
parse_int
函数的工作原理如下:
impl<D> Parser<D> {
pub fn parse_int(self) -> Parser<(D,i32)> {
let value = // Parse the int
return Parser {
...
data: (self.data,value)
}
}
}
当然,使用此嵌套元组会很可怕。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)