如何解决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 举报,一经查实,本站将立刻删除。