Rust泛型迭代构造元组

问题描述

我正在研究一个解析库,该库通过声明步骤然后获取数据来将文本转换为所需数据。

是否可以迭代地创建一个包含所有变量的(平面)元组
(或者,如果您知道更好的解决方案,那也很好)

所需:

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 (将#修改为@)