#derive #box #allocator

boxext_derive

boxext::Zero特质定制的派生

4个版本

使用旧的Rust 2015

0.1.3 2018年6月26日
0.1.2 2018年5月8日
0.1.1 2018年4月19日
0.1.0 2018年4月19日

#box中排名第119


boxext中使用

Apache-2.0/MIT

4KB

boxext::Zero特质定制的派生

在您的类型上添加#[derive(Zero)]来自动派生boxext::Zero特质。只有聚合实现boxext::Zero特质类型的结构体可以使用此功能。

示例

extern crate boxext;
#[macro_use]
extern crate boxext_derive;
use boxext::BoxExt;

#[derive(Zero)]
struct Foo {
    a: usize,
    b: f64,
    c: [usize; 4],
}

// #[derive(Zero)]
//             ^ the trait `boxext::Zero` is not implemented for `std::boxed::Box<Foo>`
// struct Bar {
//    a: usize,
//    b: Box<Foo>,
// }

fn main() {
    // equivalent to Box::new(Foo { a: 0, b: 0.0, c: [0; 4] })
    let buf: Box<Foo> = Box::new_zeroed();
}

依赖项

~2MB
~47K SLoC