矢量存储Rust中混合类型的数据
发布时间:2020-12-15 04:36:45 所属栏目:Java 来源:网络整理
导读:参见英文答案 How do I create a heterogeneous collection of objects?????????????????????????????????????1个 在使用Shunting-yard算法将中缀表达式转换为后缀表达式的上下文中.我想使用向量来存储输出,它将存储运算符和数值类型数据. #[derive(Clone,Co
参见英文答案 >
How do I create a heterogeneous collection of objects?????????????????????????????????????1个
在使用Shunting-yard算法将中缀表达式转换为后缀表达式的上下文中.我想使用向量来存储输出,它将存储运算符和数值类型数据. #[derive(Clone,Copy,Debug,PartialEq)] pub enum Operator { Add,Sub,Mul,Div,} fn main() { let mut output: Vec<String> = Vec::new(); // create an output vector let a = 2; let b = Operator::Add; let c = 3; output.push(a.to_string()); output.push(b.to_string()); output.push(c.to_string()); } 上面的代码当然不能编译,因为没有为Operator定义to_string()方法.我看到两种解决方法: >定义to_string()方法 我认为第二个是首选,但我不知道创建引用向量是否会引入很多复杂性. 解决方法
没有必要使用参考文献;只需将数字和运算符直接存储在枚举中:
enum Thing { Op(Operator),Number(i32),} fn main() { let mut output: Vec<Thing> = Vec::new(); let a = 2; let b = Operator::Add; let c = 3; output.push(Thing::Number(a)); output.push(Thing::Op(b)); output.push(Thing::Number(c)); } 然后在拿出它们时匹配它们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |