如何在不使后者成为通用的情况下在另一个结构中引用泛型结构?

时间:2017-10-20 17:42:34

标签: generics rust

即便:

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中的所有值作为字符串,然后在需要时将它们转换为正确的类型,但是开销会很大......

0 个答案:

没有答案