rust excel

#[derive(Debug)]
enum Cell {
    s(String),
    i(i64),
    f(f64)
}
type Col = Vec<Cell>;

trait ColumnFactory {
    fn build(self) -> Cell;
}

impl ColumnFactory for &str {
    fn build(self) -> Cell {
        return Cell::s(self.to_string());
    }
}

impl ColumnFactory for i64 {
    fn build(self) -> Cell {
        return Cell::i(self);
    }
}

impl ColumnFactory for f64 {
    fn build(self) -> Cell {
        return Cell::f(self);
    }
}

macro_rules! cols {
    () => (
        vec![]
    );
    ($($x:expr),*) => (
        vec![$(ColumnFactory::build($x),)*]
    );
}

fn main(){
    let col: Col = cols!["hello world", 2, 3.4];
    println!("{:?}", col);
}

  

posted @ 2022-07-15 22:54  CrossPython  阅读(811)  评论(1编辑  收藏  举报