#[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);
}