即便:
use std::fmt;
// Element types
const INTEGER: &'static str = "INTEGER";
const FLOAT: &'static str = "FLOAT";
const STRING: &'static str = "STRING";
#[derive(Debug)]
struct Element<T> {
mt_type: &'static str,
mt_value: T,
}
impl<T: fmt::Display> fmt::Display for Element<T> {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
write!(f, "Element({}, {})", self.mt_type, self.mt_value)
}
}
struct Parser {
text: String,
pos: usize,
current_element: Element, // Here there should be something to hold different Elements at different times...
}
我需要current_element
在不同时间在同一个结构中保留Element<i64>
,Element<f64>
和Element<String>
;我正在阅读Rust指南,似乎所有解决方案都指向使结构Parser
通用,但如果我这样做,那么在运行时我致力于使用不同的Parser
来表示不同的Element
{1}}输入。
解决这个问题的一个丑陋方法是将Element
中的所有值作为字符串,然后在需要时将它们转换为正确的类型,但是开销会很大......