#vec #traits #object #box #macro

vec_box

一个宏,用于创建包含装箱元素的 vec,用于 trait 对象

1 个稳定版本

使用旧的 Rust 2015

1.0.0 2017 年 1 月 15 日

#2841Rust 模式

Download history 107/week @ 2024-03-16 135/week @ 2024-03-23 130/week @ 2024-03-30 64/week @ 2024-04-06 99/week @ 2024-04-13 82/week @ 2024-04-20 123/week @ 2024-04-27 88/week @ 2024-05-04 93/week @ 2024-05-11 83/week @ 2024-05-18 82/week @ 2024-05-25 90/week @ 2024-06-01 54/week @ 2024-06-08 75/week @ 2024-06-15 180/week @ 2024-06-22 25/week @ 2024-06-29

351 每月下载量
19 crate 中使用(直接使用 2 个)

ISC/MIT/Apache-2.0

3KB
63

vec_box!

一个小宏,用于将数组中的元素装箱,以便与 trait 对象一起使用。

示例

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

无运行时依赖