1 stable release
Uses old Rust 2015
1.0.0 | Jan 15, 2017 |
---|
#2841 in Rust patterns
351 downloads per month
Used in 19 crates
(2 directly)
3KB
63 lines
vec_box!
A small macro to box up elements in an array for use with trait objects.
Example
#[macro_use]
extern crate vec_box;
struct A {
x: u32
}
impl A {
fn new(x: u32) -> A {
A { x: x }
}
}
struct B {
x: u32,
y: u32
}
impl B {
fn new(x: u32) -> B {
B { x: x, y: x }
}
}
trait C {
fn get(&self) -> u32;
}
impl C for A {
fn get(&self) -> u32 {
self.x
}
}
impl C for B {
fn get(&self) -> u32 {
self.x + self.y
}
}
fn main() {
let v: Vec<Box<C>> = vec_box![
A::new(1),
B::new(1),
A::new(2)
];
assert_eq!(
v.iter().fold(0, |acc, ref x| acc + x.get()),
5
);
}